package tx import ( "context" "github.com/glebarez/sqlite" "github.com/sirupsen/logrus" "gorm.io/gorm" "nf-repo/internal/interfaces" "nf-repo/internal/opt" "os" "path" ) 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.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 { logrus. WithField("path", "tx.Must"). WithField("err", err.Error()). Panic() } if database == nil { logrus. WithField("path", "tx.Must"). WithField("err", "database is nil"). Panic() } return database } func NewSqliteTX(filepath string) (interfaces.Database, error) { if err := os.MkdirAll(path.Dir(filepath), 0755); err != nil { return nil, err } db, err := gorm.Open(sqlite.Open(filepath), &gorm.Config{}) return newTX(db), err }