an app.bsky.* indexer
1package main
2
3import (
4 "log"
5 "log/slog"
6 "os"
7 "time"
8
9 "gorm.io/driver/sqlite"
10 "gorm.io/gorm"
11 "gorm.io/gorm/logger"
12)
13
14func NewDatabase(path string) *gorm.DB {
15 sl := slog.With("source", "database")
16 l := logger.New(
17 log.New(os.Stdout, "\r\n", log.LstdFlags),
18 logger.Config{
19 SlowThreshold: time.Second,
20 Colorful: false,
21 },
22 )
23 db, err := gorm.Open(sqlite.Open(path), &gorm.Config{
24 Logger: l,
25 })
26 if err != nil {
27 sl.Error("failed to open database", "err", err)
28 }
29 db.Exec("PRAGMA journal_mode=WAL")
30 return db
31}