Documentation ¶
Index ¶
- Constants
- Variables
- func AppendFrom(q *Query, from ...string)
- func AppendGroupBy(q *Query, clause string)
- func AppendHaving(q *Query, clause string, args ...interface{})
- func AppendIn(q *Query, clause string, args ...interface{})
- func AppendInnerJoin(q *Query, clause string, args ...interface{})
- func AppendOrderBy(q *Query, clause string)
- func AppendSelect(q *Query, columns ...string)
- func AppendWhere(q *Query, clause string, args ...interface{})
- func Bind(rows *sql.Rows, obj interface{}) error
- func BindMapping(typ reflect.Type, mapping map[string]uint64, cols []string) ([]uint64, error)
- func BuildUpsertQuery(tableName string, updateOnConflict bool, ...) string
- func ExecQuery(q *Query) (sql.Result, error)
- func ExecQueryAll(q *Query) (*sql.Rows, error)
- func ExecQueryOne(q *Query) *sql.Row
- func GetLocation() *time.Location
- func GetSliceValues(slice []interface{}, columns ...string) []interface{}
- func GetStructPointers(obj interface{}, columns ...string) []interface{}
- func GetStructValues(obj interface{}, columns ...string) []interface{}
- func IsBoilErr(err error) bool
- func MakeStructMapping(typ reflect.Type) map[string]uint64
- func NonZeroDefaultSet(defaults []string, obj interface{}) []string
- func PtrsFromMapping(val reflect.Value, mapping []uint64) []interface{}
- func SetCount(q *Query)
- func SetDB(db Executor)
- func SetDelete(q *Query)
- func SetExecutor(q *Query, exec Executor)
- func SetFor(q *Query, clause string)
- func SetFrom(q *Query, from ...string)
- func SetLastInAsOr(q *Query)
- func SetLastWhereAsOr(q *Query)
- func SetLimit(q *Query, limit int)
- func SetLoad(q *Query, relationships ...string)
- func SetLocation(loc *time.Location)
- func SetOffset(q *Query, offset int)
- func SetSQL(q *Query, sql string, args ...interface{})
- func SetUpdate(q *Query, cols map[string]interface{})
- func ValuesFromMapping(val reflect.Value, mapping []uint64) []interface{}
- func WrapErr(err error) error
- type Beginner
- type Executor
- type HookPoint
- type Query
- type Transactor
Constants ¶
const ( JoinInner joinKind = iota JoinOuterLeft JoinOuterRight JoinNatural )
Join type constants
Variables ¶
var DebugMode = false
DebugMode is a flag controlling whether generated sql statements and debug information is outputted to the DebugWriter handle
NOTE: This should be disabled in production to avoid leaking sensitive data
var DebugWriter = os.Stdout
DebugWriter is where the debug output will be sent if DebugMode is true
Functions ¶
func AppendHaving ¶
AppendHaving on the query.
func AppendInnerJoin ¶
AppendInnerJoin on the query.
func AppendWhere ¶
AppendWhere on the query.
func Bind ¶
Bind executes the query and inserts the result into the passed in object pointer
Bind rules:
- Struct tags control bind, in the form of: `boil:"name,bind"`
- If "name" is omitted the sql column names that come back are TitleCased and matched against the field name.
- If the "name" part of the struct tag is specified, the given name will be used instead of the struct field name for binding.
- If the "name" of the struct tag is "-", this field will not be bound to.
- If the ",bind" option is specified on a struct field and that field is a struct itself, it will be recursed into to look for fields for binding.
Example Query:
type JoinStruct struct { // User1 can have it's struct fields bound to since it specifies // ,bind in the struct tag, it will look specifically for // fields that are prefixed with "user." returning from the query. // For example "user.id" column name will bind to User1.ID User1 *models.User `boil:"user,bind"` // User2 will follow the same rules as noted above except it will use // "friend." as the prefix it's looking for. User2 *models.User `boil:"friend,bind"` // RandomData will not be recursed into to look for fields to // bind and will not be bound to because of the - for the name. RandomData myStruct `boil:"-"` // Date will not be recursed into to look for fields to bind because // it does not specify ,bind in the struct tag. But it can be bound to // as it does not specify a - for the name. Date time.Time } models.Users(qm.InnerJoin("users as friend on users.friend_id = friend.id")).Bind(&joinStruct)
For custom objects that want to use eager loading, please see the loadRelationships function.
func BindMapping ¶
BindMapping creates a mapping that helps look up the pointer for the column given.
func BuildUpsertQuery ¶
func BuildUpsertQuery(tableName string, updateOnConflict bool, ret, update, conflict, whitelist []string) string
BuildUpsertQuery builds a SQL statement string using the upsertData provided.
func ExecQueryAll ¶
ExecQueryAll executes the query for the All finisher and returns multiple rows
func ExecQueryOne ¶
ExecQueryOne executes the query for the One finisher and returns a row
func GetLocation ¶
GetLocation retrieves the global timestamp Location. This is the timezone used by the generated package for the automated setting of created_at and updated_at columns if the package was not generated with the --no-auto-timestamps flag.
func GetSliceValues ¶
func GetSliceValues(slice []interface{}, columns ...string) []interface{}
GetSliceValues returns the values (as interface) of the matching columns in obj.
func GetStructPointers ¶
func GetStructPointers(obj interface{}, columns ...string) []interface{}
GetStructPointers returns a slice of pointers to the matching columns in obj
func GetStructValues ¶
func GetStructValues(obj interface{}, columns ...string) []interface{}
GetStructValues returns the values (as interface) of the matching columns in obj
func MakeStructMapping ¶
MakeStructMapping creates a map of the struct to be able to quickly look up its pointers and values by name.
func NonZeroDefaultSet ¶
NonZeroDefaultSet returns the fields included in the defaults slice that are non zero values
func PtrsFromMapping ¶
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 SetDB ¶
func SetDB(db Executor)
SetDB initializes the database handle for all template db interactions
func SetLastInAsOr ¶
func SetLastInAsOr(q *Query)
SetLastInAsOr sets the or separator for the tail "IN" in the slice
func SetLastWhereAsOr ¶
func SetLastWhereAsOr(q *Query)
SetLastWhereAsOr sets the or separator for the tail "WHERE" in the slice
func SetLocation ¶
SetLocation sets the global timestamp Location. This is the timezone used by the generated package for the automated setting of created_at and updated_at columns. If the package was generated with the --no-auto-timestamps flag then this function has no effect.
func ValuesFromMapping ¶
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 Executor ¶
type Executor interface { Exec(query string, args ...interface{}) (sql.Result, error) Query(query string, args ...interface{}) (*sql.Rows, error) QueryRow(query string, args ...interface{}) *sql.Row }
Executor can perform SQL queries.
type Query ¶
type Query struct {
// contains filtered or unexported fields
}
Query holds the state for the built up query
type Transactor ¶
Transactor can commit and rollback, on top of being able to execute queries.