package trx import ( "context" "database/sql" "gorm.io/gorm" ) type GormTransactionManager struct { db *gorm.DB } func NewGormTransactionManager(db *gorm.DB) *GormTransactionManager { return &GormTransactionManager{ db: db, } } func (tm *GormTransactionManager) Begin(ctx context.Context, opts ...*sql.TxOptions) (*gorm.DB, error) { tx := tm.db.Begin(opts...) if tx.Error != nil { return nil, tx.Error } return tx, nil } func (tm *GormTransactionManager) Commit(tx *gorm.DB) *gorm.DB { return tx.Commit() } func (tm *GormTransactionManager) Rollback(tx *gorm.DB) *gorm.DB { return tx.Rollback() }