queries

package
v0.0.0-...-cc80eb7 Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2024 License: BSD-3-Clause Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	JoinInner joinKind = iota
	JoinOuterLeft
	JoinOuterRight
	JoinNatural
)

Join type constants

Variables

This section is empty.

Functions

func AppendFrom

func AppendFrom(q *Query, from ...string)

AppendFrom on the query.

func AppendGroupBy

func AppendGroupBy(q *Query, clause string)

AppendGroupBy on the query.

func AppendHaving

func AppendHaving(q *Query, clause string, args ...interface{})

AppendHaving on the query.

func AppendIn

func AppendIn(q *Query, clause string, args ...interface{})

AppendIn on the query.

func AppendInnerJoin

func AppendInnerJoin(q *Query, clause string, args ...interface{})

AppendInnerJoin on the query.

func AppendLoad

func AppendLoad(q *Query, relationships ...string)

AppendLoad on the query.

func AppendOrderBy

func AppendOrderBy(q *Query, clause string)

AppendOrderBy on the query.

func AppendSelect

func AppendSelect(q *Query, fields ...string)

AppendSelect on the query.

func AppendWhere

func AppendWhere(q *Query, clause string, args ...interface{})

AppendWhere on the query.

func Bind

func Bind(rows *sql.Rows, obj interface{}) error

Bind executes the query and inserts the result into the passed in object pointer

Bind rules:

  • Struct tags control bind, in the form of: `bunny:"name,bind,null:valid_column_name"`
  • If the `bunny` struct tag is not present, the field will be completely ignored.
  • The "name" part specifies the SQL column name that will be bound to this field.
  • If the ",bind" option is specified on a field of struct type, Bind will recurse into it to look for fields for binding. "name" is appended as a prefix to the SQL column names of the inner fields.
  • If the ",null:valid_column_name" option is specified in addition to ",bind", the SQL boolean column "valid_column_name" is used to tell whether the nested struct is valid (not null) or not (null).

func BuildUpsertQueryMSSQL

func BuildUpsertQueryMSSQL(dia Dialect, modelName string, primary, update, insert []string, output []string) string

BuildUpsertQueryMSSQL builds a SQL statement string using the upsertData provided.

func BuildUpsertQueryMySQL

func BuildUpsertQueryMySQL(dia Dialect, modelName string, update, whitelist []string) string

BuildUpsertQueryMySQL builds a SQL statement string using the upsertData provided.

func BuildUpsertQueryPostgres

func BuildUpsertQueryPostgres(dia Dialect, modelName string, updateOnConflict bool, ret, update, conflict, whitelist []string) string

BuildUpsertQueryPostgres builds a SQL statement string using the upsertData provided.

func GetSelect

func GetSelect(q *Query) []string

GetSelect from the query

func MakeStructMapping

func MakeStructMapping(typ reflect.Type) map[string]MappedField

MakeStructMapping creates a map of the struct to be able to quickly look up its pointers and values by name.

func PtrsFromMapping

func PtrsFromMapping(val reflect.Value, mapping []MappedField) []interface{}

PtrsFromMapping expects to be passed an addressable struct and a mapping of where to find things. It pulls the pointers out referred to by the mapping.

func SetCount

func SetCount(q *Query)

SetCount on the query.

func SetDelete

func SetDelete(q *Query)

SetDelete on the query.

func SetDialect

func SetDialect(q *Query, dialect *Dialect)

SetDialect on the query.

func SetFor

func SetFor(q *Query, clause string)

SetFor on the query.

func SetFrom

func SetFrom(q *Query, from ...string)

SetFrom replaces the current from statements.

func SetLimit

func SetLimit(q *Query, limit int)

SetLimit on the query.

func SetLoad

func SetLoad(q *Query, relationships ...string)

SetLoad on the query.

func SetOffset

func SetOffset(q *Query, offset int)

SetOffset on the query.

func SetSQL

func SetSQL(q *Query, sql string, args ...interface{})

SetSQL on the query.

func SetSelect

func SetSelect(q *Query, sel []string)

SetSelect on the query.

func SetUpdate

func SetUpdate(q *Query, cols map[string]interface{})

SetUpdate on the query.

func ValuesFromMapping

func ValuesFromMapping(val reflect.Value, mapping []MappedField) []interface{}

ValuesFromMapping expects to be passed an addressable struct and a mapping of where to find things. It pulls the pointers out referred to by the mapping.

Types

type Dialect

type Dialect struct {
	// The left quote character for SQL identifiers
	LQ byte
	// The right quote character for SQL identifiers
	RQ byte
	// Bool flag indicating whether indexed
	// placeholders ($1) are used, or ? placeholders.
	IndexPlaceholders bool
	// Bool flag indicating whether "TOP" or "LIMIT" clause
	// must be used for rows limitation
	UseTopClause bool
}

Dialect holds values that direct the query builder how to build compatible queries for each database. Each database driver needs to implement functions that provide these values.

type MappedField

type MappedField struct {
	Path        uint64
	ParentValid *MappedField
}

func BindMapping

func BindMapping(typ reflect.Type, mapping map[string]MappedField, cols []string) ([]MappedField, error)

BindMapping creates a mapping that helps look up the pointer for the field given.

type Query

type Query struct {
	// contains filtered or unexported fields
}

Query holds the state for the built up query

func Raw

func Raw(query string, args ...interface{}) *Query

Raw makes a raw query, usually for use with bind

func (*Query) Bind

func (q *Query) Bind(ctx context.Context, obj interface{}) error

Bind executes the query and inserts the result into the passed in object pointer

See documentation for bunny.Bind()

func (*Query) Exec

func (q *Query) Exec(ctx context.Context) (sql.Result, error)

Exec executes a query that does not need a row returned

func (*Query) Query

func (q *Query) Query(ctx context.Context) (*sql.Rows, error)

Query executes the query for the All finisher and returns multiple rows

func (*Query) QueryRow

func (q *Query) QueryRow(ctx context.Context) *sql.Row

QueryRow executes the query for the One finisher and returns a row

Jump to

Keyboard shortcuts

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