Skip to content

Commit a1278e6

Browse files
committed
feat: add curd for transaction
1 parent a001b5f commit a1278e6

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

sqlagent.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,3 +134,32 @@ func (a *SqlAgent) SelectContext(ctx context.Context, builder sq.Sqlizer, dest i
134134
return a.db.SelectContext(ctx, dest, sqlStr, args...)
135135
}
136136

137+
// TxExecContext exec sql built by sq.InsertBuilder/sq.UpdateBuilder/sq.DeleteBuilder and return result.
138+
// builder: sq.InsertBuilder, sq.UpdateBuilder or sq.DeleteBuilder
139+
func TxExecContext(ctx context.Context, tx *sqlx.Tx, builder sq.Sqlizer) (sql.Result, error) {
140+
sqlStr, args, err := builder.ToSql()
141+
if err != nil {
142+
return nil, err
143+
}
144+
return tx.ExecContext(ctx, sqlStr, args...)
145+
}
146+
147+
// TxGetContext get one record by sql built by sq.SelectBuilder and scan to dest.
148+
// builder: sq.SelectBuilder
149+
func TxGetContext(ctx context.Context, tx *sqlx.Tx, builder sq.Sqlizer, dest interface{}) error {
150+
sqlStr, args, err := builder.ToSql()
151+
if err != nil {
152+
return err
153+
}
154+
return tx.GetContext(ctx, dest, sqlStr, args...)
155+
}
156+
157+
// TxSelectContext get one or multi records by sql built by sq.SelectBuilder and scan to dest.
158+
// builder: sq.SelectBuilder
159+
func TxSelectContext(ctx context.Context, tx *sqlx.Tx, builder sq.Sqlizer, dest interface{}) error {
160+
sqlStr, args, err := builder.ToSql()
161+
if err != nil {
162+
return err
163+
}
164+
return tx.SelectContext(ctx, dest, sqlStr, args...)
165+
}

0 commit comments

Comments
 (0)