计划升级or语句支持
This commit is contained in:
parent
ce2f962784
commit
88f9e831d8
22
base.go
22
base.go
@ -192,11 +192,6 @@ func (b *BaseDao) setTxCondition(tx *gorm.DB, optionFuncList ...SetOption) *gorm
|
|||||||
tx = tx.Model(o.Model)
|
tx = tx.Model(o.Model)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置where条件
|
|
||||||
if nil != o.Where && len(o.Where) > 0 {
|
|
||||||
tx = tx.Where(o.Where)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 设置 limit offset
|
// 设置 limit offset
|
||||||
if o.Limit > 0 {
|
if o.Limit > 0 {
|
||||||
tx = tx.Limit(o.Limit)
|
tx = tx.Limit(o.Limit)
|
||||||
@ -205,6 +200,11 @@ func (b *BaseDao) setTxCondition(tx *gorm.DB, optionFuncList ...SetOption) *gorm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 设置where条件
|
||||||
|
if nil != o.Where && len(o.Where) > 0 {
|
||||||
|
tx = tx.Where(o.Where)
|
||||||
|
}
|
||||||
|
|
||||||
// in 语句
|
// in 语句
|
||||||
if nil != o.In {
|
if nil != o.In {
|
||||||
tx = tx.Where(o.In)
|
tx = tx.Where(o.In)
|
||||||
@ -251,17 +251,7 @@ func (b *BaseDao) setTxCondition(tx *gorm.DB, optionFuncList ...SetOption) *gorm
|
|||||||
}
|
}
|
||||||
|
|
||||||
// or 语句
|
// or 语句
|
||||||
if nil != o.OR {
|
if len(o.OR) > 0 {
|
||||||
expression := ""
|
|
||||||
valList := make([]any, 0)
|
|
||||||
for _, o := range o.OR {
|
|
||||||
if len(expression) > 0 {
|
|
||||||
expression = expression + " OR "
|
|
||||||
}
|
|
||||||
expression = expression + " " + o.Express
|
|
||||||
valList = append(valList, o.Value)
|
|
||||||
}
|
|
||||||
tx = tx.Where(expression, valList...)
|
|
||||||
}
|
}
|
||||||
return tx
|
return tx
|
||||||
}
|
}
|
||||||
|
18
option.go
18
option.go
@ -18,16 +18,6 @@ import (
|
|||||||
// Date : 11:46 2022/5/15
|
// Date : 11:46 2022/5/15
|
||||||
type SetOption func(o *Option)
|
type SetOption func(o *Option)
|
||||||
|
|
||||||
// ORCondition OR 条件
|
|
||||||
//
|
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
|
||||||
//
|
|
||||||
// Date : 20:07 2022/7/23
|
|
||||||
type ORCondition struct {
|
|
||||||
Express string `json:"express"` // 表达式
|
|
||||||
Value any `json:"value"` // 绑定值
|
|
||||||
}
|
|
||||||
|
|
||||||
// Option 扩展选项
|
// Option 扩展选项
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
@ -47,7 +37,7 @@ type Option struct {
|
|||||||
NotLike map[string]string `json:"not_like"` // not like 语句
|
NotLike map[string]string `json:"not_like"` // not like 语句
|
||||||
NotEqual map[string]any `json:"not_equal"` // != 语句
|
NotEqual map[string]any `json:"not_equal"` // != 语句
|
||||||
Order []string `json:"order"` // 排序规则
|
Order []string `json:"order"` // 排序规则
|
||||||
OR []*ORCondition `json:"or"` // or 语句, or 和其他属性 and 关系, 内部 OR 关系
|
OR [][]SetOption `json:"or"` // or 语句, or 和其他属性 and 关系, 内部 OR 关系
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithModel ...
|
// WithModel ...
|
||||||
@ -356,12 +346,12 @@ func WithBatchNotEqual[T op_type.BaseType](data map[string]T) SetOption {
|
|||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 20:03 2022/7/23
|
// Date : 20:03 2022/7/23
|
||||||
func WithOR(orConditionList ...*ORCondition) SetOption {
|
func WithOR(orConditionList ...SetOption) SetOption {
|
||||||
return func(o *Option) {
|
return func(o *Option) {
|
||||||
if nil == o.OR {
|
if nil == o.OR {
|
||||||
o.OR = make([]*ORCondition, 0)
|
o.OR = make([][]SetOption, 0)
|
||||||
}
|
}
|
||||||
o.OR = append(o.OR, orConditionList...)
|
o.OR = append(o.OR, orConditionList)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user