mirror of https://github.com/go-gorm/gorm.git
66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
package gorm
|
|
|
|
type search struct {
|
|
conditions map[string][]interface{}
|
|
orders []string
|
|
selectStr string
|
|
offsetStr string
|
|
limitStr string
|
|
specifiedTableName string
|
|
unscope bool
|
|
}
|
|
|
|
func (s search) addToCondition(typ string, value interface{}) {
|
|
s.conditions[typ] = append(s.conditions[typ], value)
|
|
}
|
|
|
|
func (s search) where(query string, values ...interface{}) {
|
|
s.addToCondition("where", map[string]interface{}{"query": query, "args": values})
|
|
}
|
|
|
|
func (s search) not(query string, values ...interface{}) {
|
|
s.addToCondition("not", map[string]interface{}{"query": query, "args": values})
|
|
}
|
|
|
|
func (s search) or(query string, values ...interface{}) {
|
|
s.addToCondition("or", map[string]interface{}{"query": query, "args": values})
|
|
}
|
|
|
|
func (s search) attrs(attrs ...interface{}) {
|
|
s.addToCondition("attrs", toSearchableMap(attrs...))
|
|
}
|
|
|
|
func (s search) assign(attrs ...interface{}) {
|
|
s.addToCondition("assign", toSearchableMap(attrs...))
|
|
}
|
|
|
|
func (s search) order(value string, reorder ...bool) {
|
|
if len(reorder) > 0 && reorder[0] {
|
|
s.orders = []string{value}
|
|
} else {
|
|
s.orders = append(s.orders, value)
|
|
}
|
|
}
|
|
|
|
func (s search) selects(value interface{}) {
|
|
if str, err := getInterfaceAsString(value); err == nil {
|
|
s.selectStr = str
|
|
}
|
|
}
|
|
|
|
func (s search) limit(value interface{}) {
|
|
if str, err := getInterfaceAsString(value); err == nil {
|
|
s.limitStr = str
|
|
}
|
|
}
|
|
|
|
func (s search) offset(value interface{}) {
|
|
if str, err := getInterfaceAsString(value); err == nil {
|
|
s.offsetStr = str
|
|
}
|
|
}
|
|
|
|
func (s search) unscoped() {
|
|
s.unscope = true
|
|
}
|