rule_chain.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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, vendorId 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 vendorId != "" {
  23. tx = tx.Where("vendor_id = ?", vendorId)
  24. }
  25. if root {
  26. tx = tx.Where("root = 1")
  27. }
  28. err = tx.Limit(ps).Offset((pi - 1) * ps).Find(&datas).Error
  29. err = tx.Model(&models.RuleChain{}).Count(&total).Error
  30. return
  31. }
  32. // Get 获取数据内容
  33. func (a *RuleChain) Get(vendorId string, recordId string) (data models.RuleChain, err error) {
  34. cache := getCache()
  35. key := fmt.Sprintf("ChanId:%s", recordId)
  36. if v, ok := cache.Get(key); ok {
  37. _d := v.(*models.RuleChain)
  38. data = *_d
  39. } else {
  40. err = a.db.Where("vendor_id = ? and record_id = ?", vendorId, recordId).First(&data).Error
  41. if err == nil {
  42. cache.Set(key, &data)
  43. }
  44. }
  45. return
  46. }
  47. // Create 创建
  48. func (a *RuleChain) Create(ruleChain *models.RuleChain) error {
  49. return a.db.Save(ruleChain).Error
  50. }
  51. // Delete delete
  52. func (a *RuleChain) Delete(ruleChain *models.RuleChain) error {
  53. cache := getCache()
  54. key := fmt.Sprintf("RuleChain:%d", ruleChain.ID)
  55. if _, ok := cache.Get(key); ok {
  56. cache.Delete(key)
  57. }
  58. return a.db.Unscoped().Delete(ruleChain).Error
  59. }
  60. // Update update
  61. func (a *RuleChain) Update(ruleChain *models.RuleChain) error {
  62. return a.db.Save(ruleChain).Error
  63. }
  64. // UpdateChainRoot 设置规则链
  65. func (a *RuleChain) UpdateChainRoot(id string, isRoot bool) (data models.RuleChain, err error) {
  66. err = a.db.Model(&data).Where("record_id = ?", id).
  67. Update("root", isRoot).Error
  68. return
  69. }