Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy.rb')
-rw-r--r--lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy.rb b/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy.rb
index b12c33d6e51..51f38c1da58 100644
--- a/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy.rb
+++ b/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy.rb
@@ -9,6 +9,8 @@ module Gitlab
RECORDS_COLUMN = 'records'
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
@@ -34,6 +36,20 @@ module Gitlab
private
attr_reader :finder_query, :order_by_columns, :table_name
+
+ def verify_order_by_attributes_on_model!(model, order_by_columns)
+ order_by_columns.map(&:column).each do |column|
+ unless model.columns_hash[column.attribute_name.to_s]
+ text = <<~TEXT
+ The "RecordLoaderStrategy" does not support the following ORDER BY column because
+ it's not available on the \"#{model.table_name}\" table: #{column.attribute_name}
+
+ Omit the "finder_query" parameter to use the "OrderValuesLoaderStrategy".
+ TEXT
+ raise text
+ end
+ end
+ end
end
end
end