+13
-3
knotserver/db/db.go
+13
-3
knotserver/db/db.go
···
1
1
package db
2
2
3
3
import (
4
+
"context"
4
5
"database/sql"
6
+
"log/slog"
5
7
"strings"
6
8
7
9
_ "github.com/mattn/go-sqlite3"
10
+
"tangled.org/core/log"
8
11
)
9
12
10
13
type DB struct {
11
-
db *sql.DB
14
+
db *sql.DB
15
+
logger *slog.Logger
12
16
}
13
17
14
-
func Setup(dbPath string) (*DB, error) {
18
+
func Setup(ctx context.Context, dbPath string) (*DB, error) {
15
19
// https://github.com/mattn/go-sqlite3#connection-string
16
20
opts := []string{
17
21
"_foreign_keys=1",
···
19
23
"_synchronous=NORMAL",
20
24
"_auto_vacuum=incremental",
21
25
}
26
+
27
+
logger := log.FromContext(ctx)
28
+
logger = log.SubLogger(logger, "db")
22
29
23
30
db, err := sql.Open("sqlite3", dbPath+"?"+strings.Join(opts, "&"))
24
31
if err != nil {
···
60
67
return nil, err
61
68
}
62
69
63
-
return &DB{db: db}, nil
70
+
return &DB{
71
+
db: db,
72
+
logger: logger,
73
+
}, nil
64
74
}