|
| 1 | +package sqlagent |
| 2 | + |
| 3 | +import ( |
| 4 | + "github.com/jmoiron/sqlx" |
| 5 | + "database/sql" |
| 6 | + "context" |
| 7 | + sq "gopkg.in/Masterminds/squirrel.v1" |
| 8 | +) |
| 9 | + |
| 10 | +var ( |
| 11 | + defaultAgent *SqlAgent |
| 12 | +) |
| 13 | + |
| 14 | +// Close SqlAgent inited by module init method. |
| 15 | +func Close() error { |
| 16 | + return defaultAgent.Close() |
| 17 | +} |
| 18 | + |
| 19 | +// DB return sqlx.DB held by module SqlAgent. |
| 20 | +func DB() *sqlx.DB { |
| 21 | + return defaultAgent.DB() |
| 22 | +} |
| 23 | + |
| 24 | +func Transaction(ctx context.Context, opt *sql.TxOptions, fn func(tx *sqlx.Tx) error) error { |
| 25 | + return defaultAgent.Transaction(ctx, opt, fn) |
| 26 | +} |
| 27 | + |
| 28 | +// InsertBuilder return squirrel.InsertBuilder for table into |
| 29 | +// into: insert table name |
| 30 | +func InsertBuilder(into string) sq.InsertBuilder { |
| 31 | + return defaultAgent.InsertBuilder(into) |
| 32 | +} |
| 33 | + |
| 34 | +func UpdateBuilder(table string) sq.UpdateBuilder { |
| 35 | + return defaultAgent.UpdateBuilder(table) |
| 36 | +} |
| 37 | + |
| 38 | +func DeleteBuilder(table string) sq.DeleteBuilder { |
| 39 | + return defaultAgent.DeleteBuilder(table) |
| 40 | +} |
| 41 | + |
| 42 | +func SelectBuilder(columns ...string) sq.SelectBuilder { |
| 43 | + return defaultAgent.SelectBuilder(columns...) |
| 44 | +} |
| 45 | + |
| 46 | +// ExecContext exec sql built by sq.InsertBuilder/sq.UpdateBuilder/sq.DeleteBuilder and return result. |
| 47 | +// builder: sq.InsertBuilder, sq.UpdateBuilder or sq.DeleteBuilder |
| 48 | +func ExecContext(ctx context.Context, builder sq.Sqlizer) (sql.Result, error) { |
| 49 | + return defaultAgent.ExecContext(ctx, builder) |
| 50 | +} |
| 51 | + |
| 52 | +// GetContext get one record by sql built by sq.SelectBuilder and scan to dest. |
| 53 | +// builder: sq.SelectBuilder |
| 54 | +func GetContext(ctx context.Context, builder sq.Sqlizer, dest interface{}) error { |
| 55 | + return defaultAgent.GetContext(ctx, builder, dest) |
| 56 | +} |
| 57 | + |
| 58 | +// SelectContext get one or multi records by sql built by sq.SelectBuilder and scan to dest. |
| 59 | +// builder: sq.SelectBuilder |
| 60 | +func SelectContext(ctx context.Context, builder sq.Sqlizer, dest interface{}) error { |
| 61 | + return defaultAgent.SelectContext(ctx, builder, dest) |
| 62 | +} |
0 commit comments