Improve serialization error handling.

This commit is contained in:
zer0sub 2019-05-13 12:33:11 +02:00
parent 1fd63b8783
commit 5ed7cf2b1c
8 changed files with 81 additions and 39 deletions

View file

@ -6,12 +6,6 @@ import (
"github.com/sub0zero/go-sqlbuilder/types"
)
const (
union = "UNION"
intersect = "INTERSECT"
except = "EXCEPT"
)
type setStatement interface {
Statement
expression
@ -24,6 +18,12 @@ type setStatement interface {
AsTable(alias string) expressionTable
}
const (
union = "UNION"
intersect = "INTERSECT"
except = "EXCEPT"
)
func UNION(selects ...rowsType) setStatement {
return newSetStatementImpl(union, false, selects...)
}
@ -99,6 +99,9 @@ func (us *setStatementImpl) AsTable(alias string) expressionTable {
}
func (s *setStatementImpl) serialize(statement statementType, out *queryData) error {
if s == nil {
return errors.New("Set statement is nil. ")
}
if s.orderBy != nil || s.limit >= 0 || s.offset >= 0 {
out.writeString("(")
@ -121,6 +124,9 @@ func (s *setStatementImpl) serialize(statement statementType, out *queryData) er
}
func (s *setStatementImpl) serializeImpl(out *queryData) error {
if s == nil {
return errors.New("Set statement is nil. ")
}
if len(s.selects) < 2 {
return errors.Newf("UNION Statement must have at least two SELECT statements.")