summaryrefslogtreecommitdiff
path: root/sqlite.go
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.eu>2024-02-13 20:43:03 +0100
committerRené 'Necoro' Neumann <necoro@necoro.eu>2024-02-13 20:43:03 +0100
commit18ed79e026aa301ffed60ab86f6df7adca981ccb (patch)
tree47e0ae8b266e7b743fb64524bfccc149219831c2 /sqlite.go
parenta9420a2a4f3221d1771e7f28786ccdd80ceed88d (diff)
downloadgosten-18ed79e026aa301ffed60ab86f6df7adca981ccb.tar.gz
gosten-18ed79e026aa301ffed60ab86f6df7adca981ccb.tar.bz2
gosten-18ed79e026aa301ffed60ab86f6df7adca981ccb.zip
SQL logging
Diffstat (limited to 'sqlite.go')
-rw-r--r--sqlite.go44
1 files changed, 41 insertions, 3 deletions
diff --git a/sqlite.go b/sqlite.go
index cf65cb2..bc3c733 100644
--- a/sqlite.go
+++ b/sqlite.go
@@ -1,9 +1,47 @@
-//go:build sqlite && !windows
+//go:build sqlite
package main
import (
- _ "github.com/mattn/go-sqlite3"
+ "context"
+ "database/sql"
+ "log"
+ "log/slog"
+
+ sqldblogger "github.com/simukti/sqldb-logger"
)
-const driverName = "sqlite3"
+type logger struct {
+}
+
+func (l logger) Log(ctx context.Context, level sqldblogger.Level, msg string, data map[string]interface{}) {
+ attrs := make([]slog.Attr, 0, len(data))
+
+ for k, v := range data {
+ attrs = append(attrs, slog.Any(k, v))
+ }
+
+ var lvl slog.Level
+ switch level {
+ case sqldblogger.LevelDebug, sqldblogger.LevelTrace:
+ lvl = slog.LevelDebug
+ case sqldblogger.LevelInfo:
+ lvl = slog.LevelInfo
+ case sqldblogger.LevelError:
+ lvl = slog.LevelError
+ }
+
+ slog.LogAttrs(ctx, lvl, msg, attrs...)
+}
+
+func openDB(_ string) *sql.DB {
+ dsn := "test.sqlite"
+ db, err := sql.Open(driverName, dsn)
+ if err != nil {
+ log.Fatal(err)
+ }
+ slog.SetLogLoggerLevel(slog.LevelDebug)
+ return sqldblogger.OpenDriver(dsn, db.Driver(), logger{},
+ sqldblogger.WithSQLQueryAsMessage(false),
+ sqldblogger.WithMinimumLevel(sqldblogger.LevelTrace))
+}