Files
aorm/builder/having.go
tangpanqing 9f9a7c975f new test
2023-01-06 14:03:48 +08:00

100 lines
3.1 KiB
Go

package builder
import (
"github.com/tangpanqing/aorm/helper"
"reflect"
)
// Having 链式操作,以对象作为筛选条件
func (b *Builder) Having(dest interface{}) *Builder {
typeOf := reflect.TypeOf(dest)
valueOf := reflect.ValueOf(dest)
//如果没有设置表名
if b.tableName == "" {
b.tableName = getTableName(typeOf, valueOf)
}
for i := 0; i < typeOf.Elem().NumField(); i++ {
isNotNull := valueOf.Elem().Field(i).Field(0).Field(1).Bool()
if isNotNull {
key := helper.UnderLine(typeOf.Elem().Field(i).Name)
val := valueOf.Elem().Field(i).Field(0).Field(0).Interface()
b.havingList = append(b.havingList, WhereItem{Field: key, Opt: Eq, Val: val})
}
}
return b
}
// HavingArr 链式操作,以数组作为筛选条件
func (b *Builder) HavingArr(havingList []WhereItem) *Builder {
b.havingList = append(b.havingList, havingList...)
return b
}
func (b *Builder) HavingEq(field interface{}, val interface{}, prefix ...string) *Builder {
b.havingList = append(b.havingList, WhereItem{"", field, Eq, val})
return b
}
func (b *Builder) HavingNe(field interface{}, val interface{}, prefix ...string) *Builder {
b.havingList = append(b.havingList, WhereItem{"", field, Ne, val})
return b
}
func (b *Builder) HavingGt(field interface{}, val interface{}, prefix ...string) *Builder {
b.havingList = append(b.havingList, WhereItem{"", field, Gt, val})
return b
}
func (b *Builder) HavingGe(field interface{}, val interface{}, prefix ...string) *Builder {
b.havingList = append(b.havingList, WhereItem{"", field, Ge, val})
return b
}
func (b *Builder) HavingLt(field interface{}, val interface{}, prefix ...string) *Builder {
b.havingList = append(b.havingList, WhereItem{"", field, Lt, val})
return b
}
func (b *Builder) HavingLe(field interface{}, val interface{}, prefix ...string) *Builder {
b.havingList = append(b.havingList, WhereItem{"", field, Le, val})
return b
}
func (b *Builder) HavingIn(field interface{}, val interface{}, prefix ...string) *Builder {
b.havingList = append(b.havingList, WhereItem{"", field, In, val})
return b
}
func (b *Builder) HavingNotIn(field interface{}, val interface{}, prefix ...string) *Builder {
b.havingList = append(b.havingList, WhereItem{"", field, NotIn, val})
return b
}
func (b *Builder) HavingBetween(field interface{}, val interface{}, prefix ...string) *Builder {
b.havingList = append(b.havingList, WhereItem{"", field, Between, val})
return b
}
func (b *Builder) HavingNotBetween(field interface{}, val interface{}, prefix ...string) *Builder {
b.havingList = append(b.havingList, WhereItem{"", field, NotBetween, val})
return b
}
func (b *Builder) HavingLike(field interface{}, val interface{}, prefix ...string) *Builder {
b.havingList = append(b.havingList, WhereItem{"", field, Like, val})
return b
}
func (b *Builder) HavingNotLike(field interface{}, val interface{}, prefix ...string) *Builder {
b.havingList = append(b.havingList, WhereItem{"", field, NotLike, val})
return b
}
func (b *Builder) HavingRaw(field interface{}, val interface{}, prefix ...string) *Builder {
b.havingList = append(b.havingList, WhereItem{"", field, Raw, val})
return b
}