condition.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package sql_tpl
  2. type Conditions struct {
  3. Conditions []string
  4. err error
  5. }
  6. func NewConditions() *Conditions {
  7. return &Conditions{
  8. Conditions: make([]string, 0),
  9. }
  10. }
  11. func (conditions *Conditions) AddCondition(condition string) *Conditions {
  12. conditions.Conditions = append(conditions.Conditions, condition)
  13. return conditions
  14. }
  15. func (conditions *Conditions) Equal(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions {
  16. if conditions.err != nil {
  17. return conditions
  18. }
  19. parsedValue, err := parseValue(value, opts...)
  20. if err != nil {
  21. conditions.err = err
  22. return conditions
  23. }
  24. conditions.Conditions = append(conditions.Conditions, columnName+" = "+parsedValue)
  25. return conditions
  26. }
  27. func (conditions *Conditions) Like(columnName string, value string, opts ...AfterParsedStrValueOption) *Conditions {
  28. if conditions.err != nil {
  29. return conditions
  30. }
  31. parsedValue, err := parseValue(value, opts...)
  32. if err != nil {
  33. conditions.err = err
  34. return conditions
  35. }
  36. conditions.Conditions = append(conditions.Conditions, columnName+" LIKE "+parsedValue)
  37. return conditions
  38. }
  39. func (conditions *Conditions) In(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions {
  40. if conditions.err != nil {
  41. return conditions
  42. }
  43. parsedValue, err := parseSliceValues(value, opts...)
  44. if err != nil {
  45. conditions.err = err
  46. return conditions
  47. }
  48. conditions.Conditions = append(conditions.Conditions, columnName+" IN "+parsedValue)
  49. return conditions
  50. }
  51. func (conditions *Conditions) NotIn(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions {
  52. if conditions.err != nil {
  53. return conditions
  54. }
  55. parsedValue, err := parseSliceValues(value, opts...)
  56. if err != nil {
  57. conditions.err = err
  58. return conditions
  59. }
  60. conditions.Conditions = append(conditions.Conditions, columnName+" NOT IN "+parsedValue)
  61. return conditions
  62. }
  63. func (conditions *Conditions) Not(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions {
  64. if conditions.err != nil {
  65. return conditions
  66. }
  67. parsedValue, err := parseValue(value, opts...)
  68. if err != nil {
  69. conditions.err = err
  70. return conditions
  71. }
  72. conditions.Conditions = append(conditions.Conditions, columnName+" != "+parsedValue)
  73. return conditions
  74. }
  75. func (conditions *Conditions) LessThan(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions {
  76. if conditions.err != nil {
  77. return conditions
  78. }
  79. parsedValue, err := parseValue(value, opts...)
  80. if err != nil {
  81. conditions.err = err
  82. return conditions
  83. }
  84. conditions.Conditions = append(conditions.Conditions, columnName+" < "+parsedValue)
  85. return conditions
  86. }
  87. func (conditions *Conditions) LessThanAndEqual(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions {
  88. if conditions.err != nil {
  89. return conditions
  90. }
  91. parsedValue, err := parseValue(value, opts...)
  92. if err != nil {
  93. conditions.err = err
  94. return conditions
  95. }
  96. conditions.Conditions = append(conditions.Conditions, columnName+" <= "+parsedValue)
  97. return conditions
  98. }
  99. func (conditions *Conditions) GreaterThan(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions {
  100. if conditions.err != nil {
  101. return conditions
  102. }
  103. parsedValue, err := parseValue(value, opts...)
  104. if err != nil {
  105. conditions.err = err
  106. return conditions
  107. }
  108. conditions.Conditions = append(conditions.Conditions, columnName+" > "+parsedValue)
  109. return conditions
  110. }
  111. func (conditions *Conditions) GreaterThanAndEqual(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions {
  112. if conditions.err != nil {
  113. return conditions
  114. }
  115. parsedValue, err := parseValue(value, opts...)
  116. if err != nil {
  117. conditions.err = err
  118. return conditions
  119. }
  120. conditions.Conditions = append(conditions.Conditions, columnName+" >= "+parsedValue)
  121. return conditions
  122. }