Documentation ¶
Index ¶
- func EscapeString(value string) string
- func Union(queries ...*Q) (string, error)
- type Column
- type Field
- type FieldType
- type IModel
- type OrderDir
- type Q
- func (q *Q) Alias(alias string) *Q
- func (q *Q) Count(name Column, as string) *Q
- func (q *Q) Field(name Column) *Q
- func (q *Q) FieldAs(name Column, as string) *Q
- func (q *Q) FieldRaw(fieldStr, as string) *Q
- func (q *Q) Fields(fields ...*Field) *Q
- func (q *Q) FromFieldToString(field *Field) string
- func (q *Q) Limit(limit, offset int64) *Q
- func (q *Q) Max(name Column, as string) *Q
- func (q *Q) Min(name Column, as string) *Q
- func (q *Q) OrderBy(col Column, dir OrderDir) *Q
- func (q *Q) Raw(query string) *Q
- func (q *Q) Set(fieldName Column, value interface{}) *Q
- func (q *Q) String() (string, error)
- func (q *Q) Sum(name Column, as string) *Q
- func (q *Q) Where(args ...*WherePart) *Q
- type QueryErrorType
- type QueryType
- type TableName
- type WherePart
- func And(args ...*WherePart) *WherePart
- func Ands(args ...*WherePart) *WherePart
- func Between(fieldName Column, from, to interface{}) *WherePart
- func BitAnd(fieldName Column, a, b int64) *WherePart
- func EQ(fieldName Column, value interface{}) *WherePart
- func EQF(fieldName1, fieldName2 string) *WherePart
- func Exists(clause *Q) *WherePart
- func GT(fieldName Column, value interface{}) *WherePart
- func GTOE(fieldName Column, value interface{}) *WherePart
- func IN(fieldName Column, values ...interface{}) *WherePart
- func INInt64(fieldName Column, values []int64) *WherePart
- func INString(fieldName Column, values []string) *WherePart
- func LT(fieldName Column, value interface{}) *WherePart
- func LTOE(fieldName Column, value interface{}) *WherePart
- func Like(fieldName Column, value string) *WherePart
- func Mod(fieldName Column, value, remainder int64) *WherePart
- func Modf(value int64, fieldName Column, remainder int64) *WherePart
- func NE(fieldName Column, value interface{}) *WherePart
- func NOTIN(fieldName Column, values ...interface{}) *WherePart
- func NotExists(clause *Q) *WherePart
- func NotLike(fieldName Column, value string) *WherePart
- func Or(args ...*WherePart) *WherePart
- func Ors(args ...*WherePart) *WherePart
- func PE() *WherePart
- func PS() *WherePart
- func Paren(args ...*WherePart) *WherePart
- func Rawf(str string, args ...interface{}) *WherePart
- func WhereAll() *WherePart
- type WhereType
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func EscapeString ¶ added in v1.8.54
Types ¶
type Field ¶ added in v1.8.76
func NewField ¶ added in v1.8.76
NewField creates a new field.
NewField(FieldTypeBasic, "Foo") NewField(FieldTypeBasic, "Foo", "Bar") <-- `Foo` AS `Bar`
func NewRawField ¶ added in v1.8.76
NewRawField creates a new field.
NewRawField("`t`.`Foo` AS `Bar`)
type IModel ¶
type IModel interface { Table_Name() TableName Table_Columns() []Column Table_PrimaryKey() Column Table_PrimaryKey_Value() int64 Table_InsertColumns() []Column Table_UpdateColumns() []Column Table_Column_Types() map[Column]string String() string Update(db db.IDB) error Create(db db.IDB) error Delete(db db.IDB) error FromID(db db.IDB, id int64) (IModel, error) }
type Q ¶
type Q struct {
// contains filtered or unexported fields
}
func (*Q) Count ¶
Count creates a count statement
q.Count(query.Column("Foo"), "FooCounted") COALESCE(COUNT(`t`.`Foo`), 0) AS `FooCounted`
func (*Q) FieldAs ¶
FieldAs includes a specific field in the columns to be returned by a set aliased by `as`
func (*Q) FieldRaw ¶
FieldRaw allows for an arbitrary string (e.g. "NOW()") to be included in the select columns
func (*Q) Fields ¶
Fields injects fields as raw strings into the field clause of the query
sql, e := query.Select(&testassets.Job{}). Fields( NewField(FieldTypeBasic, "JobID"), NewField(FieldTypeBasic, "Name", "Foo"), )
func (*Q) FromFieldToString ¶ added in v1.8.76
func (*Q) Max ¶ added in v1.8.57
Max creates a max statement
q.Max(query.Column("Foo"), "MaxFoo") COALESCE(MAX(`t`.`Foo`), 0) AS `MaxFoo`
func (*Q) Min ¶ added in v1.8.57
Min creates a min statement
q.Min(query.Column("Foo"), "MinFoo") COALESCE(MIN(`t`.`Foo`), 0) AS `MinFoo`
func (*Q) Sum ¶
Sum creates a sum statement
q.Sum(query.Column("Foo"), "FooSummed") COALESCE(SUM(`t`.`Foo`), 0) AS `FooSummed`
func (*Q) Where ¶
Where creates or adds to an existing where clause
Simple q.Where(query.EQ(query.Column("A"), "B")) WHERE `t`.`B` = `t`.`B`
Multiple Arguments q.Where(query.EQ(query.Column("A"), "B"), query.And(), query.EQ(query.Column("C"), "D")) WHERE `t`.`A` = 'B' AND `t`.`C` = 'D'
Daisy Chain q.Where(query.EQ(query.Column("A"), "B")).Where(query.And()).Where(query.EQ(query.Column("C"), "D")) WHERE `t`.`A` = 'B' AND `t`.`C` = 'D'
Separate lines q.Where(query.EQ(query.Column("A"), "B")) q.Where(query.And()) q.Where(query.EQ(query.Column("C"), "D")) WHERE `t`.`A` = 'B' AND `t`.`C` = 'D'
type QueryErrorType ¶ added in v1.8.51
type QueryErrorType string
const ( QUERY_ERROR_INVALID_VALUE QueryErrorType = "Invalid value" QUERY_ERROR_INVALID_COLUMN QueryErrorType = "Invalid Column Name" QUERY_ERROR_EMPTY_WHERE_CLAUSE QueryErrorType = "Empty where clause" )
type WherePart ¶
type WherePart struct {
// contains filtered or unexported fields
}
WherePart is a part of a where clause. This object is an exposed part of the api to make conditional queries easier EXAMPLE:
wheres := []query.WherePart{ query.EQ(models.ObjectRelationship_Column_IsDeleted, 0), } if objectTypeFrom != constants.ObjectTypeUnknown { wheres = append(wheres, query.And(), query.EQ(models.ObjectRelationship_Column_ObjectTypeFrom, objectTypeFrom)) } if objectIDFrom > 0 { wheres = append(wheres, query.And(), query.EQ(models.ObjectRelationship_Column_ObjectIDFrom, objectIDFrom)) }
func And ¶
And is an and statement with optional args that, if provided, are wrapped in parentheses Example: And() will result in the word `AND` being added to the where clause Example: And(EQ(1, 1), And(), And(2, 2)) will result in `AND ( 1 = 1 AND 2 = 2 )`
func Ands ¶ added in v1.8.45
Ands takes a list of args and separes them all by `AND` Example: Ands(query.EQ(1,1), query.EQ(2,2), query.EQ(3,3)) == 1 = 1 AND 2 = 2 AND 3 = 3
func BitAnd ¶ added in v1.8.31
BitAnd `t`.`Field` & a = b Example: query.BitAnd("foo", 2, 1) -> `t`.`Foo` & 2 = 1
func EQF ¶
EQF allows for one column to be equal to another Example for a subselect
query.Select(&models.UserGroupUser{}).Alias("ugu").FieldRaw("1", "n").Where(
query.EQF("UserID", "`u`.`UserID`"), query.And(), query.EQ("UserGroupID", groupID), query.And(), query.EQ("IsDeleted", 0),
),
func INInt64 ¶ added in v1.8.15
INInt64 is a helper function for converting a slice of string arguments into a slice of interface arguments, passed into an IN clause and returned
func INString ¶ added in v1.8.15
INString is a helper function for converting a slice of string arguments into a slice of interface arguments, passed into an IN clause and returned
func Mod ¶ added in v1.8.31
Mod is applies modulo operation on column and value testing if it equals remainder
MOD(`t`.`Field`, value) = remainder
func Modf ¶ added in v1.8.31
Modf MOD(value, `t`.`Field`) = remainder Example: query.Mod("foo", 2, 1) -> `t`.`Foo` % 2 = 1
func NOTIN ¶ added in v1.8.33
NOTIN is an NOT IN clause Example: query.NOTIN("col1", "foo", "bar", "baz") Example: queyr.NOTIN("col2", 1, 2, 3)
func Ors ¶ added in v1.8.45
Ors takes a list of args and separes them all by `OR` Example: Ors(query.EQ(1,1), query.EQ(2,2), query.EQ(3,3)) == 1 = 1 OR 2 = 2 OR 3 = 3
type WhereType ¶
type WhereType int
const ( WhereTypeEquals WhereType = iota WhereTypeEqualsField WhereTypeNotEquals WhereTypeGreaterThan WhereTypeLessThan WhereTypeGreaterThanOrEqualTo WhereTypeLessThanOrEqualTo WhereTypeBetween WhereTypeLike WhereTypeNotLike WhereTypeIN WhereTypeNotIN WhereTypeExists WhereTypeNotExists WhereTypeAnd WhereTypeOr WhereTypeParenthesisEnd WhereTypeParenthesisStart // WhereTypeNone indicates that the wherePart is a noop for the query, // If, however, it contains any child clauses, they will be parsed as individual wherePart objects WhereTypeNone // WhereTypeAll is a WHERE clause of `1=1` used for convenience // when conditionally adding WHERE clauses starting with a conjunction (AND/OR,etc) // separating them. // e.g. SELECT * FROM `Foo` WHERE 1=1 // SELECT * FROM `Foo` WHERE 1=1 AND FooID = 123; WhereTypeAll WhereTypeMod WhereTypeModF WhereTypeBitAnd WhereTypeRaw )