38 lines
945 B
Ruby
38 lines
945 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module Pagination
|
|
module Keyset
|
|
module InOperatorOptimization
|
|
class OrderByColumnData < ColumnData
|
|
extend ::Gitlab::Utils::Override
|
|
|
|
attr_reader :column
|
|
|
|
# column - a ColumnOrderDefinition object
|
|
# as - custom alias for the column
|
|
# arel_table - relation where the column is located
|
|
def initialize(column, as, arel_table)
|
|
super(column.attribute_name.to_s, as, arel_table)
|
|
@column = column
|
|
end
|
|
|
|
override :arel_column
|
|
def arel_column
|
|
column.column_expression
|
|
end
|
|
|
|
override :column_expression
|
|
def column_expression
|
|
arel_table[original_column_name]
|
|
end
|
|
|
|
def column_for_projection
|
|
column.column_expression.as(original_column_name)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|