feat: add missing methods
This PR adds some missing methods to flesh out interfaces and make DB and Tx have more of a shared interface.
This opens up the possibility of creating a common interface that represents either one so that functions can be written that execute queries without needing to know if they're being run within a transaction or not.
- [ ] TODO: Add unit tests. I wasn't sure how the tests were organized for this project. If there's a specific test function you'd like them added to (or a new one), let me know.
📌 Long-term (future PR), I'd like to create an interface (or a few) that represent the remaining shared query-related methods, and then one interface that represents either a DB or Tx. These are the additional methods not represented in another interface right now:
-
Get(dest interface{}, query string, args ...interface{}) error -
GetContext(ctx context.Context, dest interface{}, query string, args ...interface{}) error -
MustExec(query string, args ...interface{}) sql.Result -
MustExecContext(ctx context.Context, query string, args ...interface{}) sql.Result -
NamedExec(query string, arg interface{}) (sql.Result, error) -
NamedExecContext(ctx context.Context, query string, arg interface{}) (sql.Result, error) -
NamedQuery(query string, arg interface{}) (*sqlx.Rows, error) -
NamedQueryContext(ctx context.Context, query string, arg interface{}) (*sqlx.Rows, error) -
PrepareNamed(query string) (*sqlx.NamedStmt, error) -
PrepareNamedContext(ctx context.Context, query string) (*sqlx.NamedStmt, error) -
Preparex(query string) (*sqlx.Stmt, error) -
PreparexContext(ctx context.Context, query string) (*sqlx.Stmt, error) -
Select(dest interface{}, query string, args ...interface{}) error -
SelectContext(ctx context.Context, dest interface{}, query string, args ...interface{}) error
I ran into this too! Totally agree, there should be a common interface. I ended up making one for the subset of methods that we use, but it can be easier.
I need this too