From 18ed79e026aa301ffed60ab86f6df7adca981ccb Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Tue, 13 Feb 2024 20:43:03 +0100 Subject: SQL logging --- sqlite.go | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) (limited to 'sqlite.go') 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)) +} -- cgit v1.2.3-70-g09d2