Skip to content

Commit

Permalink
Transaction => T
Browse files Browse the repository at this point in the history
  • Loading branch information
nimoc committed Jul 24, 2023
1 parent 7781828 commit a75a6c7
Show file tree
Hide file tree
Showing 9 changed files with 60 additions and 56 deletions.
10 changes: 5 additions & 5 deletions api.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ type Connecter interface {
Exec(ctx context.Context, query string, values []interface{}) (result Result, err error)

// 开启事务
Begin(ctx context.Context, level sql.IsolationLevel, handle func(tx *Transaction) TxResult) (rollbackNoError bool, err error)
BeginOpt(ctx context.Context, opt sql.TxOptions, handle func(tx *Transaction) TxResult) (rollbackNoError bool, err error)
Begin(ctx context.Context, level sql.IsolationLevel, handle func(tx *T) TxResult) (rollbackNoError bool, err error)
BeginOpt(ctx context.Context, opt sql.TxOptions, handle func(tx *T) TxResult) (rollbackNoError bool, err error)
// show status like "last_query_cost"
LastQueryCost(ctx context.Context) (lastQueryCost float64, err error)
// 打印 show status like "last_query_cost" 的结果
Expand All @@ -80,7 +80,7 @@ func verifyDoc() {

}(db)
tx := struct {
Transaction
T
onlyDB
}{}
func(Connecter) {
Expand All @@ -99,9 +99,9 @@ func (onlyDB) Close() error {
func (onlyDB) ClearTestData(ctx context.Context, qb QB) (result Result, err error) {
return
}
func (onlyDB) Begin(ctx context.Context, level sql.IsolationLevel, handle func(tx *Transaction) TxResult) (rollbackNoError bool, err error) {
func (onlyDB) Begin(ctx context.Context, level sql.IsolationLevel, handle func(tx *T) TxResult) (rollbackNoError bool, err error) {
return
}
func (onlyDB) BeginOpt(ctx context.Context, opt sql.TxOptions, handle func(tx *Transaction) TxResult) (rollbackNoError bool, err error) {
func (onlyDB) BeginOpt(ctx context.Context, opt sql.TxOptions, handle func(tx *T) TxResult) (rollbackNoError bool, err error) {
return
}
52 changes: 26 additions & 26 deletions db.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,10 @@ func (db *Database) Insert(ctx context.Context, qb QB) (result Result, err error
func (db *Database) InsertAffected(ctx context.Context, qb QB) (affected int64, err error) {
return RowsAffected(db.Insert(ctx, qb))
}
func (tx *Transaction) Insert(ctx context.Context, qb QB) (result Result, err error) {
func (tx *T) Insert(ctx context.Context, qb QB) (result Result, err error) {
return coreInsert(ctx, tx, qb)
}
func (tx *Transaction) InsertAffected(ctx context.Context, qb QB) (affected int64, err error) {
func (tx *T) InsertAffected(ctx context.Context, qb QB) (affected int64, err error) {
return RowsAffected(tx.Insert(ctx, qb))
}
func coreInsert(ctx context.Context, storager Storager, qb QB) (result Result, err error) {
Expand All @@ -89,10 +89,10 @@ func (db *Database) InsertModel(ctx context.Context, ptr Model, qb QB) (result R
func (db *Database) InsertModelAffected(ctx context.Context, ptr Model, qb QB) (affected int64, err error) {
return RowsAffected(coreInsertModel(ctx, db, ptr, qb))
}
func (tx *Transaction) InsertModel(ctx context.Context, ptr Model, qb QB) (result Result, err error) {
func (tx *T) InsertModel(ctx context.Context, ptr Model, qb QB) (result Result, err error) {
return coreInsertModel(ctx, tx, ptr, qb)
}
func (tx *Transaction) InsertModelAffected(ctx context.Context, ptr Model, qb QB) (affected int64, err error) {
func (tx *T) InsertModelAffected(ctx context.Context, ptr Model, qb QB) (affected int64, err error) {
return RowsAffected(coreInsertModel(ctx, tx, ptr, qb))
}

Expand Down Expand Up @@ -174,7 +174,7 @@ func (db *Database) QueryRowScan(ctx context.Context, qb QB, desc []interface{})
}
return coreQueryRowScan(ctx, db, qb, desc)
}
func (tx *Transaction) QueryRowScan(ctx context.Context, qb QB, desc []interface{}) (has bool, err error) {
func (tx *T) QueryRowScan(ctx context.Context, qb QB, desc []interface{}) (has bool, err error) {
return coreQueryRowScan(ctx, tx, qb, desc)
}
func coreQueryRowScan(ctx context.Context, storager Storager, qb QB, desc []interface{}) (has bool, err error) {
Expand Down Expand Up @@ -204,7 +204,7 @@ func (db *Database) QuerySliceScaner(ctx context.Context, qb QB, scan Scaner) (e
}
return coreQuerySliceScaner(ctx, db, qb, scan)
}
func (tx *Transaction) QuerySliceScaner(ctx context.Context, qb QB, scan Scaner) error {
func (tx *T) QuerySliceScaner(ctx context.Context, qb QB, scan Scaner) error {
return coreQuerySliceScaner(ctx, tx, qb, scan)
}
func coreQuerySliceScaner(ctx context.Context, storager Storager, qb QB, scan Scaner) (err error) {
Expand Down Expand Up @@ -246,7 +246,7 @@ func (db *Database) Query(ctx context.Context, ptr Tabler, qb QB) (has bool, err
}
return coreQuery(ctx, db, ptr, qb)
}
func (tx *Transaction) Query(ctx context.Context, ptr Tabler, qb QB) (has bool, err error) {
func (tx *T) Query(ctx context.Context, ptr Tabler, qb QB) (has bool, err error) {
return coreQuery(ctx, tx, ptr, qb)
}

Expand Down Expand Up @@ -281,7 +281,7 @@ func (db *Database) QuerySlice(ctx context.Context, slicePtr interface{}, qb QB)
}
return coreQuerySlice(ctx, db, slicePtr, qb)
}
func (tx *Transaction) QuerySlice(ctx context.Context, slicePtr interface{}, qb QB) (err error) {
func (tx *T) QuerySlice(ctx context.Context, slicePtr interface{}, qb QB) (err error) {
return coreQuerySlice(ctx, tx, slicePtr, qb)
}
func coreQuerySlice(ctx context.Context, storager Storager, slicePtr interface{}, qb QB) (err error) {
Expand Down Expand Up @@ -324,7 +324,7 @@ func (db *Database) Count(ctx context.Context, from Tabler, qb QB) (count uint64
}
return coreCount(ctx, db, from, qb)
}
func (tx *Transaction) Count(ctx context.Context, from Tabler, qb QB) (count uint64, err error) {
func (tx *T) Count(ctx context.Context, from Tabler, qb QB) (count uint64, err error) {
return coreCount(ctx, tx, from, qb)
}
func coreCount(ctx context.Context, storager Storager, from Tabler, qb QB) (count uint64, err error) {
Expand Down Expand Up @@ -362,7 +362,7 @@ func (db *Database) Has(ctx context.Context, from Tabler, qb QB) (has bool, err
}
return coreHas(ctx, db, from, qb)
}
func (tx *Transaction) Has(ctx context.Context, from Tabler, qb QB) (has bool, err error) {
func (tx *T) Has(ctx context.Context, from Tabler, qb QB) (has bool, err error) {
return coreHas(ctx, tx, from, qb)
}
func coreHas(ctx context.Context, storager Storager, from Tabler, qb QB) (has bool, err error) {
Expand All @@ -387,7 +387,7 @@ func (db *Database) SumInt64(ctx context.Context, from Tabler, column Column, qb
}
return value, err
}
func (tx *Transaction) SumInt64(ctx context.Context, from Tabler, column Column, qb QB) (value sql.NullInt64, err error) {
func (tx *T) SumInt64(ctx context.Context, from Tabler, column Column, qb QB) (value sql.NullInt64, err error) {
err = coreSum(ctx, tx, from, column, qb, &value)
if err != nil {
return
Expand All @@ -401,7 +401,7 @@ func (db *Database) SumFloat64(ctx context.Context, from Tabler, column Column,
}
return value, err
}
func (tx *Transaction) SumFloat64(ctx context.Context, from Tabler, column Column, qb QB) (value sql.NullFloat64, err error) {
func (tx *T) SumFloat64(ctx context.Context, from Tabler, column Column, qb QB) (value sql.NullFloat64, err error) {
err = coreSum(ctx, tx, from, column, qb, &value)
if err != nil {
return
Expand Down Expand Up @@ -434,10 +434,10 @@ func (db *Database) Update(ctx context.Context, from Tabler, qb QB) (result Resu
func (db *Database) UpdateAffected(ctx context.Context, from Tabler, qb QB) (affected int64, err error) {
return RowsAffected(coreUpdate(ctx, db, from, qb))
}
func (tx *Transaction) Update(ctx context.Context, from Tabler, qb QB) (result Result, err error) {
func (tx *T) Update(ctx context.Context, from Tabler, qb QB) (result Result, err error) {
return coreUpdate(ctx, tx, from, qb)
}
func (tx *Transaction) UpdateAffected(ctx context.Context, from Tabler, qb QB) (affected int64, err error) {
func (tx *T) UpdateAffected(ctx context.Context, from Tabler, qb QB) (affected int64, err error) {
return RowsAffected(coreUpdate(ctx, tx, from, qb))
}
func coreUpdate(ctx context.Context, storager Storager, from Tabler, qb QB) (result Result, err error) {
Expand Down Expand Up @@ -490,10 +490,10 @@ func (db *Database) HardDelete(ctx context.Context, qb QB) (result Result, err e
func (db *Database) HardDeleteAffected(ctx context.Context, qb QB) (affected int64, err error) {
return RowsAffected(coreHardDelete(ctx, db, qb))
}
func (tx *Transaction) HardDelete(ctx context.Context, qb QB) (result Result, err error) {
func (tx *T) HardDelete(ctx context.Context, qb QB) (result Result, err error) {
return coreHardDelete(ctx, tx, qb)
}
func (tx *Transaction) HardDeleteAffected(ctx context.Context, qb QB) (affected int64, err error) {
func (tx *T) HardDeleteAffected(ctx context.Context, qb QB) (affected int64, err error) {
return RowsAffected(coreHardDelete(ctx, tx, qb))
}
func coreHardDelete(ctx context.Context, storager Storager, qb QB) (result Result, err error) {
Expand All @@ -514,7 +514,7 @@ func coreHardDelete(ctx context.Context, storager Storager, qb QB) (result Resul
// func (db *Database) hardDeleteModel(ctx context.Context, ptr Model, qb QB) (result Result, err error){
// return coreHardDeleteModel(ctx,db, ptr, qb)
// }
// func (tx *Transaction) HardDeleteModel(ctx context.Context, ptr Model, qb QB) (result Result, err error){
// func (tx *T) HardDeleteModel(ctx context.Context, ptr Model, qb QB) (result Result, err error){
// return coreHardDeleteModel(ctx, tx, ptr, qb)
// }
// func coreHardDeleteModel(ctx context.Context, storager Storager, ptr Model, qb QB) (result Result, err error) {
Expand Down Expand Up @@ -544,10 +544,10 @@ func (db *Database) SoftDeleteAffected(ctx context.Context, qb QB) (affected int
return RowsAffected(coreSoftDelete(ctx, db, qb))
}

func (tx *Transaction) SoftDelete(ctx context.Context, qb QB) (result Result, err error) {
func (tx *T) SoftDelete(ctx context.Context, qb QB) (result Result, err error) {
return coreSoftDelete(ctx, tx, qb)
}
func (tx *Transaction) SoftDeleteAffected(ctx context.Context, qb QB) (affected int64, err error) {
func (tx *T) SoftDeleteAffected(ctx context.Context, qb QB) (affected int64, err error) {
return RowsAffected(coreSoftDelete(ctx, tx, qb))
}
func coreSoftDelete(ctx context.Context, storager Storager, qb QB) (result Result, err error) {
Expand Down Expand Up @@ -586,7 +586,7 @@ func (db *Database) QueryRelation(ctx context.Context, ptr Relation, qb QB) (has
}
return coreQueryRelation(ctx, db, ptr, qb)
}
func (tx *Transaction) QueryRelation(ctx context.Context, ptr Relation, qb QB) (has bool, err error) {
func (tx *T) QueryRelation(ctx context.Context, ptr Relation, qb QB) (has bool, err error) {
return coreQueryRelation(ctx, tx, ptr, qb)
}
func coreQueryRelation(ctx context.Context, storager Storager, ptr Relation, qb QB) (has bool, err error) {
Expand Down Expand Up @@ -629,7 +629,7 @@ func (db *Database) QueryRelationSlice(ctx context.Context, relationSlicePtr int
}
return coreQueryRelationSlice(ctx, db, relationSlicePtr, qb)
}
func (tx *Transaction) QueryRelationSlice(ctx context.Context, relationSlicePtr interface{}, qb QB) (err error) {
func (tx *T) QueryRelationSlice(ctx context.Context, relationSlicePtr interface{}, qb QB) (err error) {
return coreQueryRelationSlice(ctx, tx, relationSlicePtr, qb)
}
func coreQueryRelationSlice(ctx context.Context, storager Storager, relationSlicePtr interface{}, qb QB) (err error) {
Expand Down Expand Up @@ -672,7 +672,7 @@ func coreQueryRelationSlice(ctx context.Context, storager Storager, relationSlic
func (db *Database) Exec(ctx context.Context, query string, values []interface{}) (result Result, err error) {
return coreExec(ctx, db, query, values)
}
func (tx *Transaction) Exec(ctx context.Context, query string, values []interface{}) (result Result, err error) {
func (tx *T) Exec(ctx context.Context, query string, values []interface{}) (result Result, err error) {
return coreExec(ctx, tx, query, values)
}
func coreExec(ctx context.Context, storager Storager, query string, values []interface{}) (result Result, err error) {
Expand All @@ -693,10 +693,10 @@ func (db *Database) ExecQB(ctx context.Context, qb QB, statement Statement) (res
func (db *Database) ExecQBAffected(ctx context.Context, qb QB, statement Statement) (affected int64, err error) {
return RowsAffected(coreExecQB(ctx, db, qb, statement))
}
func (tx *Transaction) ExecQB(ctx context.Context, qb QB, statement Statement) (result Result, err error) {
func (tx *T) ExecQB(ctx context.Context, qb QB, statement Statement) (result Result, err error) {
return coreExecQB(ctx, tx, qb, statement)
}
func (tx *Transaction) ExecQBAffected(ctx context.Context, qb QB, statement Statement) (affected int64, err error) {
func (tx *T) ExecQBAffected(ctx context.Context, qb QB, statement Statement) (affected int64, err error) {
return RowsAffected(coreExecQB(ctx, tx, qb, statement))
}
func coreExecQB(ctx context.Context, storager Storager, qb QB, statement Statement) (result Result, err error) {
Expand All @@ -716,7 +716,7 @@ func coreExecQB(ctx context.Context, storager Storager, qb QB, statement Stateme
func (db *Database) LastQueryCost(ctx context.Context) (lastQueryCost float64, err error) {
return coreLastQueryCost(ctx, db)
}
func (tx *Transaction) LastQueryCost(ctx context.Context) (lastQueryCost float64, err error) {
func (tx *T) LastQueryCost(ctx context.Context) (lastQueryCost float64, err error) {
return coreLastQueryCost(ctx, tx)
}
func coreLastQueryCost(ctx context.Context, storager Storager) (lastQueryCost float64, err error) {
Expand All @@ -739,7 +739,7 @@ func coreLastQueryCost(ctx context.Context, storager Storager) (lastQueryCost fl
func (db *Database) PrintLastQueryCost(ctx context.Context) {
corePrintLastQueryCost(ctx, db)
}
func (tx *Transaction) PrintLastQueryCost(ctx context.Context) {
func (tx *T) PrintLastQueryCost(ctx context.Context) {
corePrintLastQueryCost(ctx, tx)
}
func corePrintLastQueryCost(ctx context.Context, storager Storager) {
Expand Down
10 changes: 5 additions & 5 deletions db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1074,7 +1074,7 @@ func (suite TestDBSuite) TestTransaction() {
}
{
var execed bool
rollbackNoError, err := testDB.Begin(context.TODO(), sql.LevelReadCommitted, func(tx *sq.Transaction) sq.TxResult {
rollbackNoError, err := testDB.Begin(context.TODO(), sql.LevelReadCommitted, func(tx *sq.T) sq.TxResult {
execed = true
_, err := tx.InsertModel(context.TODO(), &User{Name: "TestTransaction_1"}, sq.QB{Reviews: []string{"INSERT INTO `user` (`id`,`name`,`age`,`created_at`,`updated_at`) VALUES {#VALUES#}"}})
assert.NoError(t, err)
Expand All @@ -1100,7 +1100,7 @@ func (suite TestDBSuite) TestTransaction() {
}
{
var execed bool
rollbackNoError, err := testDB.Begin(context.TODO(), sql.LevelReadCommitted, func(tx *sq.Transaction) sq.TxResult {
rollbackNoError, err := testDB.Begin(context.TODO(), sql.LevelReadCommitted, func(tx *sq.T) sq.TxResult {
execed = true
_, err := tx.InsertModel(context.TODO(), &User{Name: "TestTransaction_2"}, sq.QB{Reviews: []string{"INSERT INTO `user` (`id`,`name`,`age`,`created_at`,`updated_at`) VALUES (?,?,?,?,?)"}})
assert.NoError(t, err)
Expand Down Expand Up @@ -1128,7 +1128,7 @@ func (suite TestDBSuite) TestTransaction() {
}
{
var execed bool
rollbackNoError, err := testDB.Begin(context.TODO(), sql.LevelReadCommitted, func(tx *sq.Transaction) sq.TxResult {
rollbackNoError, err := testDB.Begin(context.TODO(), sql.LevelReadCommitted, func(tx *sq.T) sq.TxResult {
execed = true
_, err := tx.InsertModel(context.TODO(), &User{Name: "TestTransaction_3"}, sq.QB{Reviews: []string{"INSERT INTO `user` (`id`,`name`,`age`,`created_at`,`updated_at`) VALUES (?,?,?,?,?)"}})
assert.NoError(t, err)
Expand Down Expand Up @@ -1312,7 +1312,7 @@ func TestInsertNullInt(t *testing.T) {

func TestErrTransactionIsRollback(t *testing.T) {
ctx := context.Background()
rollbackNoError, err := testDB.Begin(ctx, sq.RC, func(tx *sq.Transaction) sq.TxResult {
rollbackNoError, err := testDB.Begin(ctx, sq.RC, func(tx *sq.T) sq.TxResult {
return tx.Rollback()
})
assert.NoError(t, err)
Expand All @@ -1322,7 +1322,7 @@ func TestErrTransactionIsRollback(t *testing.T) {
func TestLastQueryCost(t *testing.T) {
ctx := context.Background()
{
rollbackNoError, err := testDB.Begin(ctx, sq.LevelReadCommitted, func(tx *sq.Transaction) sq.TxResult {
rollbackNoError, err := testDB.Begin(ctx, sq.RC, func(tx *sq.T) sq.TxResult {
cost, err := tx.LastQueryCost(ctx)
if err != nil {
return tx.RollbackWithError(err)
Expand Down
2 changes: 1 addition & 1 deletion example/internal/relation/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func example(ctx context.Context) (err error) {
// 准备数据
var insertUser m.User
// 多表插入一定要用事务,否则无法保证数据一致性
rollbackNoError, err := db.Begin(ctx, sq.LevelReadCommitted, func(tx *sq.Transaction) sq.TxResult {
rollbackNoError, err := db.Begin(ctx, sq.LevelReadCommitted, func(tx *sq.T) sq.TxResult {
db := false
_ = db // 一般情况下事务中都是使用tx所以重新声明变量db 防止在 tx 中使用db
insertUser = m.User{
Expand Down
8 changes: 4 additions & 4 deletions incr_decr.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package sq

// 递增存在并发问题,现在不满意目前设计的接口,等以后在想怎么设计 2021年02月02日10:32:15 @nimoc。
// // 递减可能存在并发问题,所以只在事务中处理
// func (tx *Transaction) DecrementIntModel(ctx context.Context, ptr Model, props IncrementInt, checkSQL ...string) (affected bool, err error) {
// func (tx *T) DecrementIntModel(ctx context.Context, ptr Model, props IncrementInt, checkSQL ...string) (affected bool, err error) {
// field := props.Column.wrapField()
// result, err := coreUpdateModel(ctx, tx.Core, ptr, []Data{
// {
Expand Down Expand Up @@ -38,7 +38,7 @@ package sq
// OnUpdated func(value float64) error
// }
// // 递减可能存在并发问题,所以只在事务中处理
// func (tx *Transaction) DecrementFloatModel(ctx context.Context, ptr Model, props IncrementFloat, checkSQL ...string) (affected bool, err error) {
// func (tx *T) DecrementFloatModel(ctx context.Context, ptr Model, props IncrementFloat, checkSQL ...string) (affected bool, err error) {
// field := props.Column.wrapField()
// result, err := coreUpdateModel(ctx, tx.Core, ptr, []Data{
// {
Expand Down Expand Up @@ -80,7 +80,7 @@ package sq
// OnUpdated func(value uint) error
// }
// // 递增可能存在并发问题,所以只在事务中处理
// func (tx *Transaction) IncrementIntModel(ctx context.Context, ptr Model, props IncrementInt) (affected bool, err error) {
// func (tx *T) IncrementIntModel(ctx context.Context, ptr Model, props IncrementInt) (affected bool, err error) {
// field := props.Column.wrapField()
// result, err := db.UpdateModel(ctx, ptr, []Data{
// {
Expand Down Expand Up @@ -115,7 +115,7 @@ package sq
// AfterIncrementLessThanOrEqual Column
// OnUpdated func(value float64) error
// }
// func (tx *Transaction) IncrementFloatModel(ctx context.Context, ptr Model, props IncrementFloat) (affected bool, err error) {
// func (tx *T) IncrementFloatModel(ctx context.Context, ptr Model, props IncrementFloat) (affected bool, err error) {
// field := props.Column.wrapField()
// result, err := tx.UpdateModel(ctx, ptr, []Data{
// {
Expand Down
4 changes: 2 additions & 2 deletions queue.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ type Publish struct {
Priority uint8 `default:"100"`
}

func (tx *Transaction) PublishMessage(ctx context.Context, queueName string, publish Publish) (message Message, err error) {
func (tx *T) PublishMessage(ctx context.Context, queueName string, publish Publish) (message Message, err error) {
if queueName == "" {
err = xerr.New("goclub/sql: Transaction{}.PublishMessage(ctx, queueName, publish) queue can not be empty string")
err = xerr.New("goclub/sql: T{}.PublishMessage(ctx, queueName, publish) queue can not be empty string")
return
}
if publish.Priority == 0 {
Expand Down
2 changes: 1 addition & 1 deletion queue_message.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ func (message Message) execRequeue(db *Database) (err error) {
func (message Message) execDeadLetter(db *Database, reason string) (err error) {
ctx := context.Background()
var rollbackNoError bool
if rollbackNoError, err = db.Begin(ctx, sql.LevelReadCommitted, func(tx *Transaction) TxResult {
if rollbackNoError, err = db.Begin(ctx, sql.LevelReadCommitted, func(tx *T) TxResult {
if _, err = tx.HardDelete(ctx, QB{
From: &message,
Where: And("id", Equal(message.ID)),
Expand Down
2 changes: 1 addition & 1 deletion queue_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ func TestQueueMessage(t *testing.T) {
return err
}
// 发布消息
rollbackNoError, err := db.Begin(ctx, sql.LevelReadCommitted, func(tx *sq.Transaction) sq.TxResult {
rollbackNoError, err := db.Begin(ctx, sql.LevelReadCommitted, func(tx *sq.T) sq.TxResult {
_, err := tx.PublishMessage(ctx, queueName, sq.Publish{
NextConsumeTime: time.Nanosecond,
BusinessID: 1,
Expand Down
Loading

0 comments on commit a75a6c7

Please sign in to comment.