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