refactor: sqlstore inTransaction consolidated to one version, fixes #8376

This commit is contained in:
Torkel Ödegaard
2017-05-23 10:56:23 +02:00
parent 5e33b5fcfa
commit 359421b5e8
18 changed files with 70 additions and 105 deletions
+9 -28
View File
@@ -9,18 +9,21 @@ import (
sqlite3 "github.com/mattn/go-sqlite3"
)
type dbTransactionFunc func(sess *xorm.Session) error
type dbTransactionFunc2 func(sess *session) error
type session struct {
type DBSession struct {
*xorm.Session
events []interface{}
}
func (sess *session) publishAfterCommit(msg interface{}) {
type dbTransactionFunc func(sess *DBSession) error
func (sess *DBSession) publishAfterCommit(msg interface{}) {
sess.events = append(sess.events, msg)
}
func newSession() *DBSession {
return &DBSession{Session: x.NewSession()}
}
func inTransaction(callback dbTransactionFunc) error {
return inTransactionWithRetry(callback, 0)
}
@@ -28,7 +31,7 @@ func inTransaction(callback dbTransactionFunc) error {
func inTransactionWithRetry(callback dbTransactionFunc, retry int) error {
var err error
sess := x.NewSession()
sess := newSession()
defer sess.Close()
if err = sess.Begin(); err != nil {
@@ -54,28 +57,6 @@ func inTransactionWithRetry(callback dbTransactionFunc, retry int) error {
return err
}
return nil
}
func inTransaction2(callback dbTransactionFunc2) error {
var err error
sess := session{Session: x.NewSession()}
defer sess.Close()
if err = sess.Begin(); err != nil {
return err
}
err = callback(&sess)
if err != nil {
sess.Rollback()
return err
} else if err = sess.Commit(); err != nil {
return err
}
if len(sess.events) > 0 {
for _, e := range sess.events {
if err = bus.Publish(e); err != nil {