package db import ( "context" "database/sql" ) // DBTX is the interface that both *sql.DB and *sql.Tx satisfy. type DBTX interface { ExecContext(context.Context, string, ...interface{}) (sql.Result, error) PrepareContext(context.Context, string) (*sql.Stmt, error) QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error) QueryRowContext(context.Context, string, ...interface{}) *sql.Row } // New creates a new Queries instance. func New(db DBTX) *Queries { return &Queries{db: db} } // Queries provides database query methods. type Queries struct { db DBTX } // WithTx returns a new Queries instance backed by the given transaction. func (q *Queries) WithTx(tx *sql.Tx) *Queries { return &Queries{ db: tx, } }