2025-06-27 13:01:39 +07:00

33 lines
613 B
Go

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()
}