75 lines
1.9 KiB
Go
75 lines
1.9 KiB
Go
package contracts
|
|
|
|
import (
|
|
"git.fsdpf.net/go/db"
|
|
"git.fsdpf.net/go/req"
|
|
)
|
|
|
|
type ConditionType string
|
|
type ConditionOperator string
|
|
type ConditionTokenType string
|
|
|
|
const (
|
|
OR ConditionType = "OR"
|
|
AND ConditionType = "AND"
|
|
)
|
|
|
|
const (
|
|
SQL ConditionTokenType = "sql"
|
|
FUNC ConditionTokenType = "func"
|
|
PARAM ConditionTokenType = "param"
|
|
STRING ConditionTokenType = "string"
|
|
)
|
|
|
|
const (
|
|
IS_NULL ConditionOperator = "IS NULL"
|
|
IS_NOT_NULL ConditionOperator = "IS NOT NULL"
|
|
EQ ConditionOperator = "="
|
|
NE ConditionOperator = "!="
|
|
GT ConditionOperator = ">"
|
|
GE ConditionOperator = ">="
|
|
LT ConditionOperator = "<"
|
|
LE ConditionOperator = "<="
|
|
LIKE ConditionOperator = "LIKE"
|
|
NOT_LIKE ConditionOperator = "NOT LIKE"
|
|
IN ConditionOperator = "IN"
|
|
NOT_IN ConditionOperator = "NOT IN"
|
|
REGEXP ConditionOperator = "REGEXP"
|
|
NOT_REGEXP ConditionOperator = "NOT REGEXP"
|
|
)
|
|
|
|
type Condition interface {
|
|
Type() ConditionType
|
|
IsEmpty() bool
|
|
IsNotEmpty() bool
|
|
IsAlwaysRight() bool
|
|
ToSql(ConditionTokenValue) db.Expression
|
|
AppendTo(Condition)
|
|
SetExpr(ConditionExpr) Condition
|
|
SetCondition(Condition) Condition
|
|
SetMatchPrefix(string) Condition
|
|
GetFields(operator ConditionOperator, types ...ConditionTokenType) map[string]string
|
|
GetFieldsValue(m ConditionTokenValue, isWithResource bool) map[string]any
|
|
}
|
|
|
|
type ConditionExpr interface {
|
|
GetField() string
|
|
GetFieldResource() string
|
|
GetOperator() ConditionOperator
|
|
|
|
SetMatchPrefix(string) ConditionExpr
|
|
|
|
AppendTo(Condition)
|
|
ToSql(m ConditionTokenValue) db.Expression
|
|
GetTokenName() string
|
|
GetTokenType() ConditionTokenType
|
|
GetTokenValue(ConditionTokenValue) any
|
|
GetTokenSqlValue(ConditionTokenValue) string
|
|
IsIgnoreEmptyParma(ConditionTokenValue) bool
|
|
}
|
|
|
|
type ConditionTokenValue interface {
|
|
GetParam(k string) req.GlobalParams
|
|
GetGlobalParamsUser() req.User
|
|
}
|