package model import ( "fmt" "sparrow/pkg/models" "github.com/jinzhu/gorm" ) // SceneHis model type SceneHis struct { db *gorm.DB } // Init init SceneHis func (a *SceneHis) Init(db *gorm.DB) *SceneHis { a.db = db return a } // Query 分页查询场景执行历史 // sceneId: 按场景ID筛选 func (a *SceneHis) Query(pi, ps int, sceneId string) (datas []models.SceneHis, total int, err error) { tx := a.db.Where("1=1") if sceneId != "" { tx = tx.Where("scene_id = ?", sceneId) } tx = tx.Order("id desc") err = tx.Limit(ps).Offset((pi - 1) * ps).Find(&datas).Error err = tx.Model(&models.SceneHis{}).Count(&total).Error return } // GetBySceneId 根据场景ID获取历史记录列表 func (a *SceneHis) GetBySceneId(sceneId string) (datas []models.SceneHis, err error) { err = a.db.Where("scene_id = ?", sceneId).Order("id desc").Find(&datas).Error return } // Get 获取单条数据内容 func (a *SceneHis) Get(recordId string) (data models.SceneHis, err error) { cache := getCache() key := fmt.Sprintf("SceneHisId:%s", recordId) if v, ok := cache.Get(key); ok { _d := v.(*models.SceneHis) data = *_d } else { err = a.db.Where("record_id = ?", recordId).First(&data).Error if err == nil { cache.Set(key, &data) } } return } // Create 创建场景执行历史记录 func (a *SceneHis) Create(sceneHis *models.SceneHis) error { return a.db.Save(sceneHis).Error } // Delete delete func (a *SceneHis) Delete(sceneHis *models.SceneHis) error { cache := getCache() key := fmt.Sprintf("SceneHis:%d", sceneHis.ID) if _, ok := cache.Get(key); ok { cache.Delete(key) } return a.db.Delete(sceneHis).Error } // Update update func (a *SceneHis) Update(sceneHis *models.SceneHis) (data models.SceneHis, err error) { cache := getCache() key := fmt.Sprintf("SceneHis:%d", sceneHis.ID) if _, ok := cache.Get(key); ok { cache.Delete(key) } err = a.db.Model(&data).Update(sceneHis).Error return }