Skip to content

Commit cd42e83

Browse files
committed
bug fixed and update interface changed
1 parent 4b36d79 commit cd42e83

File tree

6 files changed

+40
-26
lines changed

6 files changed

+40
-26
lines changed

builder.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ type Builder struct {
2323
selects []string
2424
joins []join
2525
inserts Eq
26-
updates []Set
26+
updates []Eq
2727
}
2828

2929
func Select(cols ...string) *Builder {
@@ -36,7 +36,7 @@ func Insert(eq Eq) *Builder {
3636
return builder.Insert(eq)
3737
}
3838

39-
func Update(updates ...Set) *Builder {
39+
func Update(updates ...Eq) *Builder {
4040
builder := &Builder{cond: NewCond()}
4141
return builder.Update(updates...)
4242
}
@@ -114,7 +114,7 @@ func (b *Builder) Insert(eq Eq) *Builder {
114114
return b
115115
}
116116

117-
func (b *Builder) Update(updates ...Set) *Builder {
117+
func (b *Builder) Update(updates ...Eq) *Builder {
118118
b.updates = updates
119119
b.optype = updateType
120120
return b

builder_insert.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,7 @@ func (b *Builder) insertWriteTo(w Writer) error {
5454
return err
5555
}
5656

57+
w.Append(args...)
58+
5759
return nil
5860
}

builder_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,20 @@ func TestBuilderUpdate(t *testing.T) {
149149
return
150150
}
151151
fmt.Println(sql, args)
152+
153+
sql, args, err = Update(Eq{"a": 2, "b": Incr(1)}).From("table2").Where(Eq{"a": 1}).ToSQL()
154+
if err != nil {
155+
t.Error(err)
156+
return
157+
}
158+
fmt.Println(sql, args)
159+
160+
sql, args, err = Update(Eq{"a": 2, "b": Incr(1), "c": Decr(1), "d": Expr("select count(*) from table2")}).From("table2").Where(Eq{"a": 1}).ToSQL()
161+
if err != nil {
162+
t.Error(err)
163+
return
164+
}
165+
fmt.Println(sql, args)
152166
}
153167

154168
func TestBuilderDelete(t *testing.T) {

builder_update.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func (b *Builder) updateWriteTo(w Writer) error {
1818
}
1919

2020
for i, s := range b.updates {
21-
if err := s.WriteTo(w); err != nil {
21+
if err := s.opWriteTo(",", w); err != nil {
2222
return err
2323
}
2424

cond_eq.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@ package builder
22

33
import "fmt"
44

5+
type Incr int
6+
7+
type Decr int
8+
59
type Eq map[string]interface{}
610

711
var _ Cond = Eq{}
812

9-
func (eq Eq) WriteTo(w Writer) error {
13+
func (eq Eq) opWriteTo(op string, w Writer) error {
1014
var i = 0
1115
for k, v := range eq {
1216
switch v.(type) {
@@ -38,15 +42,24 @@ func (eq Eq) WriteTo(w Writer) error {
3842
if _, err := fmt.Fprintf(w, ")"); err != nil {
3943
return err
4044
}
41-
45+
case Incr:
46+
if _, err := fmt.Fprintf(w, "%s=%s+?", k, k); err != nil {
47+
return err
48+
}
49+
w.Append(int(v.(Incr)))
50+
case Decr:
51+
if _, err := fmt.Fprintf(w, "%s=%s-?", k, k); err != nil {
52+
return err
53+
}
54+
w.Append(int(v.(Decr)))
4255
default:
4356
if _, err := fmt.Fprintf(w, "%s=?", k); err != nil {
4457
return err
4558
}
4659
w.Append(v)
4760
}
4861
if i != len(eq)-1 {
49-
if _, err := fmt.Fprint(w, " AND "); err != nil {
62+
if _, err := fmt.Fprint(w, op); err != nil {
5063
return err
5164
}
5265
}
@@ -55,6 +68,10 @@ func (eq Eq) WriteTo(w Writer) error {
5568
return nil
5669
}
5770

71+
func (eq Eq) WriteTo(w Writer) error {
72+
return eq.opWriteTo(" AND ", w)
73+
}
74+
5875
func (eq Eq) And(conds ...Cond) Cond {
5976
return And(eq, And(conds...))
6077
}

set.go

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)