123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package db_operations
- import "gorm.io/gorm"
- type Conditions struct {
- queries []string
- queryArgs [][]any
- }
- func NewConditions() *Conditions {
- return &Conditions{
- queries: make([]string, 0),
- queryArgs: make([][]any, 0),
- }
- }
- func (clause *Conditions) Equal(columnName string, value any) *Conditions {
- clause.queries = append(clause.queries, columnName+" = ?")
- clause.queryArgs = append(clause.queryArgs, []any{value})
- return clause
- }
- func (clause *Conditions) Like(columnName string, value any) *Conditions {
- clause.queries = append(clause.queries, columnName+" LIKE ?")
- clause.queryArgs = append(clause.queryArgs, []any{value})
- return clause
- }
- func (clause *Conditions) In(columnName string, value any) *Conditions {
- clause.queries = append(clause.queries, columnName+" IN ?")
- clause.queryArgs = append(clause.queryArgs, []any{value})
- return clause
- }
- func (clause *Conditions) NotIn(columnName string, value any) *Conditions {
- clause.queries = append(clause.queries, columnName+" NOT IN ?")
- clause.queryArgs = append(clause.queryArgs, []any{value})
- return clause
- }
- func (clause *Conditions) Not(columnName string, value any) *Conditions {
- clause.queries = append(clause.queries, columnName+" != ?")
- clause.queryArgs = append(clause.queryArgs, []any{value})
- return clause
- }
- func (clause *Conditions) LessThan(columnName string, value any) *Conditions {
- clause.queries = append(clause.queries, columnName+" < ?")
- clause.queryArgs = append(clause.queryArgs, []any{value})
- return clause
- }
- func (clause *Conditions) LessThanAndEqual(columnName string, value any) *Conditions {
- clause.queries = append(clause.queries, columnName+" <= ?")
- clause.queryArgs = append(clause.queryArgs, []any{value})
- return clause
- }
- func (clause *Conditions) GreaterThan(columnName string, value any) *Conditions {
- clause.queries = append(clause.queries, columnName+" > ?")
- clause.queryArgs = append(clause.queryArgs, []any{value})
- return clause
- }
- func (clause *Conditions) GreaterThanAndEqual(columnName string, value any) *Conditions {
- clause.queries = append(clause.queries, columnName+" >= ?")
- clause.queryArgs = append(clause.queryArgs, []any{value})
- return clause
- }
- func (clause *Conditions) where(db *gorm.DB) *gorm.DB {
- for i, query := range clause.queries {
- db = db.Where(query, clause.queryArgs[i]...)
- }
- return db
- }
- func (clause *Conditions) or(db *gorm.DB) *gorm.DB {
- for i, query := range clause.queries {
- db = db.Or(query, clause.queryArgs[i]...)
- }
- return db
- }
- func (clause *Conditions) having(db *gorm.DB) *gorm.DB {
- for i, query := range clause.queries {
- db = db.Having(query, clause.queryArgs[i]...)
- }
- return db
- }
|