package cache import ( "context" "joybuywork/internal/app" "joybuywork/internal/plugins/jsonm" "joybuywork/internal/repository/dao" "joybuywork/internal/repository/dbcheck" "joybuywork/internal/repository/model" "fmt" ) type LibraryQaGroup struct { Cache } func NewLibraryQaGroup(ctx context.Context) *LibraryQaGroup { c := new(LibraryQaGroup) c.init(ctx, &model.LibraryQaGroup{}) return c } // FindById id 获取数据 func (c LibraryQaGroup) FindById(id int64) (*model.LibraryQaGroup, error) { data, err := c.get(c.idKey(id), func() ([]byte, error) { m := dao.Q.LibraryQaGroup data, err := m.WithContext(c.ctx).Where(m.ID.Eq(id)).Take() if err = dbcheck.DbError(err); err != nil { return nil, err } return jsonm.MarshalCkZero(data) }) if err != nil { return nil, err } var project *model.LibraryQaGroup err = jsonm.Unmarshal(data, &project) return project, err } // FindByHashId hash_id获取换成数据 func (c LibraryQaGroup) FindByHashId(hashId string) (*model.LibraryQaGroup, error) { data, err := c.get(c.hashIdKey(hashId), func() ([]byte, error) { m := dao.Q.LibraryQaGroup data, err := m.WithContext(c.ctx).Where(m.HashID.Eq(hashId)).Take() if err = dbcheck.DbError(err); err != nil { return nil, err } return jsonm.MarshalCkZero(data) }) if err != nil { return nil, err } var project *model.LibraryQaGroup err = jsonm.Unmarshal(data, &project) return project, err } func (c LibraryQaGroup) idKey(id int64) string { return fmt.Sprintf("%s:%d", c.Prefix(), id) } func (c LibraryQaGroup) hashIdKey(hashId string) string { return fmt.Sprintf("%s:hash_id:%s", c.Prefix(), hashId) } // Clear 清理缓存 func (c LibraryQaGroup) Clear(projects ...*model.LibraryQaGroup) error { var key []string for _, v := range projects { key = append(key, c.idKey(v.ID), c.hashIdKey(v.HashID)) } if len(key) > 0 { return app.Redis.Cache.Del(c.ctx, key...).Err() } return nil }