...
1 package exp
2
3 import "fmt"
4
5 type (
6 aliasExpression struct {
7 aliased Expression
8 alias IdentifierExpression
9 }
10 )
11
12
13 func NewAliasExpression(exp Expression, alias interface{}) AliasedExpression {
14 switch v := alias.(type) {
15 case string:
16 return aliasExpression{aliased: exp, alias: ParseIdentifier(v)}
17 case IdentifierExpression:
18 return aliasExpression{aliased: exp, alias: v}
19 default:
20 panic(fmt.Sprintf("Cannot create alias from %+v", v))
21 }
22 }
23
24 func (ae aliasExpression) Clone() Expression {
25 return NewAliasExpression(ae.aliased, ae.alias.Clone())
26 }
27
28 func (ae aliasExpression) Expression() Expression {
29 return ae
30 }
31
32 func (ae aliasExpression) Aliased() Expression {
33 return ae.aliased
34 }
35
36 func (ae aliasExpression) GetAs() IdentifierExpression {
37 return ae.alias
38 }
39
40
41 func (ae aliasExpression) Schema(schema string) IdentifierExpression {
42 return ae.alias.Schema(schema)
43 }
44
45
46 func (ae aliasExpression) Table(table string) IdentifierExpression {
47 return ae.alias.Table(table)
48 }
49
50
51 func (ae aliasExpression) Col(col interface{}) IdentifierExpression {
52 return ae.alias.Col(col)
53 }
54
55
56
57 func (ae aliasExpression) All() IdentifierExpression {
58 return ae.alias.All()
59 }
60
View as plain text