Files
2025-03-22 23:02:05 +08:00

53 lines
1.5 KiB
Go

package exp
type (
orderedExpression struct {
sortExpression Expression
direction SortDirection
nullSortType NullSortType
}
)
// used internally to create a new SORT_ASC OrderedExpression
func asc(exp Expression) OrderedExpression {
return NewOrderedExpression(exp, AscDir, NoNullsSortType)
}
// used internally to create a new SORT_DESC OrderedExpression
func desc(exp Expression) OrderedExpression {
return NewOrderedExpression(exp, DescSortDir, NoNullsSortType)
}
// used internally to create a new SORT_ASC OrderedExpression
func NewOrderedExpression(exp Expression, direction SortDirection, sortType NullSortType) OrderedExpression {
return orderedExpression{sortExpression: exp, direction: direction, nullSortType: sortType}
}
func (oe orderedExpression) Clone() Expression {
return NewOrderedExpression(oe.sortExpression, oe.direction, oe.nullSortType)
}
func (oe orderedExpression) Expression() Expression {
return oe
}
func (oe orderedExpression) SortExpression() Expression {
return oe.sortExpression
}
func (oe orderedExpression) IsAsc() bool {
return oe.direction == AscDir
}
func (oe orderedExpression) NullSortType() NullSortType {
return oe.nullSortType
}
func (oe orderedExpression) NullsFirst() OrderedExpression {
return NewOrderedExpression(oe.sortExpression, oe.direction, NullsFirstSortType)
}
func (oe orderedExpression) NullsLast() OrderedExpression {
return NewOrderedExpression(oe.sortExpression, oe.direction, NullsLastSortType)
}