|
|
@@ -0,0 +1,93 @@
|
|
|
+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
|
|
|
+}
|