gormtx

package module
v1.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 7, 2023 License: MIT Imports: 10 Imported by: 0

README

gormtx

gorm 事务管理

接口:db_tx_manager ,Mock db_tx_manager_mock

type DBTxManager interface {
    // NonTx 非事务上下文
    NonTx(ctx context.Context) context.Context
	// OpenTx 开启事务
	OpenTx(ctx context.Context, opts ...Option) (context.Context, uint64)
	// CloseTx 关闭事务
	CloseTx(ctx context.Context, txid uint64, err *error)
	// MainDB 获取 main db,如果已经开启 main db tx,则返回 main db tx
	MainDB(ctx context.Context) *gorm.DB
	// BackupDB 获取 Backup db
	BackupDB(ctx context.Context) *gorm.DB
	// AutoDB 获取 db,如果已经开启 main db tx,则返回 db tx,否则 返回 backup db
	AutoDB(ctx context.Context) *gorm.DB
	// MustMainTx 获取 main db tx,如果已经开启 main db tx,则返回 main db tx,否则 panic
	MustMainTx(ctx context.Context) *gorm.DB
}

实现:gorm_tx_manager

测试:gorm_tx_manager_test

Documentation

Overview

Package gormtx is a generated GoMock package. mockgen -source=db_tx_manager.go -destination=db_tx_manager_mock.go --package=gormtx --build_flags=--mod=mod

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DBTxManager added in v1.0.3

type DBTxManager interface {
	// NonTx 非事务上下文
	NonTx(ctx context.Context) context.Context
	// OpenTx 开启事务
	OpenTx(ctx context.Context, opts ...Option) (context.Context, uint64)
	// CloseTx 关闭事务
	CloseTx(ctx context.Context, txid uint64, err *error)
	// MainDB 获取 main db,如果已经开启 main db tx,则返回 main db tx
	MainDB(ctx context.Context) *gorm.DB
	// BackupDB 获取 Backup db
	BackupDB(ctx context.Context) *gorm.DB
	// AutoDB 获取 db,如果已经开启 main db tx,则返回 db tx,否则 返回 backup db
	AutoDB(ctx context.Context) *gorm.DB
	// MustMainTx 获取 main db tx,如果已经开启 main db tx,则返回 main db tx,否则 panic
	MustMainTx(ctx context.Context) *gorm.DB
}

type GormTxManager

type GormTxManager struct {
	// contains filtered or unexported fields
}

GormTxManager db 事务管理器 mainDB, backupDB *gorm.DB // 默认主从库实例 tid2Tx sync.Map // tid(事务ID) 对应的 事务

func NewGormTxManager

func NewGormTxManager(mainDB, backupDB *gorm.DB) *GormTxManager

func NewGormTxManagerWithClauses added in v1.0.1

func NewGormTxManagerWithClauses(db *gorm.DB) *GormTxManager

NewGormTxManagerWithClauses 使用 DBResolver 读写分离

func (*GormTxManager) AutoDB

func (s *GormTxManager) AutoDB(ctx context.Context) *gorm.DB

AutoDB 获取 db,如果已经开启 main db tx,则返回 db tx,否则 返回 backup db

func (*GormTxManager) BackupDB

func (s *GormTxManager) BackupDB(ctx context.Context) *gorm.DB

BackupDB 获取 Backup db

func (*GormTxManager) CloseTx added in v1.1.0

func (s *GormTxManager) CloseTx(ctx context.Context, txid uint64, err *error)

CloseTx 关闭 main库 事务 参数: ctx: 开启 main库 事务返回的新的context txid: 开启 main库 事务返回的事务ID err: 判断是提交事务还是回滚事务

func (*GormTxManager) MainDB

func (s *GormTxManager) MainDB(ctx context.Context) *gorm.DB

MainDB 获取 main db,如果已经开启 main db tx,则返回 main db tx

func (*GormTxManager) MustMainTx

func (s *GormTxManager) MustMainTx(ctx context.Context) *gorm.DB

MustMainTx 获取 main db tx,如果已经开启 main db tx,则返回 main db tx,否则 panic

func (*GormTxManager) NonTx added in v1.0.9

NonTx 非事务上下文

func (*GormTxManager) OpenTx added in v1.1.0

func (s *GormTxManager) OpenTx(ctx context.Context, opts ...Option) (context.Context, uint64)

OpenTx 开启 main库 事务 return 新的context 与 事务ID

type MockDBTxManager added in v1.0.6

type MockDBTxManager struct {
	// contains filtered or unexported fields
}

MockDBTxManager is a mock of DBTxManager interface.

func NewMockDBTxManager added in v1.0.6

func NewMockDBTxManager(ctrl *gomock.Controller) *MockDBTxManager

NewMockDBTxManager creates a new mock instance.

func (*MockDBTxManager) AutoDB added in v1.0.6

func (m *MockDBTxManager) AutoDB(ctx context.Context) *gorm.DB

AutoDB mocks base method.

func (*MockDBTxManager) BackupDB added in v1.0.6

func (m *MockDBTxManager) BackupDB(ctx context.Context) *gorm.DB

BackupDB mocks base method.

func (*MockDBTxManager) CloseTx added in v1.1.0

func (m *MockDBTxManager) CloseTx(ctx context.Context, txid uint64, err *error)

CloseTx mocks base method.

func (*MockDBTxManager) EXPECT added in v1.0.6

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockDBTxManager) MainDB added in v1.0.6

func (m *MockDBTxManager) MainDB(ctx context.Context) *gorm.DB

MainDB mocks base method.

func (*MockDBTxManager) MustMainTx added in v1.0.6

func (m *MockDBTxManager) MustMainTx(ctx context.Context) *gorm.DB

MustMainTx mocks base method.

func (*MockDBTxManager) NonTx added in v1.1.0

NonTx mocks base method.

func (*MockDBTxManager) OpenTx added in v1.1.0

func (m *MockDBTxManager) OpenTx(ctx context.Context, opts ...Option) (context.Context, uint64)

OpenTx mocks base method.

type MockDBTxManagerMockRecorder added in v1.0.6

type MockDBTxManagerMockRecorder struct {
	// contains filtered or unexported fields
}

MockDBTxManagerMockRecorder is the mock recorder for MockDBTxManager.

func (*MockDBTxManagerMockRecorder) AutoDB added in v1.0.6

func (mr *MockDBTxManagerMockRecorder) AutoDB(ctx interface{}) *gomock.Call

AutoDB indicates an expected call of AutoDB.

func (*MockDBTxManagerMockRecorder) BackupDB added in v1.0.6

func (mr *MockDBTxManagerMockRecorder) BackupDB(ctx interface{}) *gomock.Call

BackupDB indicates an expected call of BackupDB.

func (*MockDBTxManagerMockRecorder) CloseTx added in v1.1.0

func (mr *MockDBTxManagerMockRecorder) CloseTx(ctx, txid, err interface{}) *gomock.Call

CloseTx indicates an expected call of CloseTx.

func (*MockDBTxManagerMockRecorder) MainDB added in v1.0.6

func (mr *MockDBTxManagerMockRecorder) MainDB(ctx interface{}) *gomock.Call

MainDB indicates an expected call of MainDB.

func (*MockDBTxManagerMockRecorder) MustMainTx added in v1.0.6

func (mr *MockDBTxManagerMockRecorder) MustMainTx(ctx interface{}) *gomock.Call

MustMainTx indicates an expected call of MustMainTx.

func (*MockDBTxManagerMockRecorder) NonTx added in v1.1.0

func (mr *MockDBTxManagerMockRecorder) NonTx(ctx interface{}) *gomock.Call

NonTx indicates an expected call of NonTx.

func (*MockDBTxManagerMockRecorder) OpenTx added in v1.1.0

func (mr *MockDBTxManagerMockRecorder) OpenTx(ctx interface{}, opts ...interface{}) *gomock.Call

OpenTx indicates an expected call of OpenTx.

type NameDB

type NameDB struct {
	Name string
	DB   *gorm.DB
}

type Option

type Option func(opt *options)

func StartupNewDBTx

func StartupNewDBTx() Option

StartupNewDBTx 开启一个新的事务

type Persistencer added in v1.0.3

type Persistencer interface {
	DBTxManager() DBTxManager
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL