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
No related branches found
No related tags found
No related merge requests found
...@@ -4,16 +4,37 @@ import ( ...@@ -4,16 +4,37 @@ import (
"strings" "strings"
) )
type column_t struct {
Name string
Alias string
}
type Column struct { type Column struct {
Value string Value string
} }
func (self Column) String() 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 { if len(chunks) > 1 {
chunks[i] = mustParse(Layout.IdentifierQuote, Raw{chunks[i]}) 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) { ...@@ -16,3 +16,16 @@ func TestColumnString(t *testing.T) {
t.Fatalf("Got: %s, Expecting: %s", s, e) 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)
}
}
...@@ -17,7 +17,8 @@ const ( ...@@ -17,7 +17,8 @@ const (
defaultClauseOperator = ` {{.}} ` defaultClauseOperator = ` {{.}} `
defaultColumnValue = `{{.Column}} {{.Operator}} {{.Value}}` defaultColumnValue = `{{.Column}} {{.Operator}} {{.Value}}`
defaultTableAliasLayout = `{{.Name}}{{if .Alias}} AS {{.Alias}}{{end}}` defaultTableAliasLayout = `{{.Name}}{{if .Alias}} AS {{.Alias}}{{end}}`
defaultColumnAliasLayout = `{{.Name}}{{if .Alias}} AS {{.Alias}}{{end}}`
defaultSortByColumnLayout = `{{.Column}} {{.Sort}}` defaultSortByColumnLayout = `{{.Column}} {{.Sort}}`
......
...@@ -16,6 +16,7 @@ type layout struct { ...@@ -16,6 +16,7 @@ type layout struct {
ClauseOperator string ClauseOperator string
ColumnValue string ColumnValue string
TableAliasLayout string TableAliasLayout string
ColumnAliasLayout string
SortByColumnLayout string SortByColumnLayout string
WhereLayout string WhereLayout string
OrderByLayout string OrderByLayout string
...@@ -45,6 +46,7 @@ var Layout = layout{ ...@@ -45,6 +46,7 @@ var Layout = layout{
defaultClauseOperator, defaultClauseOperator,
defaultColumnValue, defaultColumnValue,
defaultTableAliasLayout, defaultTableAliasLayout,
defaultColumnAliasLayout,
defaultSortByColumnLayout, defaultSortByColumnLayout,
defaultWhereLayout, defaultWhereLayout,
defaultOrderByLayout, defaultOrderByLayout,
......
...@@ -7,7 +7,7 @@ import ( ...@@ -7,7 +7,7 @@ import (
var ( var (
reTableSeparator = regexp.MustCompile(`\s*?,\s*?`) reTableSeparator = regexp.MustCompile(`\s*?,\s*?`)
reAliasSeparator = regexp.MustCompile(`(?i:AS)`) reAliasSeparator = regexp.MustCompile(`(?i:\s+AS\s+)`)
) )
type table_t struct { type table_t struct {
......
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