v0.0.351 sq value converter
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 2m30s

This commit is contained in:
2023-12-29 19:25:36 +01:00
parent 6e90239fef
commit f9ccafb976
12 changed files with 280 additions and 111 deletions

View File

@@ -17,35 +17,35 @@ const (
)
type Tx interface {
Queryable
Rollback() error
Commit() error
Status() TxStatus
Exec(ctx context.Context, sql string, prep PP) (sql.Result, error)
Query(ctx context.Context, sql string, prep PP) (*sqlx.Rows, error)
}
type transaction struct {
tx *sqlx.Tx
id uint16
lstr []Listener
status TxStatus
execCtr int
queryCtr int
db *database
}
func NewTransaction(xtx *sqlx.Tx, txid uint16, lstr []Listener) Tx {
func NewTransaction(xtx *sqlx.Tx, txid uint16, db *database) Tx {
return &transaction{
tx: xtx,
id: txid,
lstr: lstr,
status: TxStatusInitial,
execCtr: 0,
queryCtr: 0,
db: db,
}
}
func (tx *transaction) Rollback() error {
for _, v := range tx.lstr {
for _, v := range tx.db.lstr {
err := v.PreTxRollback(tx.id)
if err != nil {
return err
@@ -58,7 +58,7 @@ func (tx *transaction) Rollback() error {
tx.status = TxStatusRollback
}
for _, v := range tx.lstr {
for _, v := range tx.db.lstr {
v.PostTxRollback(tx.id, result)
}
@@ -66,7 +66,7 @@ func (tx *transaction) Rollback() error {
}
func (tx *transaction) Commit() error {
for _, v := range tx.lstr {
for _, v := range tx.db.lstr {
err := v.PreTxCommit(tx.id)
if err != nil {
return err
@@ -79,7 +79,7 @@ func (tx *transaction) Commit() error {
tx.status = TxStatusComitted
}
for _, v := range tx.lstr {
for _, v := range tx.db.lstr {
v.PostTxRollback(tx.id, result)
}
@@ -88,7 +88,7 @@ func (tx *transaction) Commit() error {
func (tx *transaction) Exec(ctx context.Context, sqlstr string, prep PP) (sql.Result, error) {
origsql := sqlstr
for _, v := range tx.lstr {
for _, v := range tx.db.lstr {
err := v.PreExec(ctx, langext.Ptr(tx.id), &sqlstr, &prep)
if err != nil {
return nil, err
@@ -101,7 +101,7 @@ func (tx *transaction) Exec(ctx context.Context, sqlstr string, prep PP) (sql.Re
tx.status = TxStatusActive
}
for _, v := range tx.lstr {
for _, v := range tx.db.lstr {
v.PostExec(langext.Ptr(tx.id), origsql, sqlstr, prep)
}
@@ -113,7 +113,7 @@ func (tx *transaction) Exec(ctx context.Context, sqlstr string, prep PP) (sql.Re
func (tx *transaction) Query(ctx context.Context, sqlstr string, prep PP) (*sqlx.Rows, error) {
origsql := sqlstr
for _, v := range tx.lstr {
for _, v := range tx.db.lstr {
err := v.PreQuery(ctx, langext.Ptr(tx.id), &sqlstr, &prep)
if err != nil {
return nil, err
@@ -126,7 +126,7 @@ func (tx *transaction) Query(ctx context.Context, sqlstr string, prep PP) (*sqlx
tx.status = TxStatusActive
}
for _, v := range tx.lstr {
for _, v := range tx.db.lstr {
v.PostQuery(langext.Ptr(tx.id), origsql, sqlstr, prep)
}
@@ -140,6 +140,10 @@ func (tx *transaction) Status() TxStatus {
return tx.status
}
func (tx *transaction) ListConverter() []DBTypeConverter {
return tx.db.conv
}
func (tx *transaction) Traffic() (int, int) {
return tx.execCtr, tx.queryCtr
}