From d0356412dfc91d02585f0a177c65677dbe2944a3 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Sat, 1 Feb 2020 03:09:04 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../connections/keyset/conditions/base_condition.rb | 8 +++++--- .../connections/keyset/conditions/not_null_condition.rb | 10 +++++----- .../connections/keyset/conditions/null_condition.rb | 6 +++--- lib/gitlab/graphql/connections/keyset/order_info.rb | 16 ++++++++++------ 4 files changed, 23 insertions(+), 17 deletions(-) (limited to 'lib/gitlab/graphql') 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 -- cgit v1.2.3