-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsql_expression.go
More file actions
30 lines (26 loc) · 1.18 KB
/
sql_expression.go
File metadata and controls
30 lines (26 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package gojson2sql
import (
"strings"
"github.com/goccy/go-json"
)
func GetSqlExpression(operator SQLOperatorEnum, datatype SQLDataTypeEnum, isStatic bool, value ...json.RawMessage) string {
op := strings.ToUpper(string(operator))
dt := strings.ToUpper(string(datatype))
switch op {
case string(Equal), string(NotEqual), string(LessThan), string(LessEqual), string(GreaterThan), string(GreaterEqual):
return string(op) + " " + ExtractValueByDataType(SQLDataTypeEnum(dt), value[0], isStatic)
case string(Like), string(Ilike), string(NotLike):
return string(op) + " " + ExtractValueByDataType(SQLDataTypeEnum(dt), value[0], isStatic)
case string(Between):
var valueRange ValueRange
json.Unmarshal(value[0], &valueRange)
return string(op) + " " + ExtractValueByDataType(SQLDataTypeEnum(dt), json.RawMessage(valueRange.From), isStatic) + " AND " + ExtractValueByDataType(SQLDataTypeEnum(dt), json.RawMessage(valueRange.To), isStatic)
case string(In), string(NotIn):
var values = ExtractValueByDataType(SQLDataTypeEnum(dt), json.RawMessage(value[0]), isStatic)
return string(op) + " (" + values + ")"
case string(IsNull), string(IsNotNull):
return string(op)
default:
return ""
}
}