1 Star 0 Fork 0

h79/goutils

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
range.go 1.74 KB
一键复制 编辑 原始数据 按行查看 历史
huqiuyun 提交于 2023-02-22 16:12 . sql
package wrapper
import (
"gitee.com/h79/goutils/common"
"strings"
)
// Range 时间范围
type Range[T common.IntegerType] struct {
Column string `json:"col"`
Operator string `json:"operator"`
Min T `json:"begin"`
Max T `json:"end"`
}
func (rg *Range[T]) HasValid() bool {
// 时间有效,操作符长度不能太长(wrapper.Gt,wrapper.Between...),太长就是无效,在进行ToUpper时,造成时间消耗
return len(rg.Operator) > 0 && len(rg.Operator) < 8 && len(rg.Column) > 0
}
func (rg *Range[T]) Cond(cond *Condition) {
if !rg.HasValid() {
return
}
operator := strings.ToUpper(rg.Operator)
if operator == ">" {
cond.Gt(rg.Column, rg.Min)
} else if operator == ">=" {
cond.GtEq(rg.Column, rg.Min)
} else if operator == "<" {
cond.Lt(rg.Column, rg.Max)
} else if operator == "<=" {
cond.LtEq(rg.Column, rg.Max)
} else if operator == "BETWEEN" {
cond.Between(rg.Column, rg.Min, rg.Max)
}
}
// Range2 时间范围
type Range2[T common.IntegerType] struct {
Column string `json:"col"`
Op string `json:"op"`
Min T `json:"start"`
Max T `json:"end"`
}
func (rg *Range2[T]) HasValid() bool {
// 时间有效,操作符长度不能太长,太长就是无效,在进行ToUpper时,造成时间消耗
return len(rg.Op) > 0 && len(rg.Op) < 5 && len(rg.Column) > 0
}
func (rg *Range2[T]) Cond(cond *Condition) {
if !rg.HasValid() {
return
}
operator := strings.ToUpper(rg.Op)
if operator == "GT" {
cond.Gt(rg.Column, rg.Min)
} else if operator == "GTE" {
cond.GtEq(rg.Column, rg.Min)
} else if operator == "LT" {
cond.Lt(rg.Column, rg.Max)
} else if operator == "LTE" {
cond.LtEq(rg.Column, rg.Max)
} else if operator == "BET" {
cond.Between(rg.Column, rg.Min, rg.Max)
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/h79/goutils.git
git@gitee.com:h79/goutils.git
h79
goutils
goutils
v1.20.24

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385