This repository has been archived on 2022-09-04. You can view files and clone it, but cannot push or open issues or pull requests.
shared/models/helpers.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 ""
}