diff --git a/base.go b/base.go index f0517f2..a979ed3 100644 --- a/base.go +++ b/base.go @@ -6,6 +6,7 @@ package mysql import ( + "errors" "gorm.io/gorm" ) @@ -63,6 +64,23 @@ func (b *BaseDao) Count(dbInstance *gorm.DB, table string, optionFuncList ...Set return cnt, dbInstance.Table(table).Count(&cnt).Error } +// Tx 执行事务 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 20:31 2022/12/24 +func (b *BaseDao) Tx(dbInstance *gorm.DB, txFunc func(dbInstance *gorm.DB) error) error { + if nil == dbInstance { + return errors.New("db instance is null") + } + tx := b.Begin(dbInstance) + if err := txFunc(tx); nil != err { + _ = b.Rollback(tx) + return err + } + return b.Commit(tx) +} + // Begin 开启事务 // // Author : go_developer@163.com<白茶清欢>