/
news_model_gen.go
77 lines (65 loc) · 1.91 KB
/
news_model_gen.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// Code generated by goctl. DO NOT EDIT.
package mapper
import (
"context"
"github.com/xh-polaris/meowchat-system/biz/infrastructure/data/db"
"time"
"github.com/zeromicro/go-zero/core/stores/monc"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
)
var prefixNewsCacheKey = "cache:news:"
type newsModel interface {
Insert(ctx context.Context, data *db.News) error
FindOne(ctx context.Context, id string) (*db.News, error)
Update(ctx context.Context, data *db.News) error
Delete(ctx context.Context, id string) error
}
type defaultNewsModel struct {
conn *monc.Model
}
func newDefaultNewsModel(conn *monc.Model) *defaultNewsModel {
return &defaultNewsModel{conn: conn}
}
func (m *defaultNewsModel) Insert(ctx context.Context, data *db.News) error {
if data.ID.IsZero() {
data.ID = primitive.NewObjectID()
data.CreateAt = time.Now()
data.UpdateAt = time.Now()
}
key := prefixNewsCacheKey + data.ID.Hex()
_, err := m.conn.InsertOne(ctx, key, data)
return err
}
func (m *defaultNewsModel) FindOne(ctx context.Context, id string) (*db.News, error) {
oid, err := primitive.ObjectIDFromHex(id)
if err != nil {
return nil, ErrInvalidObjectId
}
var data db.News
key := prefixNewsCacheKey + id
err = m.conn.FindOne(ctx, key, &data, bson.M{"_id": oid})
switch err {
case nil:
return &data, nil
case monc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultNewsModel) Update(ctx context.Context, data *db.News) error {
data.UpdateAt = time.Now()
key := prefixNewsCacheKey + data.ID.Hex()
_, err := m.conn.UpdateOne(ctx, key, bson.M{"_id": data.ID}, bson.M{"$set": data})
return err
}
func (m *defaultNewsModel) Delete(ctx context.Context, id string) error {
oid, err := primitive.ObjectIDFromHex(id)
if err != nil {
return ErrInvalidObjectId
}
key := prefixNewsCacheKey + id
_, err = m.conn.DeleteOne(ctx, key, bson.M{"_id": oid})
return err
}