diff --git a/util/sqlgen/fields.go b/util/sqlgen/columns.go similarity index 50% rename from util/sqlgen/fields.go rename to util/sqlgen/columns.go index ab8b063b77be7c57bf8238ecb2955263821f4c95..90c66717727f568852f3f369609a6d85cfc22fa2 100644 --- a/util/sqlgen/fields.go +++ b/util/sqlgen/columns.go @@ -9,13 +9,16 @@ type Columns struct { } func (self Columns) String() string { - out := make([]string, len(self.v)) + if len(self.v) > 0 { + out := make([]string, len(self.v)) - for i := range self.v { - out[i] = self.v[i].String() - } + for i := range self.v { + out[i] = self.v[i].String() + } - return strings.Join(out, sqlColumnComma) + return strings.Join(out, sqlColumnComma) + } + return "" } func (self Columns) Len() int { diff --git a/util/sqlgen/main.go b/util/sqlgen/main.go index f8ed4017332779c1e38f0f15dbd8087f581c9783..a67351bccc58d136eb2a1beeddd10bdcd0c97e88 100644 --- a/util/sqlgen/main.go +++ b/util/sqlgen/main.go @@ -18,7 +18,13 @@ const ( {{end}} ` sqlSelectLayout = ` - SELECT {{.Columns}} + SELECT + + {{if .Columns}} + {{.Columns}} + {{else}} + * + {{end}} FROM {{.Source}} @@ -80,18 +86,14 @@ const ( DROP TABLE {{.Source}} ` - sqlTautology = `1 = 1` - sqlAllFields = `*` sqlAndKeyword = `AND` sqlOrKeyword = `OR` - sqlDefaultOperator = `=` sqlDescKeyword = `DESC` sqlAscKeyword = `ASC` + sqlDefaultOperator = `=` sqlConditionGroup = `({{.}})` sqlColumnValue = `{{.Column}} {{.Operator}} {{.Value}}` - - sqlFunction = `{{.Function}}({{.Value}})` ) type Type uint diff --git a/util/sqlgen/main_test.go b/util/sqlgen/main_test.go index 43d3ef68e7ad5501fcdbd1a2aeb1c75c974d5990..acfc058b70e922afd3d69d9fd0ae076cb4e76246 100644 --- a/util/sqlgen/main_test.go +++ b/util/sqlgen/main_test.go @@ -103,6 +103,23 @@ func TestSelectCountWhere(t *testing.T) { } } +func TestSelectStarFrom(t *testing.T) { + var s, e string + var stmt Statement + + stmt = Statement{ + Type: SqlSelect, + Source: Source{"source name"}, + } + + s = trim(stmt.Compile()) + e = `SELECT * FROM "source name"` + + if s != e { + t.Fatalf("Got: %s, Expecting: %s", s, e) + } +} + func TestSelectFieldsFrom(t *testing.T) { var s, e string var stmt Statement