2024-06-03 14:40:50 +07:00

34 lines
619 B
Go

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