jet/sqlbuilder/bool_expresion.go

127 lines
3.2 KiB
Go
Raw Normal View History

package sqlbuilder
2019-05-07 19:06:21 +02:00
type boolExpression interface {
expression
2019-03-31 09:17:28 +02:00
2019-05-29 14:03:38 +02:00
EQ(expression boolExpression) boolExpression
NOT_EQ(expression boolExpression) boolExpression
IS_DISTINCT_FROM(rhs boolExpression) boolExpression
IS_NOT_DISTINCT_FROM(rhs boolExpression) boolExpression
2019-03-31 14:07:58 +02:00
2019-05-07 19:06:21 +02:00
IS_TRUE() boolExpression
2019-05-29 14:03:38 +02:00
IS_NOT_TRUE() boolExpression
2019-05-07 19:06:21 +02:00
IS_FALSE() boolExpression
2019-05-29 14:03:38 +02:00
IS_NOT_FALSE() boolExpression
IS_UNKNOWN() boolExpression
IS_NOT_UNKNOWN() boolExpression
AND(expression boolExpression) boolExpression
OR(expression boolExpression) boolExpression
2019-03-31 09:17:28 +02:00
}
type boolInterfaceImpl struct {
2019-05-07 19:06:21 +02:00
parent boolExpression
2019-03-31 09:17:28 +02:00
}
2019-05-29 14:03:38 +02:00
func (b *boolInterfaceImpl) EQ(expression boolExpression) boolExpression {
return EQ(b.parent, expression)
2019-03-31 14:07:58 +02:00
}
2019-05-29 14:03:38 +02:00
func (b *boolInterfaceImpl) NOT_EQ(expression boolExpression) boolExpression {
return NOT_EQ(b.parent, expression)
2019-03-31 14:07:58 +02:00
}
func (b *boolInterfaceImpl) IS_DISTINCT_FROM(rhs boolExpression) boolExpression {
return IS_DISTINCT_FROM(b.parent, rhs)
}
func (b *boolInterfaceImpl) IS_NOT_DISTINCT_FROM(rhs boolExpression) boolExpression {
return IS_NOT_DISTINCT_FROM(b.parent, rhs)
}
2019-05-07 19:06:21 +02:00
func (b *boolInterfaceImpl) AND(expression boolExpression) boolExpression {
2019-03-31 09:17:28 +02:00
return And(b.parent, expression)
}
2019-05-07 19:06:21 +02:00
func (b *boolInterfaceImpl) OR(expression boolExpression) boolExpression {
2019-03-31 09:17:28 +02:00
return Or(b.parent, expression)
}
2019-05-29 14:03:38 +02:00
2019-05-07 19:06:21 +02:00
func (b *boolInterfaceImpl) IS_TRUE() boolExpression {
2019-05-29 14:03:38 +02:00
return IS_TRUE(b.parent)
2019-03-31 09:17:28 +02:00
}
2019-05-29 14:03:38 +02:00
func (b *boolInterfaceImpl) IS_NOT_TRUE() boolExpression {
return IS_NOT_TRUE(b.parent)
2019-03-31 09:17:28 +02:00
}
2019-05-29 14:03:38 +02:00
func (b *boolInterfaceImpl) IS_FALSE() boolExpression {
return IS_FALSE(b.parent)
2019-03-31 09:17:28 +02:00
}
2019-05-29 14:03:38 +02:00
func (b *boolInterfaceImpl) IS_NOT_FALSE() boolExpression {
return IS_NOT_FALSE(b.parent)
}
2019-03-31 09:17:28 +02:00
2019-05-29 14:03:38 +02:00
func (b *boolInterfaceImpl) IS_UNKNOWN() boolExpression {
return IS_UNKNOWN(b.parent)
}
2019-03-31 09:17:28 +02:00
2019-05-29 14:03:38 +02:00
func (b *boolInterfaceImpl) IS_NOT_UNKNOWN() boolExpression {
return IS_NOT_UNKNOWN(b.parent)
2019-03-31 09:17:28 +02:00
}
//---------------------------------------------------//
type binaryBoolExpression struct {
2019-03-31 14:07:58 +02:00
expressionInterfaceImpl
2019-03-31 09:17:28 +02:00
boolInterfaceImpl
2019-05-29 14:03:38 +02:00
binaryOpExpression
2019-03-31 09:17:28 +02:00
}
2019-05-07 19:06:21 +02:00
func newBinaryBoolExpression(lhs, rhs expression, operator string) boolExpression {
2019-03-31 09:17:28 +02:00
boolExpression := binaryBoolExpression{}
2019-05-29 14:03:38 +02:00
boolExpression.binaryOpExpression = newBinaryExpression(lhs, rhs, operator)
2019-03-31 14:07:58 +02:00
boolExpression.expressionInterfaceImpl.parent = &boolExpression
2019-03-31 09:17:28 +02:00
boolExpression.boolInterfaceImpl.parent = &boolExpression
return &boolExpression
}
//---------------------------------------------------//
type prefixBoolExpression struct {
2019-03-31 14:07:58 +02:00
expressionInterfaceImpl
2019-03-31 09:17:28 +02:00
boolInterfaceImpl
2019-05-29 14:03:38 +02:00
prefixOpExpression
2019-03-31 09:17:28 +02:00
}
2019-05-07 19:06:21 +02:00
func newPrefixBoolExpression(expression expression, operator string) boolExpression {
2019-05-29 14:03:38 +02:00
exp := prefixBoolExpression{}
exp.prefixOpExpression = newPrefixExpression(expression, operator)
2019-03-31 09:17:28 +02:00
2019-05-29 14:03:38 +02:00
exp.expressionInterfaceImpl.parent = &exp
exp.boolInterfaceImpl.parent = &exp
2019-05-29 14:03:38 +02:00
return &exp
}
2019-05-29 14:03:38 +02:00
//---------------------------------------------------//
type postfixBoolOpExpression struct {
expressionInterfaceImpl
boolInterfaceImpl
2019-05-29 14:03:38 +02:00
postfixOpExpression
}
2019-05-29 14:03:38 +02:00
func newPostifxBoolExpression(expression expression, operator string) boolExpression {
exp := postfixBoolOpExpression{}
exp.postfixOpExpression = newPostfixOpExpression(expression, operator)
2019-05-29 14:03:38 +02:00
exp.expressionInterfaceImpl.parent = &exp
exp.boolInterfaceImpl.parent = &exp
2019-05-29 14:03:38 +02:00
return &exp
}