...
1 package exp
2
3 type (
4 orderedExpression struct {
5 sortExpression Expression
6 direction SortDirection
7 nullSortType NullSortType
8 }
9 )
10
11
12 func asc(exp Expression) OrderedExpression {
13 return NewOrderedExpression(exp, AscDir, NoNullsSortType)
14 }
15
16
17 func desc(exp Expression) OrderedExpression {
18 return NewOrderedExpression(exp, DescSortDir, NoNullsSortType)
19 }
20
21
22 func NewOrderedExpression(exp Expression, direction SortDirection, sortType NullSortType) OrderedExpression {
23 return orderedExpression{sortExpression: exp, direction: direction, nullSortType: sortType}
24 }
25
26 func (oe orderedExpression) Clone() Expression {
27 return NewOrderedExpression(oe.sortExpression, oe.direction, oe.nullSortType)
28 }
29
30 func (oe orderedExpression) Expression() Expression {
31 return oe
32 }
33
34 func (oe orderedExpression) SortExpression() Expression {
35 return oe.sortExpression
36 }
37
38 func (oe orderedExpression) IsAsc() bool {
39 return oe.direction == AscDir
40 }
41
42 func (oe orderedExpression) NullSortType() NullSortType {
43 return oe.nullSortType
44 }
45
46 func (oe orderedExpression) NullsFirst() OrderedExpression {
47 return NewOrderedExpression(oe.sortExpression, oe.direction, NullsFirstSortType)
48 }
49
50 func (oe orderedExpression) NullsLast() OrderedExpression {
51 return NewOrderedExpression(oe.sortExpression, oe.direction, NullsLastSortType)
52 }
53
View as plain text