-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsqlwrapper.go
More file actions
47 lines (41 loc) · 1.77 KB
/
sqlwrapper.go
File metadata and controls
47 lines (41 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package sqlwrapper
import (
"context"
"database/sql"
)
// Querier can execute queries to the db.
type Querier interface {
// Exec executes query without returning db rows, e.g. simple delete/update/insert.
Exec(ctx context.Context, queryBuilder SQLBuilder) (sql.Result, error)
// Get executes query returning potentially multiple db rows.
Get(ctx context.Context, dest any, queryBuilder SQLBuilder) error
// GetOne executes query returning either a single row or nothing (in this case sql.ErrNoRows is returned).
GetOne(ctx context.Context, dest any, queryBuilder SQLBuilder) error
}
type QuerierRaw interface {
// ExecRaw executes query without returning db rows, e.g. simple delete/update/insert.
// It works exactly like Querier.Exec, but expects raw sql query and args instead of sql query builder.
ExecRaw(ctx context.Context, query string, args ...any) (sql.Result, error)
// GetRaw executes query returning potentially multiple db rows.
// It works exactly like Querier.Get, but expects raw sql query and args instead of sql query builder.
GetRaw(ctx context.Context, dest any, query string, args ...any) error
// GetOneRaw executes query returning either a single row or nothing (in this case sql.ErrNoRows is returned).
// It works exactly like Querier.GetOne, but expects raw sql query and args instead of sql query builder.
GetOneRaw(ctx context.Context, dest any, query string, args ...any) error
}
type DBConnPool interface {
Querier
QuerierRaw
Close() error
BeginTx(ctx context.Context, opts *sql.TxOptions) (Tx, error)
RunInTx(ctx context.Context, callback func(ctx context.Context, tx Tx) error) error
}
type Tx interface {
Querier
QuerierRaw
Commit() error
Rollback() error
}
type SQLBuilder interface {
ToSql() (sqlStr string, args []interface{}, err error)
}