Class: Gitlab::Pagination::Keyset::InOperatorOptimization::Strategies::OrderValuesLoaderStrategy

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy.rb

Instance Method Summary collapse

Constructor Details

#initialize(model, order_by_columns) ⇒ OrderValuesLoaderStrategy

Returns a new instance of OrderValuesLoaderStrategy.



9
10
11
12
# File 'lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy.rb', line 9

def initialize(model, order_by_columns)
  @model = model
  @order_by_columns = order_by_columns
end

Instance Method Details

#columnsObject



18
19
20
# File 'lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy.rb', line 18

def columns
  order_by_columns.array_lookup_expressions_by_position(QueryBuilder::RECURSIVE_CTE_NAME)
end

#final_projectionsObject



22
23
24
# File 'lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy.rb', line 22

def final_projections
  order_by_columns.map(&:original_column_name)
end

#initializer_columnsObject



14
15
16
# File 'lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy.rb', line 14

def initializer_columns
  order_by_columns.map { |column_data| null_with_type_cast(column_data) }
end