116 lines
2.8 KiB
Go
116 lines
2.8 KiB
Go
package sqlbuilder
|
|
|
|
type boolExpression interface {
|
|
expression
|
|
|
|
EQ(expression boolExpression) boolExpression
|
|
NOT_EQ(expression boolExpression) boolExpression
|
|
|
|
IS_TRUE() boolExpression
|
|
IS_NOT_TRUE() boolExpression
|
|
IS_FALSE() boolExpression
|
|
IS_NOT_FALSE() boolExpression
|
|
IS_UNKNOWN() boolExpression
|
|
IS_NOT_UNKNOWN() boolExpression
|
|
|
|
AND(expression boolExpression) boolExpression
|
|
OR(expression boolExpression) boolExpression
|
|
}
|
|
|
|
type boolInterfaceImpl struct {
|
|
parent boolExpression
|
|
}
|
|
|
|
func (b *boolInterfaceImpl) EQ(expression boolExpression) boolExpression {
|
|
return EQ(b.parent, expression)
|
|
}
|
|
|
|
func (b *boolInterfaceImpl) NOT_EQ(expression boolExpression) boolExpression {
|
|
return NOT_EQ(b.parent, expression)
|
|
}
|
|
|
|
func (b *boolInterfaceImpl) AND(expression boolExpression) boolExpression {
|
|
return And(b.parent, expression)
|
|
}
|
|
|
|
func (b *boolInterfaceImpl) OR(expression boolExpression) boolExpression {
|
|
return Or(b.parent, expression)
|
|
}
|
|
|
|
func (b *boolInterfaceImpl) IS_TRUE() boolExpression {
|
|
return IS_TRUE(b.parent)
|
|
}
|
|
|
|
func (b *boolInterfaceImpl) IS_NOT_TRUE() boolExpression {
|
|
return IS_NOT_TRUE(b.parent)
|
|
}
|
|
|
|
func (b *boolInterfaceImpl) IS_FALSE() boolExpression {
|
|
return IS_FALSE(b.parent)
|
|
}
|
|
|
|
func (b *boolInterfaceImpl) IS_NOT_FALSE() boolExpression {
|
|
return IS_NOT_FALSE(b.parent)
|
|
}
|
|
|
|
func (b *boolInterfaceImpl) IS_UNKNOWN() boolExpression {
|
|
return IS_UNKNOWN(b.parent)
|
|
}
|
|
|
|
func (b *boolInterfaceImpl) IS_NOT_UNKNOWN() boolExpression {
|
|
return IS_NOT_UNKNOWN(b.parent)
|
|
}
|
|
|
|
//---------------------------------------------------//
|
|
type binaryBoolExpression struct {
|
|
expressionInterfaceImpl
|
|
boolInterfaceImpl
|
|
|
|
binaryOpExpression
|
|
}
|
|
|
|
func newBinaryBoolExpression(lhs, rhs expression, operator string) boolExpression {
|
|
boolExpression := binaryBoolExpression{}
|
|
|
|
boolExpression.binaryOpExpression = newBinaryExpression(lhs, rhs, operator)
|
|
boolExpression.expressionInterfaceImpl.parent = &boolExpression
|
|
boolExpression.boolInterfaceImpl.parent = &boolExpression
|
|
|
|
return &boolExpression
|
|
}
|
|
|
|
//---------------------------------------------------//
|
|
type prefixBoolExpression struct {
|
|
expressionInterfaceImpl
|
|
boolInterfaceImpl
|
|
|
|
prefixOpExpression
|
|
}
|
|
|
|
func newPrefixBoolExpression(expression expression, operator string) boolExpression {
|
|
exp := prefixBoolExpression{}
|
|
exp.prefixOpExpression = newPrefixExpression(expression, operator)
|
|
|
|
exp.expressionInterfaceImpl.parent = &exp
|
|
exp.boolInterfaceImpl.parent = &exp
|
|
|
|
return &exp
|
|
}
|
|
|
|
//---------------------------------------------------//
|
|
type postfixBoolOpExpression struct {
|
|
expressionInterfaceImpl
|
|
boolInterfaceImpl
|
|
|
|
postfixOpExpression
|
|
}
|
|
|
|
func newPostifxBoolExpression(expression expression, operator string) boolExpression {
|
|
exp := postfixBoolOpExpression{}
|
|
exp.postfixOpExpression = newPostfixOpExpression(expression, operator)
|
|
|
|
exp.expressionInterfaceImpl.parent = &exp
|
|
exp.boolInterfaceImpl.parent = &exp
|
|
|
|
return &exp
|
|
}
|