good morning!!!!

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

Adding column alias.

parent f2912711
Branches
Tags
No related merge requests found
......@@ -4,16 +4,37 @@ import (
"strings"
)
type column_t struct {
Name string
Alias string
}
type Column struct {
Value string
}
func (self Column) String() string {
chunks := strings.Split(self.Value, Layout.ColumnSeparator)
input := strings.TrimSpace(self.Value)
chunks := reAliasSeparator.Split(input, 2)
name := chunks[0]
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)
var alias string
for i := range chunks {
chunks[i] = mustParse(Layout.IdentifierQuote, Raw{chunks[i]})
if len(chunks) > 1 {
alias = strings.TrimSpace(chunks[1])
alias = mustParse(Layout.IdentifierQuote, Raw{alias})
}
return strings.Join(chunks, Layout.ColumnSeparator)
return mustParse(Layout.ColumnAliasLayout, column_t{name, alias})
}
......@@ -16,3 +16,16 @@ func TestColumnString(t *testing.T) {
t.Fatalf("Got: %s, Expecting: %s", s, e)
}
}
func TestColumnAs(t *testing.T) {
var s, e string
column := Column{"role.name as foo"}
s = column.String()
e = `"role"."name" AS "foo"`
if s != e {
t.Fatalf("Got: %s, Expecting: %s", s, e)
}
}
......@@ -18,6 +18,7 @@ const (
defaultColumnValue = `{{.Column}} {{.Operator}} {{.Value}}`
defaultTableAliasLayout = `{{.Name}}{{if .Alias}} AS {{.Alias}}{{end}}`
defaultColumnAliasLayout = `{{.Name}}{{if .Alias}} AS {{.Alias}}{{end}}`
defaultSortByColumnLayout = `{{.Column}} {{.Sort}}`
......
......@@ -16,6 +16,7 @@ type layout struct {
ClauseOperator string
ColumnValue string
TableAliasLayout string
ColumnAliasLayout string
SortByColumnLayout string
WhereLayout string
OrderByLayout string
......@@ -45,6 +46,7 @@ var Layout = layout{
defaultClauseOperator,
defaultColumnValue,
defaultTableAliasLayout,
defaultColumnAliasLayout,
defaultSortByColumnLayout,
defaultWhereLayout,
defaultOrderByLayout,
......
......@@ -7,7 +7,7 @@ import (
var (
reTableSeparator = regexp.MustCompile(`\s*?,\s*?`)
reAliasSeparator = regexp.MustCompile(`(?i:AS)`)
reAliasSeparator = regexp.MustCompile(`(?i:\s+AS\s+)`)
)
type table_t struct {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment