summaryrefslogtreecommitdiff
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
parenta9420a2a4f3221d1771e7f28786ccdd80ceed88d (diff)
downloadgosten-18ed79e026aa301ffed60ab86f6df7adca981ccb.tar.gz
gosten-18ed79e026aa301ffed60ab86f6df7adca981ccb.tar.bz2
gosten-18ed79e026aa301ffed60ab86f6df7adca981ccb.zip
SQL logging
-rw-r--r--go.mod4
-rw-r--r--go.sum16
-rw-r--r--main.go5
-rw-r--r--mysql.go9
-rw-r--r--sqlite.go44
-rw-r--r--sqlite_linux.go9
6 files changed, 78 insertions, 9 deletions
diff --git a/go.mod b/go.mod
index 60b816c..b851d68 100644
--- a/go.mod
+++ b/go.mod
@@ -8,6 +8,8 @@ require (
github.com/gorilla/handlers v1.5.2
github.com/gorilla/schema v1.2.1
github.com/mattn/go-sqlite3 v1.14.22
+ github.com/simukti/sqldb-logger v0.0.0-20230108155151-646c1a075551
+ golang.org/x/crypto v0.19.0
modernc.org/sqlite v1.28.0
)
@@ -19,7 +21,7 @@ require (
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
golang.org/x/mod v0.8.0 // indirect
- golang.org/x/sys v0.14.0 // indirect
+ golang.org/x/sys v0.17.0 // indirect
golang.org/x/tools v0.1.12 // indirect
lukechampine.com/uint128 v1.2.0 // indirect
modernc.org/cc/v3 v3.40.0 // indirect
diff --git a/go.sum b/go.sum
index 64d4922..6b6bff5 100644
--- a/go.sum
+++ b/go.sum
@@ -1,5 +1,7 @@
github.com/Necoro/form v0.0.0-20240211223301-6fa9f8196e1e h1:v3DDTGBMt9pclCdG7jRyNAABmtJw3uky/Xoi/DfbWNs=
github.com/Necoro/form v0.0.0-20240211223301-6fa9f8196e1e/go.mod h1:JxpmgZ5hjL6fyhBoZ4HAUadkp7DNqWlHbFL7l8oic4Y=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=
@@ -26,13 +28,23 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
+github.com/simukti/sqldb-logger v0.0.0-20230108155151-646c1a075551 h1:+EXKKt7RC4HyE/iE8zSeFL+7YBL8Z7vpBaEE3c7lCnk=
+github.com/simukti/sqldb-logger v0.0.0-20230108155151-646c1a075551/go.mod h1:ztTX0ctjRZ1wn9OXrzhonvNmv43yjFUXJYJR95JQAJE=
+github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
+golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
-golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
+golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI=
lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw=
diff --git a/main.go b/main.go
index cef556e..f97c639 100644
--- a/main.go
+++ b/main.go
@@ -33,8 +33,9 @@ var s *schema.Decoder
func main() {
flag.Parse()
- db, err := sql.Open(driverName, "test.sqlite")
- if err != nil {
+ db := openDB("")
+
+ if err := db.Ping(); err != nil {
log.Fatal(err)
}
diff --git a/mysql.go b/mysql.go
index ae2fa31..d304c0f 100644
--- a/mysql.go
+++ b/mysql.go
@@ -4,4 +4,11 @@ package main
import _ "github.com/go-sql-driver/mysql"
-const driverName = "mysql"
+func openDB(dsn string) *sql.DB {
+ db, err := sql.Open("mysql", dsn)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ return db
+}
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))
+}
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"