109 lines
2.9 KiB
Plaintext
109 lines
2.9 KiB
Plaintext
#{moduleName}_proto "service/api/proto/#{moduleName}/proto"
|
|
DB#{EntityName} = "#{moduleName}"
|
|
COL#{EntityName} = "#{moduleName}"
|
|
COL#{EntityName}IdSeq = "#{moduleName}_id_seq"
|
|
|
|
// #{EntityCNName}表
|
|
func (m *Mongo) getCol#{EntityName}() *qmgo.Collection {
|
|
return m.clientMix.Database(DB#{EntityName}).Collection(COL#{EntityName})
|
|
}
|
|
|
|
// #{EntityCNName}IdSeq序列表
|
|
func (m *Mongo) getCol#{EntityCNName}IdSeq() *qmgo.Collection {
|
|
return m.clientMix.Database(DB#{EntityName}).Collection(COL#{EntityName}IdSeq)
|
|
}
|
|
|
|
// #{EntityCNName}相关
|
|
func (m *Mongo) Create#{EntityName}(ctx *gin.Context, #{moduleName} *dbstruct.#{EntityName}) error {
|
|
col := m.getCol#{EntityName}()
|
|
_, err := col.InsertOne(ctx, #{moduleName})
|
|
return err
|
|
}
|
|
|
|
func (m *Mongo) Update#{EntityName}(ctx *gin.Context, #{moduleName} *dbstruct.#{EntityName}) error {
|
|
col := m.getCol#{EntityName}()
|
|
set := util.EntityToM(#{moduleName})
|
|
set["ut"] = time.Now().Unix()
|
|
up := qmgo.M{
|
|
"$set": set,
|
|
}
|
|
err := col.UpdateId(ctx, #{moduleName}.Id, up)
|
|
return err
|
|
}
|
|
|
|
func (m *Mongo) Delete#{EntityName}(ctx *gin.Context, id int64) error {
|
|
col := m.getCol#{EntityName}()
|
|
update := qmgo.M{
|
|
"$set": qmgo.M{
|
|
"del_flag": 1,
|
|
},
|
|
}
|
|
err := col.UpdateId(ctx, id, update)
|
|
return err
|
|
}
|
|
|
|
func (m *Mongo) Get#{EntityName}List(ctx *gin.Context, req *#{moduleName}_proto.OpListReq) ([]*dbstruct.#{EntityName}, error) {
|
|
list := make([]*dbstruct.#{EntityName}, 0)
|
|
col := m.getCol#{EntityName}()
|
|
query := qmgo.M{
|
|
"del_flag": 0,
|
|
}
|
|
err := col.Find(ctx, query).Sort("-ct").Skip(int64(req.Offset)).Limit(int64(req.Limit)).All(&list)
|
|
if err == qmgo.ErrNoSuchDocuments {
|
|
err = nil
|
|
return list, err
|
|
}
|
|
return list, err
|
|
}
|
|
|
|
func (m *Mongo) Get#{EntityName}ById(ctx *gin.Context, id int64) (*dbstruct.#{EntityName}, error) {
|
|
one := &dbstruct.#{EntityName}{}
|
|
col := m.getCol#{EntityName}()
|
|
query := qmgo.M{
|
|
"_id": id,
|
|
"del_flag": 0,
|
|
}
|
|
err := col.Find(ctx, query).One(one)
|
|
if err == qmgo.ErrNoSuchDocuments {
|
|
err = nil
|
|
return nil, err
|
|
}
|
|
return one, err
|
|
}
|
|
|
|
func (m *Mongo) Get#{EntityName}ListByIds(ctx *gin.Context, ids []int64) ([]*dbstruct.#{EntityName}, error) {
|
|
list := make([]*dbstruct.#{EntityName}, 0)
|
|
col := m.getCol#{EntityName}()
|
|
query := qmgo.M{
|
|
"_id": qmgo.M{
|
|
"$in": ids,
|
|
},
|
|
"del_flag": 0,
|
|
}
|
|
err := col.Find(ctx, query).Sort("-ct").All(&list)
|
|
if err == qmgo.ErrNoSuchDocuments {
|
|
err = nil
|
|
return list, err
|
|
}
|
|
return list, err
|
|
}
|
|
|
|
|
|
// #{moduleName}发号器
|
|
func (m *Mongo) GetAndUpdate#{EntityName}IdSeq(ctx *gin.Context) (idSeq *dbstruct.#{EntityName}IdSeq, err error) {
|
|
col := m.getCol#{EntityName}IdSeq()
|
|
|
|
change := qmgo.Change{
|
|
Update: qmgo.M{"$inc": qmgo.M{"seq": 1}},
|
|
Upsert: true,
|
|
ReturnNew: false,
|
|
}
|
|
|
|
idSeqInstance := dbstruct.#{EntityName}IdSeq{}
|
|
if err = col.Find(ctx, qmgo.M{"_id": "#{moduleName}_seq_id"}).Apply(change, &idSeqInstance); err != nil {
|
|
logger.Error("change error : %v", err)
|
|
return
|
|
}
|
|
|
|
return &idSeqInstance, err
|
|
} |