package sql_tpl type Conditions struct { Conditions []string err error } func NewConditions() *Conditions { return &Conditions{ Conditions: make([]string, 0), } } func (conditions *Conditions) AddCondition(condition string) *Conditions { conditions.Conditions = append(conditions.Conditions, condition) return conditions } func (conditions *Conditions) Equal(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions { if conditions.err != nil { return conditions } parsedValue, err := parseValue(value, opts...) if err != nil { conditions.err = err return conditions } conditions.Conditions = append(conditions.Conditions, columnName+" = "+parsedValue) return conditions } func (conditions *Conditions) Like(columnName string, value string, opts ...AfterParsedStrValueOption) *Conditions { if conditions.err != nil { return conditions } parsedValue, err := parseValue(value, opts...) if err != nil { conditions.err = err return conditions } conditions.Conditions = append(conditions.Conditions, columnName+" LIKE "+parsedValue) return conditions } func (conditions *Conditions) In(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions { if conditions.err != nil { return conditions } parsedValue, err := parseSliceValues(value, opts...) if err != nil { conditions.err = err return conditions } conditions.Conditions = append(conditions.Conditions, columnName+" IN "+parsedValue) return conditions } func (conditions *Conditions) NotIn(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions { if conditions.err != nil { return conditions } parsedValue, err := parseSliceValues(value, opts...) if err != nil { conditions.err = err return conditions } conditions.Conditions = append(conditions.Conditions, columnName+" NOT IN "+parsedValue) return conditions } func (conditions *Conditions) Not(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions { if conditions.err != nil { return conditions } parsedValue, err := parseValue(value, opts...) if err != nil { conditions.err = err return conditions } conditions.Conditions = append(conditions.Conditions, columnName+" != "+parsedValue) return conditions } func (conditions *Conditions) LessThan(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions { if conditions.err != nil { return conditions } parsedValue, err := parseValue(value, opts...) if err != nil { conditions.err = err return conditions } conditions.Conditions = append(conditions.Conditions, columnName+" < "+parsedValue) return conditions } func (conditions *Conditions) LessThanAndEqual(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions { if conditions.err != nil { return conditions } parsedValue, err := parseValue(value, opts...) if err != nil { conditions.err = err return conditions } conditions.Conditions = append(conditions.Conditions, columnName+" <= "+parsedValue) return conditions } func (conditions *Conditions) GreaterThan(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions { if conditions.err != nil { return conditions } parsedValue, err := parseValue(value, opts...) if err != nil { conditions.err = err return conditions } conditions.Conditions = append(conditions.Conditions, columnName+" > "+parsedValue) return conditions } func (conditions *Conditions) GreaterThanAndEqual(columnName string, value any, opts ...AfterParsedStrValueOption) *Conditions { if conditions.err != nil { return conditions } parsedValue, err := parseValue(value, opts...) if err != nil { conditions.err = err return conditions } conditions.Conditions = append(conditions.Conditions, columnName+" >= "+parsedValue) return conditions }