Skip to content

Commit

Permalink
feat(field): method accept driver.Valuer
Browse files Browse the repository at this point in the history
  • Loading branch information
tr1v3r committed Jan 25, 2022
1 parent 1829f84 commit b4cd35a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 16 deletions.
10 changes: 5 additions & 5 deletions field/export_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ func (p *password) Scan(src interface{}) error {
*p = password(fmt.Sprintf("this is password {%q}", src))
return nil
}
func (p *password) Value() (driver.Value, error) {
return strings.TrimPrefix(strings.TrimSuffix(string(*p), "}"), "this is password {"), nil
func (p password) Value() (driver.Value, error) {
return strings.TrimPrefix(strings.TrimSuffix(string(p), "}"), "this is password {"), nil
}

func TestExpr_Build(t *testing.T) {
timeData, _ := time.Parse("2006-01-02 15:04:05", "2021-06-29 15:11:49")
p := password("i am password")
const p = password("i am password")

testcases := []struct {
Expr field.Expr
Expand All @@ -33,8 +33,8 @@ func TestExpr_Build(t *testing.T) {
}{
// ======================== generic ========================
{
Expr: field.NewField("user", "password").Eq(&p),
ExpectedVars: []interface{}{&p},
Expr: field.NewField("user", "password").Eq(p),
ExpectedVars: []interface{}{p},
Result: "`user`.`password` = ?",
},
{
Expand Down
22 changes: 11 additions & 11 deletions field/field.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,51 +14,51 @@ type ScanValuer interface {
// Field a standard field struct
type Field struct{ expr }

func (field Field) Eq(value ScanValuer) Expr {
func (field Field) Eq(value driver.Valuer) Expr {
return expr{e: clause.Eq{Column: field.RawExpr(), Value: value}}
}

func (field Field) Neq(value ScanValuer) Expr {
func (field Field) Neq(value driver.Valuer) Expr {
return expr{e: clause.Neq{Column: field.RawExpr(), Value: value}}
}

func (field Field) In(values ...ScanValuer) Expr {
func (field Field) In(values ...driver.Valuer) Expr {
return expr{e: clause.IN{Column: field.RawExpr(), Values: field.toSlice(values...)}}
}

func (field Field) Gt(value ScanValuer) Expr {
func (field Field) Gt(value driver.Valuer) Expr {
return expr{e: clause.Gt{Column: field.RawExpr(), Value: value}}
}

func (field Field) Gte(value ScanValuer) Expr {
func (field Field) Gte(value driver.Valuer) Expr {
return expr{e: clause.Gte{Column: field.RawExpr(), Value: value}}
}

func (field Field) Lt(value ScanValuer) Expr {
func (field Field) Lt(value driver.Valuer) Expr {
return expr{e: clause.Lt{Column: field.RawExpr(), Value: value}}
}

func (field Field) Lte(value ScanValuer) Expr {
func (field Field) Lte(value driver.Valuer) Expr {
return expr{e: clause.Lte{Column: field.RawExpr(), Value: value}}
}

func (field Field) Like(value ScanValuer) Expr {
func (field Field) Like(value driver.Valuer) Expr {
return expr{e: clause.Like{Column: field.RawExpr(), Value: value}}
}

func (field Field) Value(value ScanValuer) AssignExpr {
func (field Field) Value(value driver.Valuer) AssignExpr {
return field.value(value)
}

func (field Field) Sum() Field {
return Field{field.sum()}
}

func (field Field) IfNull(value ScanValuer) Expr {
func (field Field) IfNull(value driver.Valuer) Expr {
return field.ifNull(value)
}

func (field Field) toSlice(values ...ScanValuer) []interface{} {
func (field Field) toSlice(values ...driver.Valuer) []interface{} {
slice := make([]interface{}, len(values))
for i, v := range values {
slice[i] = v
Expand Down

0 comments on commit b4cd35a

Please sign in to comment.