Skip to content

Commit e170eb2

Browse files
committed
support multiple or no logger
1 parent a2d65ad commit e170eb2

13 files changed

+87
-85
lines changed

adapter.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ package grimoire
22

33
// Adapter interface
44
type Adapter interface {
5-
Count(Query, Logger) (int, error)
6-
All(Query, interface{}, Logger) (int, error)
7-
Delete(Query, Logger) error
8-
Insert(Query, map[string]interface{}, Logger) (interface{}, error)
9-
InsertAll(Query, []string, []map[string]interface{}, Logger) ([]interface{}, error)
10-
Update(Query, map[string]interface{}, Logger) error
5+
Count(Query, ...Logger) (int, error)
6+
All(Query, interface{}, ...Logger) (int, error)
7+
Delete(Query, ...Logger) error
8+
Insert(Query, map[string]interface{}, ...Logger) (interface{}, error)
9+
InsertAll(Query, []string, []map[string]interface{}, ...Logger) ([]interface{}, error)
10+
Update(Query, map[string]interface{}, ...Logger) error
1111

1212
Begin() (Adapter, error)
1313
Commit() error

adapter/mysql/mysql_test.go

+7-10
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package mysql
33
import (
44
"os"
55
"testing"
6-
"time"
76

87
"github.com/Fs02/go-paranoid"
98
"github.com/Fs02/grimoire"
@@ -13,18 +12,16 @@ import (
1312
"github.com/stretchr/testify/assert"
1413
)
1514

16-
func logger(string, time.Duration, error) {}
17-
1815
func init() {
1916
adapter, err := Open(dsn())
2017
if err != nil {
2118
panic(err)
2219
}
2320
defer adapter.Close()
2421

25-
_, _, err = adapter.Exec(`DROP TABLE IF EXISTS addresses;`, []interface{}{}, logger)
22+
_, _, err = adapter.Exec(`DROP TABLE IF EXISTS addresses;`, nil)
2623
paranoid.Panic(err)
27-
_, _, err = adapter.Exec(`DROP TABLE IF EXISTS users;`, []interface{}{}, logger)
24+
_, _, err = adapter.Exec(`DROP TABLE IF EXISTS users;`, nil)
2825
paranoid.Panic(err)
2926

3027
_, _, err = adapter.Exec(`CREATE TABLE users (
@@ -35,7 +32,7 @@ func init() {
3532
note varchar(50),
3633
created_at DATETIME,
3734
updated_at DATETIME
38-
);`, []interface{}{}, logger)
35+
);`, nil)
3936
paranoid.Panic(err)
4037

4138
_, _, err = adapter.Exec(`CREATE TABLE addresses (
@@ -45,7 +42,7 @@ func init() {
4542
created_at DATETIME,
4643
updated_at DATETIME,
4744
FOREIGN KEY (user_id) REFERENCES users(id)
48-
);`, []interface{}{}, logger)
45+
);`, nil)
4946
paranoid.Panic(err)
5047
}
5148

@@ -108,7 +105,7 @@ func TestAdapterInsertAllError(t *testing.T) {
108105
{"notexist": "13"},
109106
}
110107

111-
_, err = adapter.InsertAll(grimoire.Repo{}.From("users"), fields, allchanges, logger)
108+
_, err = adapter.InsertAll(grimoire.Repo{}.From("users"), fields, allchanges)
112109

113110
assert.NotNil(t, err)
114111
}
@@ -142,7 +139,7 @@ func TestAdapterQueryError(t *testing.T) {
142139

143140
out := struct{}{}
144141

145-
_, err = adapter.Query(&out, "error", []interface{}{}, logger)
142+
_, err = adapter.Query(&out, "error", nil)
146143
assert.NotNil(t, err)
147144
}
148145

@@ -153,7 +150,7 @@ func TestAdapterExecError(t *testing.T) {
153150
}
154151
defer adapter.Close()
155152

156-
_, _, err = adapter.Exec("error", []interface{}{}, logger)
153+
_, _, err = adapter.Exec("error", nil)
157154
assert.NotNil(t, err)
158155
}
159156

adapter/postgres/postgres.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func Open(dsn string) (*Adapter, error) {
2727
}
2828

2929
// Insert inserts a record to database and returns its id.
30-
func (adapter *Adapter) Insert(query grimoire.Query, changes map[string]interface{}, logger grimoire.Logger) (interface{}, error) {
30+
func (adapter *Adapter) Insert(query grimoire.Query, changes map[string]interface{}, loggers ...grimoire.Logger) (interface{}, error) {
3131
statement, args := sql.NewBuilder(adapter.Placeholder, adapter.Ordinal).
3232
Returning("id").
3333
Insert(query.Collection, changes)
@@ -36,19 +36,19 @@ func (adapter *Adapter) Insert(query grimoire.Query, changes map[string]interfac
3636
ID int64
3737
}
3838

39-
_, err := adapter.Query(&result, statement, args, logger)
39+
_, err := adapter.Query(&result, statement, args, loggers...)
4040
return result.ID, err
4141
}
4242

4343
// InsertAll inserts all record to database and returns its ids.
44-
func (adapter *Adapter) InsertAll(query grimoire.Query, fields []string, allchanges []map[string]interface{}, logger grimoire.Logger) ([]interface{}, error) {
44+
func (adapter *Adapter) InsertAll(query grimoire.Query, fields []string, allchanges []map[string]interface{}, loggers ...grimoire.Logger) ([]interface{}, error) {
4545
statement, args := sql.NewBuilder(adapter.Placeholder, adapter.Ordinal).Returning("id").InsertAll(query.Collection, fields, allchanges)
4646

4747
var result []struct {
4848
ID int64
4949
}
5050

51-
_, err := adapter.Query(&result, statement, args, logger)
51+
_, err := adapter.Query(&result, statement, args, loggers...)
5252

5353
ids := make([]interface{}, 0, len(result))
5454
for _, r := range result {

adapter/postgres/postgres_test.go

+7-10
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package postgres
33
import (
44
"os"
55
"testing"
6-
"time"
76

87
"github.com/Fs02/go-paranoid"
98
"github.com/Fs02/grimoire"
@@ -13,18 +12,16 @@ import (
1312
"github.com/stretchr/testify/assert"
1413
)
1514

16-
func logger(string, time.Duration, error) {}
17-
1815
func init() {
1916
adapter, err := Open(dsn())
2017
if err != nil {
2118
panic(err)
2219
}
2320
defer adapter.Close()
2421

25-
_, _, err = adapter.Exec(`DROP TABLE IF EXISTS addresses;`, []interface{}{}, logger)
22+
_, _, err = adapter.Exec(`DROP TABLE IF EXISTS addresses;`, nil)
2623
paranoid.Panic(err)
27-
_, _, err = adapter.Exec(`DROP TABLE IF EXISTS users;`, []interface{}{}, logger)
24+
_, _, err = adapter.Exec(`DROP TABLE IF EXISTS users;`, nil)
2825
paranoid.Panic(err)
2926

3027
_, _, err = adapter.Exec(`CREATE TABLE users (
@@ -35,7 +32,7 @@ func init() {
3532
note varchar(50),
3633
created_at TIMESTAMP,
3734
updated_at TIMESTAMP
38-
);`, []interface{}{}, logger)
35+
);`, nil)
3936
paranoid.Panic(err)
4037

4138
_, _, err = adapter.Exec(`CREATE TABLE addresses (
@@ -44,7 +41,7 @@ func init() {
4441
address VARCHAR(60) NOT NULL DEFAULT '',
4542
created_at TIMESTAMP,
4643
updated_at TIMESTAMP
47-
);`, []interface{}{}, logger)
44+
);`, nil)
4845
paranoid.Panic(err)
4946
}
5047

@@ -107,7 +104,7 @@ func TestAdapterInsertAllError(t *testing.T) {
107104
{"notexist": "13"},
108105
}
109106

110-
_, err = adapter.InsertAll(grimoire.Repo{}.From("users"), fields, allchanges, logger)
107+
_, err = adapter.InsertAll(grimoire.Repo{}.From("users"), fields, allchanges)
111108

112109
assert.NotNil(t, err)
113110
}
@@ -141,7 +138,7 @@ func TestAdapterQueryError(t *testing.T) {
141138

142139
out := struct{}{}
143140

144-
_, err = adapter.Query(&out, "error", []interface{}{}, logger)
141+
_, err = adapter.Query(&out, "error", nil)
145142
assert.NotNil(t, err)
146143
}
147144

@@ -152,7 +149,7 @@ func TestAdapterExecError(t *testing.T) {
152149
}
153150
defer adapter.Close()
154151

155-
_, _, err = adapter.Exec("error", []interface{}{}, logger)
152+
_, _, err = adapter.Exec("error", nil)
156153
assert.NotNil(t, err)
157154
}
158155

adapter/sql/sql.go

+16-16
Original file line numberDiff line numberDiff line change
@@ -36,35 +36,35 @@ func (adapter *Adapter) Close() error {
3636
}
3737

3838
// Count retrieves count of record that match the query.
39-
func (adapter *Adapter) Count(query grimoire.Query, logger grimoire.Logger) (int, error) {
39+
func (adapter *Adapter) Count(query grimoire.Query, loggers ...grimoire.Logger) (int, error) {
4040
var doc struct {
4141
Count int
4242
}
4343

4444
query.Fields = []string{"COUNT(*) AS count"}
4545
statement, args := NewBuilder(adapter.Placeholder, adapter.Ordinal).Find(query)
46-
_, err := adapter.Query(&doc, statement, args, logger)
46+
_, err := adapter.Query(&doc, statement, args, loggers...)
4747
return doc.Count, err
4848
}
4949

5050
// All retrieves all record that match the query.
51-
func (adapter *Adapter) All(query grimoire.Query, doc interface{}, logger grimoire.Logger) (int, error) {
51+
func (adapter *Adapter) All(query grimoire.Query, doc interface{}, loggers ...grimoire.Logger) (int, error) {
5252
statement, args := NewBuilder(adapter.Placeholder, adapter.Ordinal).Find(query)
53-
count, err := adapter.Query(doc, statement, args, logger)
53+
count, err := adapter.Query(doc, statement, args, loggers...)
5454
return int(count), err
5555
}
5656

5757
// Insert inserts a record to database and returns its id.
58-
func (adapter *Adapter) Insert(query grimoire.Query, changes map[string]interface{}, logger grimoire.Logger) (interface{}, error) {
58+
func (adapter *Adapter) Insert(query grimoire.Query, changes map[string]interface{}, loggers ...grimoire.Logger) (interface{}, error) {
5959
statement, args := NewBuilder(adapter.Placeholder, adapter.Ordinal).Insert(query.Collection, changes)
60-
id, _, err := adapter.Exec(statement, args, logger)
60+
id, _, err := adapter.Exec(statement, args, loggers...)
6161
return id, err
6262
}
6363

6464
// InsertAll inserts all record to database and returns its ids.
65-
func (adapter *Adapter) InsertAll(query grimoire.Query, fields []string, allchanges []map[string]interface{}, logger grimoire.Logger) ([]interface{}, error) {
65+
func (adapter *Adapter) InsertAll(query grimoire.Query, fields []string, allchanges []map[string]interface{}, loggers ...grimoire.Logger) ([]interface{}, error) {
6666
statement, args := NewBuilder(adapter.Placeholder, adapter.Ordinal).InsertAll(query.Collection, fields, allchanges)
67-
id, _, err := adapter.Exec(statement, args, logger)
67+
id, _, err := adapter.Exec(statement, args, loggers...)
6868
if err != nil {
6969
return nil, err
7070
}
@@ -84,16 +84,16 @@ func (adapter *Adapter) InsertAll(query grimoire.Query, fields []string, allchan
8484
}
8585

8686
// Update updates a record in database.
87-
func (adapter *Adapter) Update(query grimoire.Query, changes map[string]interface{}, logger grimoire.Logger) error {
87+
func (adapter *Adapter) Update(query grimoire.Query, changes map[string]interface{}, loggers ...grimoire.Logger) error {
8888
statement, args := NewBuilder(adapter.Placeholder, adapter.Ordinal).Update(query.Collection, changes, query.Condition)
89-
_, _, err := adapter.Exec(statement, args, logger)
89+
_, _, err := adapter.Exec(statement, args, loggers...)
9090
return err
9191
}
9292

9393
// Delete deletes all results that match the query.
94-
func (adapter *Adapter) Delete(query grimoire.Query, logger grimoire.Logger) error {
94+
func (adapter *Adapter) Delete(query grimoire.Query, loggers ...grimoire.Logger) error {
9595
statement, args := NewBuilder(adapter.Placeholder, adapter.Ordinal).Delete(query.Collection, query.Condition)
96-
_, _, err := adapter.Exec(statement, args, logger)
96+
_, _, err := adapter.Exec(statement, args, loggers...)
9797
return err
9898
}
9999

@@ -131,7 +131,7 @@ func (adapter *Adapter) Rollback() error {
131131
}
132132

133133
// Query performs query operation.
134-
func (adapter *Adapter) Query(out interface{}, statement string, args []interface{}, logger grimoire.Logger) (int64, error) {
134+
func (adapter *Adapter) Query(out interface{}, statement string, args []interface{}, loggers ...grimoire.Logger) (int64, error) {
135135
var rows *sql.Rows
136136
var err error
137137

@@ -141,7 +141,7 @@ func (adapter *Adapter) Query(out interface{}, statement string, args []interfac
141141
} else {
142142
rows, err = adapter.DB.Query(statement, args...)
143143
}
144-
logger(statement, time.Since(start), err)
144+
go grimoire.Log(loggers, statement, time.Since(start), err)
145145

146146
if err != nil {
147147
return 0, adapter.ErrorFunc(err)
@@ -153,7 +153,7 @@ func (adapter *Adapter) Query(out interface{}, statement string, args []interfac
153153
}
154154

155155
// Exec performs exec operation.
156-
func (adapter *Adapter) Exec(statement string, args []interface{}, logger grimoire.Logger) (int64, int64, error) {
156+
func (adapter *Adapter) Exec(statement string, args []interface{}, loggers ...grimoire.Logger) (int64, int64, error) {
157157
var res sql.Result
158158
var err error
159159

@@ -163,7 +163,7 @@ func (adapter *Adapter) Exec(statement string, args []interface{}, logger grimoi
163163
} else {
164164
res, err = adapter.DB.Exec(statement, args...)
165165
}
166-
logger(statement, time.Since(start), err)
166+
go grimoire.Log(loggers, statement, time.Since(start), err)
167167

168168
if err != nil {
169169
return 0, 0, adapter.ErrorFunc(err)

adapter/sql/sql_test.go

+4-7
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package sql
33
import (
44
db "database/sql"
55
"testing"
6-
"time"
76

87
paranoid "github.com/Fs02/go-paranoid"
98
"github.com/Fs02/grimoire"
@@ -13,8 +12,6 @@ import (
1312
"github.com/stretchr/testify/assert"
1413
)
1514

16-
func logger(string, time.Duration, error) {}
17-
1815
func open() (*Adapter, error) {
1916
var err error
2017
adapter := &Adapter{
@@ -30,7 +27,7 @@ func open() (*Adapter, error) {
3027
_, _, execerr := adapter.Exec(`CREATE TABLE test (
3128
id INTEGER PRIMARY KEY,
3229
name STRING
33-
);`, []interface{}{}, logger)
30+
);`, nil)
3431
paranoid.Panic(execerr)
3532

3633
return adapter, err
@@ -149,7 +146,7 @@ func TestAdapterInsertAllError(t *testing.T) {
149146
{"notexist": "13"},
150147
}
151148

152-
_, err = adapter.InsertAll(grimoire.Repo{}.From("test"), fields, allchanges, logger)
149+
_, err = adapter.InsertAll(grimoire.Repo{}.From("test"), fields, allchanges)
153150

154151
assert.NotNil(t, err)
155152
}
@@ -183,7 +180,7 @@ func TestAdapterQueryError(t *testing.T) {
183180

184181
out := struct{}{}
185182

186-
_, err = adapter.Query(&out, "error", []interface{}{}, logger)
183+
_, err = adapter.Query(&out, "error", nil)
187184
assert.NotNil(t, err)
188185
}
189186

@@ -194,6 +191,6 @@ func TestAdapterExecError(t *testing.T) {
194191
}
195192
defer adapter.Close()
196193

197-
_, _, err = adapter.Exec("error", []interface{}{}, logger)
194+
_, _, err = adapter.Exec("error", nil)
198195
assert.NotNil(t, err)
199196
}

0 commit comments

Comments
 (0)