Add change log Support RollbackUnlessCommit
This commit is contained in:
parent
c5bd3c3996
commit
629d592003
@ -6,6 +6,7 @@
|
||||
- Add sonar check and ignore test. [4432](https://github.com/beego/beego/pull/4432) [4433](https://github.com/beego/beego/pull/4433)
|
||||
- Update changlog.yml to check every PR to develop branch.[4427](https://github.com/beego/beego/pull/4427)
|
||||
- Fix 4396: Add context.param module into adapter. [4398](https://github.com/beego/beego/pull/4398)
|
||||
- Support `RollbackUnlessCommit` API. [4542](https://github.com/beego/beego/pull/4542)
|
||||
- Remove `duration` from prometheus labels. [4391](https://github.com/beego/beego/pull/4391)
|
||||
- Fix `unknown escape sequence` in generated code. [4385](https://github.com/beego/beego/pull/4385)
|
||||
- Using fixed name `commentRouter.go` as generated file name. [4385](https://github.com/beego/beego/pull/4385)
|
||||
|
||||
@ -503,6 +503,22 @@ func (f *filterOrmDecorator) Rollback() error {
|
||||
return f.convertError(res[0])
|
||||
}
|
||||
|
||||
func (f *filterOrmDecorator) RollbackUnlessCommit() error {
|
||||
inv := &Invocation{
|
||||
Method: "RollbackUnlessCommit",
|
||||
Args: []interface{}{},
|
||||
InsideTx: f.insideTx,
|
||||
TxStartTime: f.txStartTime,
|
||||
TxName: f.txName,
|
||||
f: func(c context.Context) []interface{} {
|
||||
err := f.TxCommitter.RollbackUnlessCommit()
|
||||
return []interface{}{err}
|
||||
},
|
||||
}
|
||||
res := f.root(context.Background(), inv)
|
||||
return f.convertError(res[0])
|
||||
}
|
||||
|
||||
func (f *filterOrmDecorator) convertError(v interface{}) error {
|
||||
if v == nil {
|
||||
return nil
|
||||
|
||||
@ -402,6 +402,10 @@ func (f *filterMockOrm) Rollback() error {
|
||||
return errors.New("rollback")
|
||||
}
|
||||
|
||||
func (f *filterMockOrm) RollbackUnlessCommit() error {
|
||||
return errors.New("rollback unless commit")
|
||||
}
|
||||
|
||||
func (f *filterMockOrm) DBStats() *sql.DBStats {
|
||||
return &sql.DBStats{
|
||||
MaxOpenConnections: -1,
|
||||
|
||||
@ -160,3 +160,8 @@ func MockCommit(err error) *Mock {
|
||||
func MockRollback(err error) *Mock {
|
||||
return NewMock(NewSimpleCondition("", "Rollback"), []interface{}{err}, nil)
|
||||
}
|
||||
|
||||
// MockRollbackUnlessCommit support RollbackUnlessCommit
|
||||
func MockRollbackUnlessCommit(err error) *Mock {
|
||||
return NewMock(NewSimpleCondition("", "RollbackUnlessCommit"), []interface{}{err}, nil)
|
||||
}
|
||||
@ -241,6 +241,19 @@ func TestTransactionRollback(t *testing.T) {
|
||||
assert.Equal(t, mock, err)
|
||||
}
|
||||
|
||||
func TestTransactionRollbackUnlessCommit(t *testing.T) {
|
||||
s := StartMock()
|
||||
defer s.Clear()
|
||||
mock := errors.New(mockErrorMsg)
|
||||
s.Mock(MockRollbackUnlessCommit(mock))
|
||||
|
||||
//u := &User{}
|
||||
o := orm.NewOrm()
|
||||
txOrm, _ := o.Begin()
|
||||
err := txOrm.RollbackUnlessCommit()
|
||||
assert.Equal(t, mock, err)
|
||||
}
|
||||
|
||||
func TestTransactionCommit(t *testing.T) {
|
||||
s := StartMock()
|
||||
defer s.Clear()
|
||||
|
||||
@ -206,6 +206,13 @@ func (d *dbQueryLog) Rollback() error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *dbQueryLog) RollbackUnlessCommit() error {
|
||||
a := time.Now()
|
||||
err := d.db.(txEnder).RollbackUnlessCommit()
|
||||
debugLogQueies(d.alias, "tx.RollbackUnlessCommit", "ROLLBACK UNLESS COMMIT", a, err)
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *dbQueryLog) SetDB(db dbQuerier) {
|
||||
d.db = db
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user