good morning!!!!

Skip to content
Snippets Groups Projects
Commit 85eb8243 authored by José Carlos Nieto's avatar José Carlos Nieto
Browse files

Support for raw select statementes.

parent cbbdb6e9
No related branches found
No related tags found
No related merge requests found
package sqlgen
import (
"fmt"
"strings"
)
......@@ -10,31 +11,39 @@ type column_t struct {
}
type Column struct {
Value string
Value interface{}
}
func (self Column) Compile(layout *Template) string {
input := strings.TrimSpace(self.Value)
chunks := reAliasSeparator.Split(input, 2)
switch value := self.Value.(type) {
case string:
input := strings.TrimSpace(value)
name := chunks[0]
chunks := reAliasSeparator.Split(input, 2)
nameChunks := strings.SplitN(name, layout.ColumnSeparator, 2)
name := chunks[0]
for i := range nameChunks {
nameChunks[i] = strings.TrimSpace(nameChunks[i])
nameChunks[i] = mustParse(layout.IdentifierQuote, Raw{nameChunks[i]})
}
nameChunks := strings.SplitN(name, layout.ColumnSeparator, 2)
for i := range nameChunks {
nameChunks[i] = strings.TrimSpace(nameChunks[i])
nameChunks[i] = mustParse(layout.IdentifierQuote, Raw{nameChunks[i]})
}
name = strings.Join(nameChunks, layout.ColumnSeparator)
name = strings.Join(nameChunks, layout.ColumnSeparator)
var alias string
var alias string
if len(chunks) > 1 {
alias = strings.TrimSpace(chunks[1])
alias = mustParse(layout.IdentifierQuote, Raw{alias})
}
if len(chunks) > 1 {
alias = strings.TrimSpace(chunks[1])
alias = mustParse(layout.IdentifierQuote, Raw{alias})
return mustParse(layout.ColumnAliasLayout, column_t{name, alias})
case Raw:
return value.String()
}
return mustParse(layout.ColumnAliasLayout, column_t{name, alias})
return fmt.Sprintf("%v", self.Value)
}
......@@ -29,3 +29,16 @@ func TestColumnAs(t *testing.T) {
t.Fatalf("Got: %s, Expecting: %s", s, e)
}
}
func TestColumnRaw(t *testing.T) {
var s, e string
column := Column{Raw{"role.name As foo"}}
s = column.Compile(defaultTemplate)
e = `role.name As foo`
if s != e {
t.Fatalf("Got: %s, Expecting: %s", s, e)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment