sqlx icon indicating copy to clipboard operation
sqlx copied to clipboard

feat: add missing methods

Open TheSench opened this issue 1 year ago • 2 comments

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

TheSench avatar Aug 31 '24 02:08 TheSench

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.

mrj0 avatar Feb 06 '25 05:02 mrj0

I need this too

syrm avatar Oct 22 '25 09:10 syrm