diff options
Diffstat (limited to '')
-rw-r--r-- | sqlite.go | 44 | ||||
-rw-r--r-- | sqlite_linux.go | 9 |
2 files changed, 50 insertions, 3 deletions
@@ -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)) +} diff --git a/sqlite_linux.go b/sqlite_linux.go new file mode 100644 index 0000000..cf65cb2 --- /dev/null +++ b/sqlite_linux.go @@ -0,0 +1,9 @@ +//go:build sqlite && !windows + +package main + +import ( + _ "github.com/mattn/go-sqlite3" +) + +const driverName = "sqlite3" |