mirror of
https://github.com/astaxie/beego.git
synced 2024-11-22 16:50:54 +00:00
parent
2909ff3366
commit
5bcde306ea
@ -105,61 +105,17 @@ func (ac *_dbCache) getDefault() (al *alias) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type DB struct {
|
type DB struct {
|
||||||
inTx bool
|
|
||||||
tx *sql.Tx
|
|
||||||
*sync.RWMutex
|
*sync.RWMutex
|
||||||
DB *sql.DB
|
DB *sql.DB
|
||||||
stmts map[string]*sql.Stmt
|
stmts map[string]*sql.Stmt
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DB) Begin() (*sql.Tx, error) {
|
func (d *DB) Begin() (*sql.Tx, error) {
|
||||||
if d.inTx {
|
return d.DB.Begin()
|
||||||
return nil, ErrTxHasBegan
|
|
||||||
}
|
|
||||||
tx, err := d.DB.Begin()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
d.inTx = true
|
|
||||||
d.tx = tx
|
|
||||||
return d.tx, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DB) BeginTx(ctx context.Context, opts *sql.TxOptions) (*sql.Tx, error) {
|
func (d *DB) BeginTx(ctx context.Context, opts *sql.TxOptions) (*sql.Tx, error) {
|
||||||
if d.inTx {
|
return d.DB.BeginTx(ctx, opts)
|
||||||
return nil, ErrTxHasBegan
|
|
||||||
}
|
|
||||||
tx, err := d.DB.BeginTx(ctx, opts)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
d.inTx = true
|
|
||||||
d.tx = tx
|
|
||||||
return d.tx, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *DB) Commit() error {
|
|
||||||
if !d.inTx {
|
|
||||||
return ErrTxDone
|
|
||||||
}
|
|
||||||
err := d.tx.Commit()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
d.inTx = false
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *DB) Rollback() error {
|
|
||||||
if !d.inTx {
|
|
||||||
return ErrTxDone
|
|
||||||
}
|
|
||||||
err := d.tx.Commit()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
d.inTx = false
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DB) getStmt(query string) (*sql.Stmt, error) {
|
func (d *DB) getStmt(query string) (*sql.Stmt, error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user