service/codecreate/template/mongo.txt

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
}