diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 21:25:58 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 21:25:58 +0300 |
commit | a5f4bba440d7f9ea47046a0a561d49adf0a1e6d4 (patch) | |
tree | fb69158581673816a8cd895f9d352dcb3c678b1e /lib/gitlab/global_id | |
parent | d16b2e8639e99961de6ddc93909f3bb5c1445ba1 (diff) |
Add latest changes from gitlab-org/gitlab@14-0-stable-eev14.0.0-rc42
Diffstat (limited to 'lib/gitlab/global_id')
-rw-r--r-- | lib/gitlab/global_id/deprecations.rb | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/gitlab/global_id/deprecations.rb b/lib/gitlab/global_id/deprecations.rb new file mode 100644 index 00000000000..ac4a44e0e10 --- /dev/null +++ b/lib/gitlab/global_id/deprecations.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +module Gitlab + module GlobalId + module Deprecations + Deprecation = Struct.new(:old_model_name, :new_model_name, :milestone, keyword_init: true) + + # Contains the deprecations in place. + # Example: + # + # DEPRECATIONS = [ + # Deprecation.new(old_model_name: 'PrometheusService', new_model_name: 'Integrations::Prometheus', milestone: '14.0') + # ].freeze + DEPRECATIONS = [ + # This works around an accidentally released argument named as `"EEIterationID"` in 7000489db. + Deprecation.new(old_model_name: 'EEIteration', new_model_name: 'Iteration', milestone: '13.3') + ].freeze + + # Maps of the DEPRECATIONS Hash for quick access. + OLD_NAME_MAP = DEPRECATIONS.index_by(&:old_model_name).freeze + NEW_NAME_MAP = DEPRECATIONS.index_by(&:new_model_name).freeze + OLD_GRAPHQL_NAME_MAP = DEPRECATIONS.index_by do |d| + Types::GlobalIDType.model_name_to_graphql_name(d.old_model_name) + end.freeze + + def self.deprecated?(old_model_name) + OLD_NAME_MAP.key?(old_model_name) + end + + def self.deprecation_for(old_model_name) + OLD_NAME_MAP[old_model_name] + end + + def self.deprecation_by(new_model_name) + NEW_NAME_MAP[new_model_name] + end + + # Returns the new `graphql_name` (Type#graphql_name) of a deprecated GID, + # or the `graphql_name` argument given if no deprecation applies. + def self.apply_to_graphql_name(graphql_name) + return graphql_name unless deprecation = OLD_GRAPHQL_NAME_MAP[graphql_name] + + Types::GlobalIDType.model_name_to_graphql_name(deprecation.new_model_name) + end + end + end +end |