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}