go_dreamfactory/modules/comp_model.go
2024-01-26 22:20:59 +08:00

205 lines
6.7 KiB
Go

package modules
import (
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase"
"go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/lego/sys/redis"
"go_dreamfactory/sys/db"
"log"
"time"
"go.mongodb.org/mongo-driver/bson"
)
/*
基础组件 缓存组件 读写缓存数据
DB组件也封装进来
*/
type MCompModel struct {
cbase.ModuleCompBase
service core.IService
TableName string
Expired time.Duration //过期时间
Redis redis.ISys
DB mgo.ISys
DBModel *db.DBModel
}
// 组件初始化接口
func (this *MCompModel) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.ModuleCompBase.Init(service, module, comp, options)
var conn *db.DBConn
if conn, err = db.Local(); err != nil {
return
}
this.DB = conn.Mgo
this.Redis = conn.Redis
this.Expired = time.Hour
this.service = service
return
}
func (this *MCompModel) Start() (err error) {
err = this.ModuleCompBase.Start()
if this.TableName == "" {
log.Panicf("TableName is nil")
return
}
var conn *db.DBConn
if conn, err = db.Local(); err != nil {
return
}
this.DBModel = db.NewDBModel(this.service.GetTag(), this.TableName, conn)
return
}
func (this *MCompModel) InsertModelLogs(table string, uID string, target interface{}) (err error) {
return this.DBModel.InsertModelLogs(table, uID, target)
}
func (this *MCompModel) DeleteModelLogs(table string, uID string, where interface{}) (err error) {
return this.DBModel.DeleteModelLogs(table, uID, where)
}
func (this *MCompModel) UpdateModelLogs(table string, uID string, where bson.M, target interface{}) (err error) {
return this.DBModel.UpdateModelLogs(table, uID, where, target)
}
// 创建分布式锁
func (this *MCompModel) NewRedisMutex(key string, outtime int) (result *redis.RedisMutex, err error) {
return this.DBModel.NewRedisMutex(key, outtime)
}
// 添加新的数据
func (this *MCompModel) Add(uid string, data interface{}, opt ...db.DBOption) (err error) {
return this.DBModel.Add(uid, data)
}
// 添加新的数据
func (this *MCompModel) Adds(datas map[string]interface{}, opt ...db.DBOption) (err error) {
return this.DBModel.Adds(datas)
}
// 添加新的数据到列表
func (this *MCompModel) AddList(uid string, id string, data interface{}, opt ...db.DBOption) (err error) {
return this.DBModel.AddList(uid, id, data, opt...)
}
// 添加新的多个数据到列表 data map[string]type
func (this *MCompModel) AddLists(uid string, data interface{}, opt ...db.DBOption) (err error) {
return this.DBModel.AddLists(uid, data, opt...)
}
// 添加新的多个数据到队列中 data map[string]type
func (this *MCompModel) AddQueues(key string, uplimit int64, data interface{}) (outkey []string, err error) {
return this.DBModel.AddQueues(key, uplimit, data)
}
// 修改数据多个字段 uid 作为主键
func (this *MCompModel) Change(uid string, data map[string]interface{}, opt ...db.DBOption) (err error) {
return this.DBModel.Change(uid, data, opt...)
}
// 修改数据多个字段 id 作为主键
func (this *MCompModel) ChangeById(id string, data map[string]interface{}, opt ...db.DBOption) (err error) {
return this.DBModel.ChangeById(id, data, opt...)
}
// 修改数据多个字段 uid 作为主键
func (this *MCompModel) ChangeList(uid string, _id string, data map[string]interface{}, opt ...db.DBOption) (err error) {
return this.DBModel.ChangeList(uid, _id, data, opt...)
}
// 修改列表中多个数据 datas key是 _id value是 这个数据对象
func (this *MCompModel) ChangeLists(uid string, datas map[string]interface{}, opt ...db.DBOption) (err error) {
return this.DBModel.ChangeLists(uid, datas, opt...)
}
func (this *MCompModel) BatchChange(uids []string, update map[string]interface{}, opt ...db.DBOption) (err error) {
return this.DBModel.BatchChange(uids, update, opt...)
}
// 读取全部数据
func (this *MCompModel) Get(id string, data interface{}, opt ...db.DBOption) (err error) {
return this.DBModel.Get(id, data, opt...)
}
// 读取全部数据
func (this *MCompModel) GetByID(id string, data interface{}, opt ...db.DBOption) (err error) {
return this.DBModel.GetByID(id, data, opt...)
}
// 读取多个数据对象
func (this *MCompModel) Gets(ids []string, data interface{}, opt ...db.DBOption) (onfound []string, err error) {
return this.DBModel.Gets(ids, data, opt...)
}
// 读取多个数据对象 by 用户id
func (this *MCompModel) GetByUids(uids []string, data interface{}, opt ...db.DBOption) (onfound []string, err error) {
return this.DBModel.GetByUids(uids, data, opt...)
}
// 获取列表数据 注意 data 必须是 切片的指针 *[]type
func (this *MCompModel) GetList(uid string, data interface{}) (err error) {
return this.DBModel.GetList(uid, data)
}
// 获取列表数据 注意 data 必须是 切片的指针 *[]type
func (this *MCompModel) RandGetList(uid string, num int32, data interface{}) (err error) {
return this.DBModel.RandGetList(uid, num, data)
}
// 查询队列信息
func (this *MCompModel) GetQueues(key string, count int, data interface{}) (err error) {
return this.DBModel.GetQueues(key, count, data)
}
// 读取单个数据中 多个字段数据
func (this *MCompModel) GetFields(uid string, data interface{}, fields ...string) (err error) {
return this.DBModel.GetFields(uid, data, fields...)
}
// 读取List列表中单个数据中 多个字段数据
func (this *MCompModel) GetListFields(uid string, id string, data interface{}, fields ...string) (err error) {
return this.DBModel.GetListFields(uid, id, data, fields...)
}
// 读取列表数据中单个数据
func (this *MCompModel) GetListObj(uid string, id string, data interface{}) (err error) {
return this.DBModel.GetListObj(uid, id, data)
}
// 批量读取列表中多个数据
func (this *MCompModel) GetListObjs(uid string, ids []string, data interface{}) (err error) {
return this.DBModel.GetListObjs(uid, ids, data)
}
// 批量读取列表中多个数据 只在redis中寻找
func (this *MCompModel) GetRedisListObjs(uid string, ids []string, data interface{}) (foundids []string, err error) {
return this.DBModel.GetRedisListObjs(uid, ids, data)
}
// 删除目标数据
func (this *MCompModel) Del(id string, opt ...db.DBOption) (err error) {
return this.DBModel.Del(id, opt...)
}
// 删除用户数据
func (this *MCompModel) DelByUId(uid string, opt ...db.DBOption) (err error) {
return this.DBModel.DelByUId(uid, opt...)
}
// 删除多条数据
func (this *MCompModel) DelListlds(uid string, ids []string, opt ...db.DBOption) (err error) {
return this.DBModel.DelListlds(uid, ids, opt...)
}
// 批量删除数据
func (this *MCompModel) BatchDelLists(uid string) (err error) {
return this.DBModel.BatchDelLists(uid)
}
func (this *MCompModel) RedisDels(uids []string) (err error) {
return this.DBModel.RedisDels(uids)
}