Strictly type Integer and Real expressions.

This commit is contained in:
zer0sub 2019-05-31 12:59:57 +02:00
parent 7f5ba98819
commit 2b6288d317
32 changed files with 640 additions and 547 deletions

View file

@ -1,73 +1,73 @@
package sqlbuilder
type boolExpression interface {
type BoolExpression interface {
expression
EQ(expression boolExpression) boolExpression
NOT_EQ(expression boolExpression) boolExpression
IS_DISTINCT_FROM(rhs boolExpression) boolExpression
IS_NOT_DISTINCT_FROM(rhs boolExpression) boolExpression
EQ(expression BoolExpression) BoolExpression
NOT_EQ(expression BoolExpression) BoolExpression
IS_DISTINCT_FROM(rhs BoolExpression) BoolExpression
IS_NOT_DISTINCT_FROM(rhs BoolExpression) BoolExpression
IS_TRUE() boolExpression
IS_NOT_TRUE() boolExpression
IS_FALSE() boolExpression
IS_NOT_FALSE() boolExpression
IS_UNKNOWN() boolExpression
IS_NOT_UNKNOWN() 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
AND(expression BoolExpression) BoolExpression
OR(expression BoolExpression) BoolExpression
}
type boolInterfaceImpl struct {
parent boolExpression
parent BoolExpression
}
func (b *boolInterfaceImpl) EQ(expression boolExpression) boolExpression {
func (b *boolInterfaceImpl) EQ(expression BoolExpression) BoolExpression {
return EQ(b.parent, expression)
}
func (b *boolInterfaceImpl) NOT_EQ(expression boolExpression) boolExpression {
func (b *boolInterfaceImpl) NOT_EQ(expression BoolExpression) BoolExpression {
return NOT_EQ(b.parent, expression)
}
func (b *boolInterfaceImpl) IS_DISTINCT_FROM(rhs boolExpression) boolExpression {
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 {
func (b *boolInterfaceImpl) IS_NOT_DISTINCT_FROM(rhs BoolExpression) BoolExpression {
return IS_NOT_DISTINCT_FROM(b.parent, rhs)
}
func (b *boolInterfaceImpl) AND(expression boolExpression) boolExpression {
func (b *boolInterfaceImpl) AND(expression BoolExpression) BoolExpression {
return And(b.parent, expression)
}
func (b *boolInterfaceImpl) OR(expression boolExpression) boolExpression {
func (b *boolInterfaceImpl) OR(expression BoolExpression) BoolExpression {
return Or(b.parent, expression)
}
func (b *boolInterfaceImpl) IS_TRUE() boolExpression {
func (b *boolInterfaceImpl) IS_TRUE() BoolExpression {
return IS_TRUE(b.parent)
}
func (b *boolInterfaceImpl) IS_NOT_TRUE() boolExpression {
func (b *boolInterfaceImpl) IS_NOT_TRUE() BoolExpression {
return IS_NOT_TRUE(b.parent)
}
func (b *boolInterfaceImpl) IS_FALSE() boolExpression {
func (b *boolInterfaceImpl) IS_FALSE() BoolExpression {
return IS_FALSE(b.parent)
}
func (b *boolInterfaceImpl) IS_NOT_FALSE() boolExpression {
func (b *boolInterfaceImpl) IS_NOT_FALSE() BoolExpression {
return IS_NOT_FALSE(b.parent)
}
func (b *boolInterfaceImpl) IS_UNKNOWN() boolExpression {
func (b *boolInterfaceImpl) IS_UNKNOWN() BoolExpression {
return IS_UNKNOWN(b.parent)
}
func (b *boolInterfaceImpl) IS_NOT_UNKNOWN() boolExpression {
func (b *boolInterfaceImpl) IS_NOT_UNKNOWN() BoolExpression {
return IS_NOT_UNKNOWN(b.parent)
}
@ -79,7 +79,7 @@ type binaryBoolExpression struct {
binaryOpExpression
}
func newBinaryBoolExpression(lhs, rhs expression, operator string) boolExpression {
func newBinaryBoolExpression(lhs, rhs expression, operator string) BoolExpression {
boolExpression := binaryBoolExpression{}
boolExpression.binaryOpExpression = newBinaryExpression(lhs, rhs, operator)
@ -97,7 +97,7 @@ type prefixBoolExpression struct {
prefixOpExpression
}
func newPrefixBoolExpression(expression expression, operator string) boolExpression {
func newPrefixBoolExpression(expression expression, operator string) BoolExpression {
exp := prefixBoolExpression{}
exp.prefixOpExpression = newPrefixExpression(expression, operator)
@ -115,7 +115,7 @@ type postfixBoolOpExpression struct {
postfixOpExpression
}
func newPostifxBoolExpression(expression expression, operator string) boolExpression {
func newPostifxBoolExpression(expression expression, operator string) BoolExpression {
exp := postfixBoolOpExpression{}
exp.postfixOpExpression = newPostfixOpExpression(expression, operator)