rule_node.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package model
  2. import (
  3. "fmt"
  4. "sparrow/pkg/models"
  5. "github.com/jinzhu/gorm"
  6. )
  7. // RuleNode model
  8. type RuleNode struct {
  9. db *gorm.DB
  10. }
  11. // Init init RuleNode
  12. func (a *RuleNode) Init(db *gorm.DB) *RuleNode {
  13. a.db = db
  14. return a
  15. }
  16. // Query query all roles
  17. func (a *RuleNode) Query(pi, ps int, chanId string) (datas []models.RuleNode, total int, err error) {
  18. tx := a.db.Where("1=1")
  19. if chanId != "" {
  20. tx = tx.Where("rule_chain_id = ?", chanId)
  21. }
  22. err = tx.Limit(ps).Offset((pi - 1) * ps).Find(&datas).Error
  23. err = tx.Model(&models.RuleNode{}).Count(&total).Error
  24. return
  25. }
  26. // Create 创建
  27. func (a *RuleNode) Create(ruleNode *models.RuleNode) error {
  28. return a.db.Save(ruleNode).Error
  29. }
  30. // Delete delete
  31. func (a *RuleNode) Delete(ruleNode *models.RuleNode) error {
  32. cache := getCache()
  33. key := fmt.Sprintf("RuleNode:%d", ruleNode.ID)
  34. if _, ok := cache.Get(key); ok {
  35. cache.Delete(key)
  36. }
  37. return a.db.Unscoped().Delete(ruleNode).Error
  38. }
  39. func (a *RuleNode) DeleteByChainId(ruleNode *models.RuleNode) error {
  40. a.db.Model(&models.RuleNode{}).Where("rule_chan_id = ?", ruleNode.RuleChainID)
  41. return a.db.Unscoped().Delete(ruleNode).Error
  42. }
  43. // Update update
  44. func (a *RuleNode) Update(ruleNode *models.RuleNode) error {
  45. return a.db.Save(ruleNode).Error
  46. }