package dbs import ( "context" "os" "path" "nf-repo/internal/interfaces" "nf-repo/internal/opt" "github.com/glebarez/sqlite" "github.com/loveuer/nf/nft/log" "gorm.io/gorm" ) type tx struct { db *gorm.DB } func (t *tx) TX(ctx context.Context) *gorm.DB { db := t.db.Session(&gorm.Session{}).WithContext(ctx) if opt.Cfg.Debug { db = db.Debug() } return db } func newTX(db *gorm.DB) interfaces.Database { return &tx{db: db} } func Must(database interfaces.Database, err error) interfaces.Database { if err != nil { log.Panic("tx.Must: err = %s", err.Error()) } if database == nil { log.Panic("tx.Must: database is nil") } return database } func NewSqliteTX(filepath string) (interfaces.Database, error) { if err := os.MkdirAll(path.Dir(filepath), 0o755); err != nil { return nil, err } db, err := gorm.Open(sqlite.Open(filepath), &gorm.Config{}) return newTX(db), err }