package repository import ( "context" "database/sql" "gorm.io/gorm" ) type TransactionManager struct { db *gorm.DB } func NewTransactionManager(db *gorm.DB) *TransactionManager { return &TransactionManager{db: db} } func (tm *TransactionManager) 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 *TransactionManager) Commit(session *gorm.DB) *gorm.DB { return session.Commit() } func (tm *TransactionManager) Rollback(session *gorm.DB) *gorm.DB { return session.Rollback() }