sql.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package zapx
  2. // 排序方式
  3. const (
  4. OrderAsc = "asc"
  5. OrderDesc = "desc"
  6. )
  7. // 操作符
  8. const (
  9. OpLike = "like" // like %s%
  10. OpIn = "in" // in
  11. OpNin = "nin" // not in
  12. OpEq = "eq" // =
  13. OpNeq = "neq" // <>
  14. OpGt = "gt" // >
  15. OpGte = "gte" // >=
  16. OpLt = "lt" // <
  17. OpLte = "lte" // <=
  18. )
  19. // StringFilter 字符串类型的扩展参数
  20. type StringFilter struct {
  21. Key string `json:"key"` // 键。必填。
  22. Op string `json:"op"` // 操作符。必填。
  23. Value string `json:"value"` // 值。必填。但可以为空。
  24. }
  25. // Validate 校验参数
  26. func (v StringFilter) Validate() error {
  27. if v.Key == "" {
  28. return ValidateError("扩展参数键不能为空")
  29. }
  30. if v.Op != OpEq && v.Op != OpNeq && v.Op != OpLike {
  31. return ValidateError("字符串型扩展参数操作符错误")
  32. }
  33. return nil
  34. }
  35. // FloatFilter 浮点数类型的扩展参数
  36. type FloatFilter struct {
  37. Key string `json:"key"` // 键。必填。
  38. Op string `json:"op"` // 操作符。必填。
  39. Value float64 `json:"value"` // 值。必填。
  40. }
  41. // Validate 校验参数
  42. func (v FloatFilter) Validate() error {
  43. if v.Key == "" {
  44. return ValidateError("扩展参数键不能为空")
  45. }
  46. if v.Op != OpEq && v.Op != OpNeq && v.Op != OpGt && v.Op != OpGte && v.Op != OpLt && v.Op != OpLte {
  47. return ValidateError("浮点数型扩展参数操作符错误")
  48. }
  49. return nil
  50. }
  51. // IntFilter 整数类型的扩展参数
  52. type IntFilter struct {
  53. Key string `json:"key"` // 键。必填。
  54. Op string `json:"op"` // 操作符。必填。
  55. Value int32 `json:"value"` // 值。必填。
  56. }
  57. // Validate 校验参数
  58. func (v IntFilter) Validate() error {
  59. if v.Key == "" {
  60. return ValidateError("扩展参数键不能为空")
  61. }
  62. if v.Op != OpEq && v.Op != OpNeq && v.Op != OpGt && v.Op != OpGte && v.Op != OpLt && v.Op != OpLte {
  63. return ValidateError("整数型扩展参数操作符错误")
  64. }
  65. return nil
  66. }
  67. // BoolFilter 布尔类型的扩展参数
  68. type BoolFilter struct {
  69. Key string `json:"key"` // 键。必填。
  70. Op string `json:"op"` // 操作符。必填。
  71. Value bool `json:"value"` // 值。必填。
  72. }
  73. // Validate 校验参数
  74. func (v BoolFilter) Validate() error {
  75. if v.Key == "" {
  76. return ValidateError("扩展参数键不能为空")
  77. }
  78. if v.Op != OpEq && v.Op != OpNeq {
  79. return ValidateError("布尔型扩展参数操作符错误")
  80. }
  81. return nil
  82. }
  83. // StringFieldFilter 字段过滤条件,适用于指定了字段的情况。
  84. type StringFieldFilter struct {
  85. Op string `json:"op"` // 操作符
  86. Value string `json:"value"` // 参数。必填但可为空串。
  87. }
  88. // Validate 校验参数
  89. func (v StringFieldFilter) Validate() error {
  90. if v.Op != OpEq && v.Op != OpNeq && v.Op != OpLike {
  91. return ValidateError("参数操作符错误")
  92. }
  93. return nil
  94. }
  95. // StringInFieldFilter 字段过滤条件,适用于指定了字段的情况。
  96. type StringInFieldFilter struct {
  97. Op string `json:"op"` // 操作符
  98. Value []string `json:"value"` // 参数
  99. }
  100. // Validate 校验参数
  101. func (v StringInFieldFilter) Validate() error {
  102. if v.Op != OpIn && v.Op != OpNin {
  103. return ValidateError("参数操作符错误")
  104. }
  105. return nil
  106. }