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:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-01 06:09:04 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-01 06:09:04 +0300
commitd0356412dfc91d02585f0a177c65677dbe2944a3 (patch)
tree5a2ac806b6ea6113475bb2a759f6b15c186fb482 /lib/gitlab/graphql
parent72817fd7c07d1b812623f8d5e27fc7bcecb4eed5 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/graphql')
-rw-r--r--lib/gitlab/graphql/connections/keyset/conditions/base_condition.rb8
-rw-r--r--lib/gitlab/graphql/connections/keyset/conditions/not_null_condition.rb10
-rw-r--r--lib/gitlab/graphql/connections/keyset/conditions/null_condition.rb6
-rw-r--r--lib/gitlab/graphql/connections/keyset/order_info.rb16
4 files changed, 23 insertions, 17 deletions
diff --git a/lib/gitlab/graphql/connections/keyset/conditions/base_condition.rb b/lib/gitlab/graphql/connections/keyset/conditions/base_condition.rb
index 22728cc0b65..8c0d71aff6d 100644
--- a/lib/gitlab/graphql/connections/keyset/conditions/base_condition.rb
+++ b/lib/gitlab/graphql/connections/keyset/conditions/base_condition.rb
@@ -6,8 +6,10 @@ module Gitlab
module Keyset
module Conditions
class BaseCondition
- def initialize(arel_table, names, values, operator, before_or_after)
- @arel_table, @names, @values, @operator, @before_or_after = arel_table, names, values, operator, before_or_after
+ def initialize(arel_table, order_list, values, operators, before_or_after)
+ @arel_table, @order_list, @values, @operators, @before_or_after = arel_table, order_list, values, operators, before_or_after
+
+ @before_or_after = :after unless [:after, :before].include?(@before_or_after)
end
def build
@@ -16,7 +18,7 @@ module Gitlab
private
- attr_reader :arel_table, :names, :values, :operator, :before_or_after
+ attr_reader :arel_table, :order_list, :values, :operators, :before_or_after
def table_condition(attribute, value, operator)
case operator
diff --git a/lib/gitlab/graphql/connections/keyset/conditions/not_null_condition.rb b/lib/gitlab/graphql/connections/keyset/conditions/not_null_condition.rb
index 3b56ddb996d..3239d27c0cd 100644
--- a/lib/gitlab/graphql/connections/keyset/conditions/not_null_condition.rb
+++ b/lib/gitlab/graphql/connections/keyset/conditions/not_null_condition.rb
@@ -12,7 +12,7 @@ module Gitlab
# If there is only one order field, we can assume it
# does not contain NULLs, and don't need additional
# conditions
- unless names.count == 1
+ unless order_list.count == 1
conditions << [second_attribute_condition, final_condition]
end
@@ -24,7 +24,7 @@ module Gitlab
# ex: "(relative_position > 23)"
def first_attribute_condition
<<~SQL
- (#{table_condition(names.first, values.first, operator.first).to_sql})
+ (#{table_condition(order_list.first, values.first, operators.first).to_sql})
SQL
end
@@ -32,9 +32,9 @@ module Gitlab
def second_attribute_condition
condition = <<~SQL
OR (
- #{table_condition(names.first, values.first, '=').to_sql}
+ #{table_condition(order_list.first, values.first, '=').to_sql}
AND
- #{table_condition(names[1], values[1], operator[1]).to_sql}
+ #{table_condition(order_list[1], values[1], operators[1]).to_sql}
)
SQL
@@ -45,7 +45,7 @@ module Gitlab
def final_condition
if before_or_after == :after
<<~SQL
- OR (#{table_condition(names.first, nil, 'is_null').to_sql})
+ OR (#{table_condition(order_list.first, nil, 'is_null').to_sql})
SQL
end
end
diff --git a/lib/gitlab/graphql/connections/keyset/conditions/null_condition.rb b/lib/gitlab/graphql/connections/keyset/conditions/null_condition.rb
index 71a74936d5d..18ea0692e2c 100644
--- a/lib/gitlab/graphql/connections/keyset/conditions/null_condition.rb
+++ b/lib/gitlab/graphql/connections/keyset/conditions/null_condition.rb
@@ -16,9 +16,9 @@ module Gitlab
def first_attribute_condition
condition = <<~SQL
(
- #{table_condition(names.first, nil, 'is_null').to_sql}
+ #{table_condition(order_list.first, nil, 'is_null').to_sql}
AND
- #{table_condition(names[1], values[1], operator[1]).to_sql}
+ #{table_condition(order_list[1], values[1], operators[1]).to_sql}
)
SQL
@@ -29,7 +29,7 @@ module Gitlab
def final_condition
if before_or_after == :before
<<~SQL
- OR (#{table_condition(names.first, nil, 'is_not_null').to_sql})
+ OR (#{table_condition(order_list.first, nil, 'is_not_null').to_sql})
SQL
end
end
diff --git a/lib/gitlab/graphql/connections/keyset/order_info.rb b/lib/gitlab/graphql/connections/keyset/order_info.rb
index 4d85e8f79b7..e112154cfbc 100644
--- a/lib/gitlab/graphql/connections/keyset/order_info.rb
+++ b/lib/gitlab/graphql/connections/keyset/order_info.rb
@@ -8,12 +8,12 @@ module Gitlab
attr_reader :attribute_name, :sort_direction
def initialize(order_value)
- if order_value.is_a?(String)
- @attribute_name, @sort_direction = extract_nulls_last_order(order_value)
- else
- @attribute_name = order_value.expr.name
- @sort_direction = order_value.direction
- end
+ @attribute_name, @sort_direction =
+ if order_value.is_a?(String)
+ extract_nulls_last_order(order_value)
+ else
+ extract_attribute_values(order_value)
+ end
end
def operator_for(before_or_after)
@@ -71,6 +71,10 @@ module Gitlab
[tokens.first, (tokens[1] == 'asc' ? :asc : :desc)]
end
+
+ def extract_attribute_values(order_value)
+ [order_value.expr.name, order_value.direction]
+ end
end
end
end