Class: Gitlab::Pagination::Keyset::InOperatorOptimization::Strategies::RecordLoaderStrategy
- Inherits:
-
Object
- Object
- Gitlab::Pagination::Keyset::InOperatorOptimization::Strategies::RecordLoaderStrategy
- Defined in:
- lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy.rb
Constant Summary collapse
- RECORDS_COLUMN =
'records'
Instance Method Summary collapse
- #columns ⇒ Object
- #final_projections ⇒ Object
-
#initialize(finder_query, model, order_by_columns) ⇒ RecordLoaderStrategy
constructor
A new instance of RecordLoaderStrategy.
- #initializer_columns ⇒ Object
Constructor Details
#initialize(finder_query, model, order_by_columns) ⇒ RecordLoaderStrategy
Returns a new instance of RecordLoaderStrategy.
11 12 13 14 15 16 17 18 |
# File 'lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy.rb', line 11 def initialize(finder_query, model, order_by_columns) verify_order_by_attributes_on_model!(model, order_by_columns) @finder_query = finder_query @order_by_columns = order_by_columns @table_name = model.table_name @model = model end |
Instance Method Details
#columns ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy.rb', line 24 def columns query = finder_query .call(*order_by_columns.array_lookup_expressions_by_position(QueryBuilder::RECURSIVE_CTE_NAME)) .select("#{table_name}") .limit(1) ["(#{query.to_sql})"] end |
#final_projections ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy.rb', line 33 def final_projections if @model.default_select_columns.is_a?(Array) @model.default_select_columns.map { |column| "(#{RECORDS_COLUMN}).#{column.name}" } else ["(#{RECORDS_COLUMN}).*"] end end |
#initializer_columns ⇒ Object
20 21 22 |
# File 'lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy.rb', line 20 def initializer_columns ["NULL::#{table_name} AS #{RECORDS_COLUMN}"] end |