Add builder
This commit is contained in:
parent
586c503a4f
commit
be7a4064ef
60
builder/operators.go
Normal file
60
builder/operators.go
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
package builder
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Comparison Operators
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Raw raw sql
|
||||||
|
type Raw struct {
|
||||||
|
Value string
|
||||||
|
Args []interface{} // TODO NamedArg
|
||||||
|
}
|
||||||
|
|
||||||
|
// Eq equal to
|
||||||
|
type Eq struct {
|
||||||
|
Column Column
|
||||||
|
Value interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Neq not equal to
|
||||||
|
type Neq struct {
|
||||||
|
Column Column
|
||||||
|
Value interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gt greater than
|
||||||
|
type Gt struct {
|
||||||
|
Column Column
|
||||||
|
Value interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gte greater than or equal to
|
||||||
|
type Gte struct {
|
||||||
|
Column Column
|
||||||
|
Value interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lt less than
|
||||||
|
type Lt struct {
|
||||||
|
Column Column
|
||||||
|
Value interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lte less than or equal to
|
||||||
|
type Lte struct {
|
||||||
|
Column Column
|
||||||
|
Value interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Logical Operators
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// And TRUE if all the conditions is TRUE
|
||||||
|
type And []Condition
|
||||||
|
|
||||||
|
// Not TRUE if condition is false
|
||||||
|
type Not Condition
|
||||||
|
|
||||||
|
// Or TRUE if any of the conditions is TRUE
|
||||||
|
type Or []Condition
|
59
builder/statement.go
Normal file
59
builder/statement.go
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
package builder
|
||||||
|
|
||||||
|
// Column column type
|
||||||
|
type Column = string
|
||||||
|
|
||||||
|
// Statement GORM statement
|
||||||
|
type Statement struct {
|
||||||
|
Dest interface{} // Insert, Select, Update, Delete
|
||||||
|
Table string // Insert, Select, Update, Delete
|
||||||
|
Select []interface{} // Select
|
||||||
|
Joins []Join // Select
|
||||||
|
GroupBy GroupBy // Select
|
||||||
|
OrderBy OrderBy // Select
|
||||||
|
Preload []Column // Select
|
||||||
|
Limit Limit // Select, Update
|
||||||
|
Where []Condition // Select, Update, Delete
|
||||||
|
Assignments []Assignment // Insert, Update
|
||||||
|
Returnnings []Column // Insert, Update, Delete
|
||||||
|
}
|
||||||
|
|
||||||
|
// Condition query condition statement interface
|
||||||
|
type Condition interface {
|
||||||
|
// ToSQL()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Join join statement
|
||||||
|
type Join struct {
|
||||||
|
Table string
|
||||||
|
LocalField string
|
||||||
|
ForeignField string
|
||||||
|
Conditions []Condition
|
||||||
|
}
|
||||||
|
|
||||||
|
// GroupBy group by statement
|
||||||
|
type GroupBy struct {
|
||||||
|
GroupByColumns []string
|
||||||
|
Having []Condition
|
||||||
|
}
|
||||||
|
|
||||||
|
// OrderBy order by statement
|
||||||
|
type OrderBy []OrderByColumn
|
||||||
|
|
||||||
|
// OrderByColumn column used for order
|
||||||
|
type OrderByColumn struct {
|
||||||
|
Name string
|
||||||
|
Asc bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// Limit limit statement
|
||||||
|
type Limit struct {
|
||||||
|
Limit int
|
||||||
|
Offset int
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assignment assign statement
|
||||||
|
type Assignment struct {
|
||||||
|
Column Column
|
||||||
|
Value interface{}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user