Skip to content

Commit f8f37ec

Browse files
authored
feat: take in a logger (#20)
1 parent 1d8d6dc commit f8f37ec

File tree

6 files changed

+29
-17
lines changed

6 files changed

+29
-17
lines changed

db.go

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@ type QueryFn func(context.Context, string, ...interface{}) (*stdsql.Rows, error)
1414

1515
type DB struct {
1616
Client *stdsql.DB
17-
Driver string
18-
URL string
17+
Logger *slog.Logger
1918
}
2019

2120
func (db *DB) Ping() error {
@@ -25,18 +24,26 @@ func (db *DB) Ping() error {
2524
// Run any query on the database client, passing parameters optionally. Returns sql.Result.
2625
func (db *DB) Exec(ctx context.Context, sql string, params ...interface{}) (stdsql.Result, error) {
2726
start := time.Now()
28-
result, error := db.Client.ExecContext(ctx, sql, params...)
29-
slog.DebugContext(ctx, "Executed SQL query", "sql", sql, "took", time.Since(start))
30-
return result, error
27+
result, err := db.Client.ExecContext(ctx, sql, params...)
28+
29+
if db.Logger != nil {
30+
db.Logger.DebugContext(ctx, "Executed SQL query", "sql", sql, "took", time.Since(start), "error", err)
31+
}
32+
33+
return result, err
3134
}
3235

3336
// Run any query on the database client, passing parameters optionally. Its difference with
3437
// `Exec` method is returning `sql.Rows` instead of `sql.Result`.
3538
func (db *DB) Query(ctx context.Context, sql string, params ...interface{}) (*stdsql.Rows, error) {
3639
start := time.Now()
37-
result, error := db.Client.QueryContext(ctx, sql, params...)
38-
slog.DebugContext(ctx, "Ran SQL query", "sql", sql, "took", time.Since(start))
39-
return result, error
40+
result, err := db.Client.QueryContext(ctx, sql, params...)
41+
42+
if db.Logger != nil {
43+
db.Logger.DebugContext(ctx, "Ran SQL query", "sql", sql, "took", time.Since(start), "error", err)
44+
}
45+
46+
return result, err
4047
}
4148

4249
// Takes any valid struct and creates a SQL table from it.
@@ -168,20 +175,20 @@ func (db *DB) Begin(ctx context.Context, readOnly bool) (*Tx, error) {
168175

169176
return &Tx{
170177
Client: client,
178+
Logger: db.Logger,
171179
}, nil
172180
}
173181

174182
// Establish DB connection and return a crud.DB instance w/ methods needed for accessing / writing the database.
175183
// Example call: Connect("mysql", "root:123456@tcp(localhost:3306)/database_name?parseTime=true")
176-
func Connect(driver, url string) (*DB, error) {
184+
func Connect(driver, url string, logger *slog.Logger) (*DB, error) {
177185
client, err := stdsql.Open(driver, url)
178186
if err != nil {
179187
return nil, err
180188
}
181189

182190
return &DB{
183191
Client: client,
184-
Driver: driver,
185-
URL: url,
192+
Logger: logger,
186193
}, nil
187194
}

examples/context/context.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type User struct {
2121

2222
func main() {
2323
var err error
24-
DB, err = crud.Connect("mysql", os.Getenv("DATABASE_URL"))
24+
DB, err = crud.Connect("mysql", os.Getenv("DATABASE_URL"), nil)
2525
if err != nil {
2626
panic(err)
2727
}

examples/simple/simple.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ type User struct {
1616
}
1717

1818
func main() {
19-
DB, err := crud.Connect("mysql", os.Getenv("DATABASE_URL"))
19+
DB, err := crud.Connect("mysql", os.Getenv("DATABASE_URL"), nil)
2020
if err != nil {
2121
panic(err)
2222
}

examples/transaction/transaction.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type User struct {
2121

2222
func main() {
2323
var err error
24-
DB, err = crud.Connect("mysql", os.Getenv("DATABASE_URL"))
24+
DB, err = crud.Connect("mysql", os.Getenv("DATABASE_URL"), nil)
2525
if err != nil {
2626
panic(err)
2727
}

main_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func TestMain(m *testing.M) {
3838
return
3939
}
4040

41-
DB, err = crud.Connect("mysql", connStr)
41+
DB, err = crud.Connect("mysql", connStr, nil)
4242
if err != nil {
4343
errf("connect: %v", err)
4444
return

transaction.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,26 @@ import (
1010

1111
type Tx struct {
1212
Client *stdsql.Tx
13+
Logger *slog.Logger
1314
}
1415

1516
// Execute any SQL query on the transaction client. Returns sql.Result.
1617
func (tx *Tx) Exec(ctx context.Context, sql string, params ...interface{}) (stdsql.Result, error) {
1718
start := time.Now()
1819
result, err := tx.Client.ExecContext(ctx, sql, params...)
19-
slog.DebugContext(ctx, "Executed SQL query", "sql", sql, "took", time.Since(start))
20+
if tx.Logger != nil {
21+
tx.Logger.DebugContext(ctx, "Executed SQL query", "sql", sql, "took", time.Since(start))
22+
}
2023
return result, err
2124
}
2225

2326
// Execute any SQL query on the transaction client. Returns sql.Rows.
2427
func (tx *Tx) Query(ctx context.Context, sql string, params ...interface{}) (*stdsql.Rows, error) {
2528
start := time.Now()
2629
result, err := tx.Client.QueryContext(ctx, sql, params...)
27-
slog.DebugContext(ctx, "Ran SQL query", "sql", sql, "took", time.Since(start))
30+
if tx.Logger != nil {
31+
tx.Logger.DebugContext(ctx, "Ran SQL query", "sql", sql, "took", time.Since(start))
32+
}
2833
return result, err
2934
}
3035

0 commit comments

Comments
 (0)