Documentation
¶
Index ¶
- Constants
- Variables
- func Column[M Model](column string) string
- func ColumnErr[M Model](column string) (string, error)
- func Columns[M Model]() []string
- func NoOp() (string, []driver.Value, error)
- func TableName[M Model]() string
- type JoinType
- type Model
- type SqldFn
- func And(ops ...SqldFn) SqldFn
- func Asc(columnExpr *string) SqldFn
- func Block(block string) SqldFn
- func ColumnEq(firstColumn string, secondColumn string) SqldFn
- func Desc(columnExpr *string) SqldFn
- func Eq[T driver.Value](columnExpr string, val *T) SqldFn
- func From(tableName string) SqldFn
- func Having(ops ...SqldFn) SqldFn
- func If(pred func() bool, op SqldFn) SqldFn
- func IfElse(pred func() bool, trueFn SqldFn, falseFn SqldFn) SqldFn
- func IfEmpty[T driver.Value](vals []T, op SqldFn) SqldFn
- func IfEmptyElse[T driver.Value](vals []T, trueFn SqldFn, falseFn SqldFn) SqldFn
- func IfNil[T driver.Value](val *T, op SqldFn) SqldFn
- func IfNilElse[T driver.Value](val *T, trueFn SqldFn, falseFn SqldFn) SqldFn
- func IfNotEmpty[T driver.Value](vals []T, op SqldFn) SqldFn
- func IfNotEmptyElse[T driver.Value](vals []T, trueFn SqldFn, falseFn SqldFn) SqldFn
- func IfNotNil[T driver.Value](val *T, op SqldFn) SqldFn
- func IfNotNilElse[T driver.Value](val *T, trueFn SqldFn, falseFn SqldFn) SqldFn
- func In[T driver.Value](columnExpr string, vals []T) SqldFn
- func Join(joinType JoinType, tableName string, op SqldFn) SqldFn
- func LeftJoin(tableName string, op SqldFn) SqldFn
- func New(ops ...SqldFn) SqldFn
- func Not(op SqldFn) SqldFn
- func Null(columnExpr string) SqldFn
- func Or(ops ...SqldFn) SqldFn
- func OrderBy(ops ...SqldFn) SqldFn
- func RightJoin(tableName string, op SqldFn) SqldFn
- func Select(columns ...string) SqldFn
- func Where(ops ...SqldFn) SqldFn
Constants ¶
const ( LEFT_JOIN = "LEFT" RIGHT_JOIN = "RIGHT" INNER_JOIN = "INNER" CROSS_JOIN = "CROSS" FULL_JOIN = "FULL" LEFT_OUTER_JOIN = "LEFT OUTER" RIGHT_OUTER_JOIN = "RIGHT OUTER" INNER_OUTER_JOIN = "INNER OUTER" CROSS_OUTER_JOIN = "CROSS OUTER" FULL_OUTER_JOIN = "FULL OUTER" )
Variables ¶
var ErrArgNotSlice = errors.New("argument is not a slice")
var ErrEmptySlice = errors.New("slice is empty")
var ErrNilColumnExpr = errors.New("column expression is nil")
var ErrNilVal = errors.New("value is nil")
var ErrNoColumns = errors.New("no columns in select statement")
var ErrNoOps = errors.New("operations slice is empty")
Functions ¶
func Column ¶ added in v0.2.0
Column returns a combination of `Model.TableName()` and the provided column. Panics if the column is not present in the model
func ColumnErr ¶ added in v0.2.1
ColumnErr returns a combination of `Model.TableName()` and the provided column. Returns error if the column is not present in the model
Types ¶
type SqldFn ¶
SqldFn is the type describing all callbacks used in the library.
func And ¶
And builds a callback combining all the operators with AND conditions.
sqld.And(
sqld.IfNotNil(filters.Name,
sqld.Eq("name", filters.Name),
),
sqld.IfNotEmpty(filters.Pizzas,
sqld.In("pizzas", filters.Pizzas),
),
)
func Block ¶
Block builds a callback that just returns the provided strings. Use it for the "static" parts of your query, like SELECT and JOIN statements.
sqld.Block(` SELECT name, pizzas FROM Table`, )
func ColumnEq ¶ added in v0.2.1
ColumnEq builds a callback that returns a comparison statement between two columns
func Eq ¶
Eq builds a callback that compares a column with the provided value.
sqld.Eq("name", filters.Name)
func From ¶ added in v0.2.0
From builds a callback that just returns a FROM statement with the provided table
func Having ¶
Having builds a callback combining all the operators in a HAVING statement.
sqld.Having(
sqld.And(
sqld.IfNotNil(filters.Name,
sqld.Eq("name", filters.Name),
),
sqld.IfNotEmpty(filters.Pizzas,
sqld.In("pizzas", filters.Pizzas),
),
),
)
func IfNotEmptyElse ¶
func In ¶
In builds a callback that checks if a column value is contained in the provided slice of values.
sqld.In("pizzas", filters.Pizzas)
func Join ¶ added in v0.2.0
Join builds a callback that returns a JOIN statement of the provided type with the desired table, with a condition callback
func New ¶
New builds a `SqldFn` callback combining the provided operators.
Example usage:
const query := sqld.New(
sqld.Block(`
SELECT
name,
pizzas
FROM Table`,
),
sqld.Where(
sqld.And(
sqld.IfNotNil(filters.Name,
sqld.Eq("name", filters.Name),
),
sqld.IfNotEmpty(filters.Pizzas,
sqld.In("pizzas", filters.Pizzas),
),
),
),
sqld.OrderBy(
sqld.IfNotNil(filters.OrderBy,
sqld.Desc(filters.OrderBy),
),
),
)
func Or ¶
Or builds a callback combining all the operators with OR conditions.
sqld.Or(
sqld.IfNotNil(filters.Name,
sqld.Eq("name", filters.Name),
),
sqld.IfNotEmpty(filters.Pizzas,
sqld.In("pizzas", filters.Pizzas),
),
)
func OrderBy ¶
OrderBy builds a callback combining all the operators in a ORDER BY statement.
sqld.OrderBy( sqld.IfNotNil(filters.OrderBy, sqld.Desc(filters.OrderBy), ), )