rule_chain.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package model
  2. import (
  3. "fmt"
  4. "sparrow/pkg/models"
  5. "github.com/jinzhu/gorm"
  6. )
  7. // RuleChain model
  8. type RuleChain struct {
  9. db *gorm.DB
  10. }
  11. // Init init RuleChain
  12. func (a *RuleChain) Init(db *gorm.DB) *RuleChain {
  13. a.db = db
  14. return a
  15. }
  16. // Query query all roles
  17. func (a *RuleChain) Query(pi, ps int, name string, root bool) (datas []models.RuleChain, total int, err error) {
  18. tx := a.db.Where("1=1")
  19. if name != "" {
  20. tx = tx.Where("name like ?", "%"+name+"%")
  21. }
  22. if root {
  23. tx = tx.Where("root = 1")
  24. }
  25. err = tx.Limit(ps).Offset((pi - 1) * ps).Find(&datas).Error
  26. err = tx.Model(&models.RuleChain{}).Count(&total).Error
  27. return
  28. }
  29. // Get 获取数据内容
  30. func (a *RuleChain) Get(vendorId string, recordId string) (data models.RuleChain, err error) {
  31. cache := getCache()
  32. key := fmt.Sprintf("ChanId:%s", recordId)
  33. if v, ok := cache.Get(key); ok {
  34. _d := v.(*models.RuleChain)
  35. data = *_d
  36. } else {
  37. err = a.db.Where("vendor_id = ? and record_id = ?", vendorId, recordId).First(&data).Error
  38. if err == nil {
  39. cache.Set(key, &data)
  40. }
  41. }
  42. return
  43. }
  44. // Create 创建
  45. func (a *RuleChain) Create(ruleChain *models.RuleChain) error {
  46. return a.db.Save(ruleChain).Error
  47. }
  48. // Delete delete
  49. func (a *RuleChain) Delete(ruleChain *models.RuleChain) error {
  50. cache := getCache()
  51. key := fmt.Sprintf("RuleChain:%d", ruleChain.ID)
  52. if _, ok := cache.Get(key); ok {
  53. cache.Delete(key)
  54. }
  55. return a.db.Delete(ruleChain).Error
  56. }
  57. // Update update
  58. func (a *RuleChain) Update(ruleChain *models.RuleChain) error {
  59. return a.db.Save(ruleChain).Error
  60. }
  61. // UpdateChainRoot 设置规则链
  62. func (a *RuleChain) UpdateChainRoot(id string, isRoot bool) (data models.RuleChain, err error) {
  63. err = a.db.Model(&data).Where("record_id = ?", id).
  64. Update("root", isRoot).Error
  65. return
  66. }