diff options
Diffstat (limited to 'db/mongodb_store.go')
-rw-r--r-- | db/mongodb_store.go | 72 |
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 @@ | |||
1 | package db | ||
2 | |||
3 | import ( | ||
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 | |||
12 | type MongoDbBasicModel interface { | ||
13 | MarkDeleted(time.Time) | ||
14 | RecordId() string | ||
15 | } | ||
16 | |||
17 | type MongoDbBasicStore[T MongoDbBasicModel] struct { | ||
18 | Db *mongodb.Mongo | ||
19 | CollectionName string | ||
20 | } | ||
21 | |||
22 | func (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 | |||
35 | func (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 | |||
45 | func (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 | |||
58 | func (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 | |||
65 | func (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 | } | ||