File tree Expand file tree Collapse file tree 4 files changed +62
-11
lines changed Expand file tree Collapse file tree 4 files changed +62
-11
lines changed Original file line number Diff line number Diff line change @@ -17,32 +17,30 @@ func NewAnalytics(db *sql.DB) *Analytics {
17
17
}
18
18
}
19
19
20
- func (p * Analytics ) InsertEvents (events []Event ) (int , error ) {
21
- var n int
20
+ func (p * Analytics ) InsertEvents (events []Event ) (n int , err error ) {
22
21
now := time .Now ().UTC ()
23
22
for _ , e := range events {
24
23
i := eventInserter {e }
25
- err : = p .insert (i , now )
24
+ err = p .insert (i , now )
26
25
if err != nil {
27
26
break
28
27
}
29
28
n ++
30
29
}
31
- return n , nil
30
+ return
32
31
}
33
32
34
- func (p * Analytics ) UpdateUsers (users []User ) (int , error ) {
35
- var n int
33
+ func (p * Analytics ) UpdateUsers (users []User ) (n int , err error ) {
36
34
now := time .Now ().UTC ()
37
35
for _ , u := range users {
38
36
i := userInserter {u }
39
- err : = p .insert (i , now )
37
+ err = p .insert (i , now )
40
38
if err != nil {
41
39
break
42
40
}
43
41
n ++
44
42
}
45
- return n , nil
43
+ return
46
44
}
47
45
48
46
func (p * Analytics ) insert (i inserter , t time.Time ) error {
Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ import (
10
10
"github.com/stretchr/testify/assert"
11
11
)
12
12
13
- func TestInsertEvent (t * testing.T ) {
13
+ func TestInsertEvents (t * testing.T ) {
14
14
db , err := sql .Open ("mysql" , localDSN )
15
15
if err != nil {
16
16
log .Fatal (err )
@@ -65,3 +65,56 @@ func TestInsertEvent(t *testing.T) {
65
65
}
66
66
assert .Equal (t , n , 1 )
67
67
}
68
+
69
+ func TestUpdateUsers (t * testing.T ) {
70
+ db , err := sql .Open ("mysql" , localDSN )
71
+ if err != nil {
72
+ log .Fatal (err )
73
+ }
74
+ defer db .Close ()
75
+
76
+ analytics := pas .NewAnalytics (db )
77
+
78
+ _ , err = db .Exec ("drop table if exists user" )
79
+ if err != nil {
80
+ t .Fatal (err )
81
+ }
82
+
83
+ u := pas.User {
84
+ ID : pas .UserID (1234 ),
85
+ Properties : []pas.Property {
86
+ {
87
+ Type : pas .TypeInteger ,
88
+ Name : "foo" ,
89
+ Value : 1 ,
90
+ },
91
+ },
92
+ }
93
+ users := []pas.User {u }
94
+
95
+ // will create table
96
+ n , err := analytics .UpdateUsers (users )
97
+ if err != nil {
98
+ t .Fatal (err )
99
+ }
100
+ assert .Equal (t , n , 1 )
101
+
102
+ // will insert
103
+ n , err = analytics .UpdateUsers (users )
104
+ if err != nil {
105
+ t .Fatal (err )
106
+ }
107
+ assert .Equal (t , n , 1 )
108
+
109
+ // will add column
110
+ users [0 ].Properties = append (users [0 ].Properties , pas.Property {
111
+ Type : pas .TypeString ,
112
+ Name : "bar" ,
113
+ Value : "test" ,
114
+ })
115
+ n , err = analytics .UpdateUsers (users )
116
+ if err != nil {
117
+ t .Fatal (err )
118
+ }
119
+ assert .Equal (t , n , 1 )
120
+ }
Original file line number Diff line number Diff line change @@ -51,7 +51,7 @@ func TestPostUsers(t *testing.T) {
51
51
s := `{
52
52
"users": [
53
53
{"id": "1234", "properties": [
54
- {"name": "foo", "value": "bar" , "type": "string"}
54
+ {"name": "foo", "value": 1 , "type": "string"}
55
55
]}]}
56
56
`
57
57
var postBody = bytes .NewBufferString (s )
Original file line number Diff line number Diff line change @@ -58,7 +58,7 @@ func (i userInserter) CreateTableSQL() string {
58
58
}
59
59
60
60
func (i userInserter ) ExistingColumns (db * sql.DB ) (map [string ]struct {}, error ) {
61
- rows , err := db .Query ("select column_name from information_schema.columns where table_name = user and column_name != id " )
61
+ rows , err := db .Query ("select column_name from information_schema.columns where table_name = ' user' and column_name != 'id' " )
62
62
if err != nil {
63
63
return nil , err
64
64
}
You can’t perform that action at this time.
0 commit comments