Documentation ¶
Overview ¶
Package glsql (Gitaly SQL) is a helper package to work with plain SQL queries.
Index ¶
- func Clean() error
- func GetDBConfig(t testing.TB, database string) config.DB
- func Migrate(db *sql.DB, ignoreUnknown bool) (int, error)
- func OpenDB(conf config.DB) (*sql.DB, error)
- func ScanAll(rows *sql.Rows, in DestProvider) (err error)
- type DB
- type DestProvider
- type ListenHandler
- type MockQuerier
- type Notification
- type Querier
- type StringProvider
- type Uint64Provider
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Clean ¶
func Clean() error
Clean removes created schema if any and releases DB connection pool. It needs to be called only once after all tests for package are done. The best place to use it is TestMain(*testing.M) {...} after m.Run().
func GetDBConfig ¶
GetDBConfig returns the database configuration determined by environment variables. See GetDB() for the list of variables.
Types ¶
type DB ¶
DB is a helper struct that should be used only for testing purposes.
func GetDB ¶
GetDB returns a wrapper around the database connection pool. Must be used only for testing. The new `database` will be re-created for each package that uses this function. Each call will also truncate all tables with their identities restarted if any. The best place to call it is in individual testing functions. It uses env vars:
PGHOST - required, URL/socket/dir PGPORT - required, binding port PGUSER - optional, user - `$ whoami` would be used if not provided
func (DB) RequireRowsInTable ¶
RequireRowsInTable verifies that `tname` table has `n` amount of rows in it.
func (DB) Truncate ¶
Truncate removes all data from the list of tables and restarts identities for them.
func (DB) TruncateAll ¶
TruncateAll removes all data from known set of tables.
type DestProvider ¶
type DestProvider interface { // To returns list of pointers. // It is not an idempotent operation and each call will return a new list. To() []interface{} }
DestProvider returns list of pointers that will be used to scan values into.
type ListenHandler ¶
type ListenHandler interface { // Notification would be triggered once a new notification received. Notification(Notification) // Disconnect would be triggered once a connection to remote service is lost. // Passed in error will never be nil and will contain cause of the disconnection. Disconnect(error) // Connected would be triggered once a connection to remote service is established. Connected() }
ListenHandler contains a set of methods that would be called on corresponding notifications received.
type MockQuerier ¶
type MockQuerier struct { ExecContextFunc func(context.Context, string, ...interface{}) (sql.Result, error) QueryContextFunc func(context.Context, string, ...interface{}) (*sql.Rows, error) Querier }
MockQuerier allows for mocking database operations out.
func (MockQuerier) ExecContext ¶
func (m MockQuerier) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
ExecContext runs the mock's ExecContextFunc.
func (MockQuerier) QueryContext ¶
func (m MockQuerier) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
QueryContext runs the mock's QueryContextFunc.
type Notification ¶
type Notification struct { // Channel is a name of the receiving channel. Channel string // Payload is a payload of the notification. Payload string }
Notification represent a notification from the database.
type Querier ¶
type Querier interface { QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error) }
Querier is an abstraction on *sql.DB and *sql.Tx that allows to use their methods without awareness about actual type.
type StringProvider ¶
type StringProvider []*string
StringProvider allows ScanAll to read all rows and return the result as a slice.
func (*StringProvider) To ¶
func (p *StringProvider) To() []interface{}
To returns a list of pointers that will be used as a destination for scan operation.
func (*StringProvider) Values ¶
func (p *StringProvider) Values() []string
Values returns list of values read from *sql.Rows
type Uint64Provider ¶
type Uint64Provider []*uint64
Uint64Provider allows to use it with ScanAll function to read all rows into it and return result as a slice.
func (*Uint64Provider) To ¶
func (p *Uint64Provider) To() []interface{}
To returns a list of pointers that will be used as a destination for scan operation.
func (*Uint64Provider) Values ¶
func (p *Uint64Provider) Values() []uint64
Values returns list of values read from *sql.Rows