query

package
v0.0.0-...-d2438c5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 20, 2019 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package query implements helpers around database/sql to execute various kinds of very common SQL queries.

Index

Constants

This section is empty.

Variables

View Source
var StmtCount = func(table, where string) string {
	stmt := fmt.Sprintf("SELECT COUNT(*) FROM %s", table)
	if where != "" {
		stmt += fmt.Sprintf(" WHERE %s", where)
	}
	return stmt
}

StmtCount provides a function for creating the sql template for querying.

Functions

func Count

func Count(tx database.Tx, table, where string, args ...interface{}) (int, error)

Count returns the number of rows in the given table.

func DeleteConfig

func DeleteConfig(tx database.Tx, table string, keys []string) error

DeleteConfig defines a way to delete the given key rows from the given config table.

func DeleteObject

func DeleteObject(tx database.Tx, table string, id int64) (bool, error)

DeleteObject removes the row identified by the given ID. The given table must have a primary key column called 'id'.

It returns a flag indicating if a matching row was actually found and deleted or not.

func InsertStrings

func InsertStrings(tx database.Tx, stmt string, values []string) error

InsertStrings inserts a new row for each of the given strings, using the given insert statement template, which must define exactly one insertion column and one substitution placeholder for the values. For example: InsertStrings(tx, "INSERT INTO foo(name) VALUES %s", []string{"bar"}).

func IsRetriableError

func IsRetriableError(err error) bool

IsRetriableError returns true if the given error might be transient and the interaction can be safely retried.

func Params

func Params(n int) string

Params returns a parameters expression with the given number of '?' placeholders. E.g. Params(2) -> "(?, ?)". Useful for IN and VALUES expressions.

func Retry

func Retry(sleeper clock.Sleeper, f func() error) error

Retry wraps a function that interacts with the database, and retries it in case a transient error is hit.

This should by typically used to wrap transactions.

func SelectConfig

func SelectConfig(tx database.Tx, table string, where string, args ...interface{}) (map[string]string, error)

SelectConfig executes a query statement against a "config" table, which must have 'key' and 'value' columns. By default this query returns all keys, but additional WHERE filters can be specified.

Returns a map of key names to their associated values.

func SelectIntegers

func SelectIntegers(tx database.Tx, query string, args ...interface{}) ([]int, error)

SelectIntegers executes a statement which must yield rows with a single integer column. It returns the list of column values.

func SelectObjects

func SelectObjects(tx database.Tx, dest Dest, query string, args ...interface{}) error

SelectObjects executes a statement which must yield rows with a specific columns schema. It invokes the given Dest hook for each yielded row.

func SelectStrings

func SelectStrings(tx database.Tx, query string, args ...interface{}) ([]string, error)

SelectStrings executes a statement which must yield rows with a single string column. It returns the list of column values.

func Transaction

func Transaction(db database.DB, f func(database.Tx) error) error

Transaction executes the given function within a database transaction.

func UpdateConfig

func UpdateConfig(tx database.Tx, table string, values map[string]string) error

UpdateConfig updates the given keys in the given table. Config keys set to empty values will be deleted.

func UpsertConfig

func UpsertConfig(tx database.Tx, table string, values map[string]string) error

UpsertConfig defines a way to Insert or updates the key/value rows of the given config table.

func UpsertObject

func UpsertObject(tx database.Tx, table string, columns []string, values []interface{}) (int64, error)

UpsertObject inserts or replaces a new row with the given column values, to the given table using columns order. For example:

UpsertObject(tx, "cars", []string{"id", "brand"}, []interface{}{1, "ferrari"})

The number of elements in 'columns' must match the one in 'values'.

Types

type Dest

type Dest func(i int) []interface{}

Dest is a function that is expected to return the objects to pass to the 'dest' argument of sql.Rows.Scan(). It is invoked by SelectObjects once per yielded row, and it will be passed the index of the row being scanned.

Directories

Path Synopsis
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL