summaryrefslogtreecommitdiff
path: root/db/mongodb_store.go
diff options
context:
space:
mode:
Diffstat (limited to 'db/mongodb_store.go')
-rw-r--r--db/mongodb_store.go72
1 files changed, 0 insertions, 72 deletions
diff --git a/db/mongodb_store.go b/db/mongodb_store.go
deleted file mode 100644
index 2822de4..0000000
--- a/db/mongodb_store.go
+++ /dev/null
@@ -1,72 +0,0 @@
1package db
2
3import (
4 "context"
5 "time"
6
7 "code.crute.us/mcrute/golib/db/mongodb/v2"
8 "go.mongodb.org/mongo-driver/bson"
9 "go.mongodb.org/mongo-driver/bson/primitive"
10)
11
12type MongoDbBasicModel interface {
13 MarkDeleted(time.Time)
14 RecordId() string
15}
16
17type MongoDbBasicStore[T MongoDbBasicModel] struct {
18 Db *mongodb.Mongo
19 CollectionName string
20}
21
22func (s *MongoDbBasicStore[T]) List(ctx context.Context) ([]T, error) {
23 out := []T{}
24
25 filter := bson.M{}
26 filter["deleted"] = primitive.Null{}
27
28 if err := s.Db.FindAllByFilter(ctx, s.CollectionName, filter, &out); err != nil {
29 return nil, err
30 }
31
32 return out, nil
33}
34
35func (s *MongoDbBasicStore[T]) ListAll(ctx context.Context) ([]T, error) {
36 out := []T{}
37
38 if err := s.Db.FindAllByFilter(ctx, s.CollectionName, bson.M{}, &out); err != nil {
39 return nil, err
40 }
41
42 return out, nil
43}
44
45func (s *MongoDbBasicStore[T]) Get(ctx context.Context, name string) (T, error) {
46 var out T
47
48 filter := bson.M{}
49 filter["_id"] = name
50
51 if err := s.Db.FindOneByFilter(ctx, s.CollectionName, filter, &out); err != nil {
52 return out, err
53 }
54
55 return out, nil
56}
57
58func (s *MongoDbBasicStore[T]) Upsert(ctx context.Context, m T) error {
59 if err := s.Db.ReplaceOneById(ctx, s.CollectionName, m.RecordId(), m); err != nil {
60 return err
61 }
62 return nil
63}
64
65func (s *MongoDbBasicStore[T]) Delete(ctx context.Context, m T) error {
66 k, err := s.Get(ctx, m.RecordId())
67 if err != nil {
68 return err
69 }
70 k.MarkDeleted(time.Now())
71 return s.Upsert(ctx, k)
72}