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  }