104 lines
1.9 KiB
Go
104 lines
1.9 KiB
Go
package models
|
|
|
|
import (
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
func addAliasToColumnName(column, prefix string) string {
|
|
if prefix != "" && !strings.HasPrefix(column, prefix+".") {
|
|
column = wrapStringInDoubleQuotes(prefix) + "." + wrapStringInDoubleQuotes(column)
|
|
} else {
|
|
column = wrapStringInDoubleQuotes(column)
|
|
}
|
|
return column
|
|
}
|
|
|
|
func wrapStringInDoubleQuotes(str string) string {
|
|
return `"` + str + `"`
|
|
}
|
|
|
|
func buildConditionEquals(column string) string {
|
|
return column + " = ?"
|
|
}
|
|
|
|
func buildConditionLT(column string) string {
|
|
return column + " < ?"
|
|
}
|
|
|
|
func buildConditionLTE(column string) string {
|
|
return column + " <= ?"
|
|
}
|
|
|
|
func buildConditionGT(column string) string {
|
|
return column + " > ?"
|
|
}
|
|
|
|
func buildConditionGTE(column string) string {
|
|
return column + " >= ?"
|
|
}
|
|
|
|
func buildConditionMatch(column string) string {
|
|
return column + " LIKE ?"
|
|
}
|
|
|
|
func buildConditionIEQ(column string) string {
|
|
return column + " ILIKE ?"
|
|
}
|
|
|
|
func buildConditionArray(column string) string {
|
|
return column + " = ANY(?)"
|
|
}
|
|
|
|
func buildConditionNotInArray(column string) string {
|
|
return "NOT (" + buildConditionArray(column) + ")"
|
|
}
|
|
|
|
func isZero(v interface{}) bool {
|
|
switch c := v.(type) {
|
|
case string:
|
|
return c == ""
|
|
case *string:
|
|
return c == nil
|
|
case []string:
|
|
return c == nil || len(c) == 0
|
|
case []VersionCode:
|
|
return c == nil || len(c) == 0
|
|
case []ServerStatus:
|
|
return c == nil || len(c) == 0
|
|
case int:
|
|
return c == 0
|
|
case *int:
|
|
return c == nil
|
|
case []int:
|
|
return c == nil || len(c) == 0
|
|
case float64:
|
|
return c == 0
|
|
case *float64:
|
|
return c == nil
|
|
case float32:
|
|
return c == 0
|
|
case *float32:
|
|
return c == nil
|
|
case bool:
|
|
return !c
|
|
case *bool:
|
|
return c == nil
|
|
case time.Time:
|
|
return c.IsZero()
|
|
case *time.Time:
|
|
return c == nil
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
func findStringWithPrefix(sl []string, prefix string) string {
|
|
for _, s := range sl {
|
|
if strings.HasPrefix(s, prefix) {
|
|
return s
|
|
}
|
|
}
|
|
return ""
|
|
}
|