github.com/unionj-cloud/go-doudou/v2@v2.3.5/toolkit/gormgen/field/field.go (about) 1 package field 2 3 import ( 4 "database/sql/driver" 5 6 "gorm.io/gorm/clause" 7 ) 8 9 // ScanValuer interface for Field 10 type ScanValuer interface { 11 Scan(src interface{}) error // sql.Scanner 12 Value() (driver.Value, error) // driver.Valuer 13 } 14 15 // Field a standard field struct 16 type Field struct{ expr } 17 18 // Eq judge equal 19 func (field Field) Eq(value driver.Valuer) Expr { 20 return expr{e: clause.Eq{Column: field.RawExpr(), Value: value}} 21 } 22 23 // Neq judge not equal 24 func (field Field) Neq(value driver.Valuer) Expr { 25 return expr{e: clause.Neq{Column: field.RawExpr(), Value: value}} 26 } 27 28 // In ... 29 func (field Field) In(values ...driver.Valuer) Expr { 30 return expr{e: clause.IN{Column: field.RawExpr(), Values: field.toSlice(values...)}} 31 } 32 33 // Gt ... 34 func (field Field) Gt(value driver.Valuer) Expr { 35 return expr{e: clause.Gt{Column: field.RawExpr(), Value: value}} 36 } 37 38 // Gte ... 39 func (field Field) Gte(value driver.Valuer) Expr { 40 return expr{e: clause.Gte{Column: field.RawExpr(), Value: value}} 41 } 42 43 // Lt ... 44 func (field Field) Lt(value driver.Valuer) Expr { 45 return expr{e: clause.Lt{Column: field.RawExpr(), Value: value}} 46 } 47 48 // Lte ... 49 func (field Field) Lte(value driver.Valuer) Expr { 50 return expr{e: clause.Lte{Column: field.RawExpr(), Value: value}} 51 } 52 53 // Like ... 54 func (field Field) Like(value driver.Valuer) Expr { 55 return expr{e: clause.Like{Column: field.RawExpr(), Value: value}} 56 } 57 58 // Value ... 59 func (field Field) Value(value driver.Valuer) AssignExpr { 60 return field.value(value) 61 } 62 63 // Sum ... 64 func (field Field) Sum() Field { 65 return Field{field.sum()} 66 } 67 68 // IfNull ... 69 func (field Field) IfNull(value driver.Valuer) Expr { 70 return field.ifNull(value) 71 } 72 73 func (field Field) toSlice(values ...driver.Valuer) []interface{} { 74 slice := make([]interface{}, len(values)) 75 for i, v := range values { 76 slice[i] = v 77 } 78 return slice 79 }