golang实现原始数据库过滤语法

栏目: Go · 发布时间: 7年前

golang gin 数据库过滤语法

func (s APIGetAlarmListsInputs) collectFilters() string {
    tmp := []string{}
    if s.StartTime != 0 {
        tmp = append(tmp, fmt.Sprintf("timestamp >= FROM_UNIXTIME(%v)", s.StartTime))
    }
    if s.EndTime != 0 {
        tmp = append(tmp, fmt.Sprintf("timestamp <= FROM_UNIXTIME(%v)", s.EndTime))
    }
    if s.Priority != -1 {
        tmp = append(tmp, fmt.Sprintf("priority = %d", s.Priority))
    }
    if s.Status != "" {
        status := ""
        statusTmp := strings.Split(s.Status, ",")
        for indx, n := range statusTmp {
            if indx == 0 {
                status = fmt.Sprintf(" status = '%s' ", n)
            } else {
                status = fmt.Sprintf(" %s OR status = '%s' ", status, n)
            }
        }
        status = fmt.Sprintf("( %s )", status)
        tmp = append(tmp, status)
    }
    if s.ProcessStatus != "" {
        pstatus := ""
        pstatusTmp := strings.Split(s.ProcessStatus, ",")
        for indx, n := range pstatusTmp {
            if indx == 0 {
                pstatus = fmt.Sprintf(" process_status = '%s' ", n)
            } else {
                pstatus = fmt.Sprintf(" %s OR process_status = '%s' ", pstatus, n)
            }
        }
        pstatus = fmt.Sprintf("( %s )", pstatus)
        tmp = append(tmp, pstatus)
    }
    if s.Metrics != "" {
        tmp = append(tmp, fmt.Sprintf("metrics regexp '%s'", s.Metrics))
    }
    if s.EventId != "" {
        tmp = append(tmp, fmt.Sprintf("id = '%s'", s.EventId))
    }
    if s.Endpoints != "" {
        tmp = append(tmp, fmt.Sprintf("endpoint = '%s'", s.Endpoints))
    }
    if s.StrategyId != 0 {
        tmp = append(tmp, fmt.Sprintf("strategy_id = %d", s.StrategyId))
    }
    if s.TemplateId != 0 {
        tmp = append(tmp, fmt.Sprintf("template_id = %d", s.TemplateId))
    }

    filterStrTmp := strings.Join(tmp, " AND ")
    if filterStrTmp != "" {
        filterStrTmp = fmt.Sprintf("WHERE %s", filterStrTmp)
    }
    return filterStrTmp
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

颠覆医疗

颠覆医疗

[美]埃里克·托普 / 张南、魏薇、何雨师 / 译言·东西文库/电子工业出版社 / 2014-1-20 / 55.00

“创造性破坏”是奥地利经济学家约瑟夫·熊彼特最著名的理论,当一个产业在革新之时,都需要大规模地淘汰旧的技术与生产体系,并建立起新的生产体系。电器之于火器、汽车之于马车、个人计算机之于照排系统,都是一次又一次的“创造性破坏”,旧的体系完全不复存在,新的体系随之取代。 “创造性破坏”已经深深地改变了我们的生活,在这个数字时代,我们身边的一切都被“数字化”了。只有一处,也许是由于其本身的根深蒂固,......一起来看看 《颠覆医疗》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具