diff options
Diffstat (limited to 'app/graphql/resolvers/design_management/version/design_at_version_resolver.rb')
-rw-r--r-- | app/graphql/resolvers/design_management/version/design_at_version_resolver.rb | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/app/graphql/resolvers/design_management/version/design_at_version_resolver.rb b/app/graphql/resolvers/design_management/version/design_at_version_resolver.rb index 03f7908780c..70021057f71 100644 --- a/app/graphql/resolvers/design_management/version/design_at_version_resolver.rb +++ b/app/graphql/resolvers/design_management/version/design_at_version_resolver.rb @@ -5,17 +5,20 @@ module Resolvers module Version # Resolver for a DesignAtVersion object given an implicit version context class DesignAtVersionResolver < BaseResolver + DesignAtVersionID = ::Types::GlobalIDType[::DesignManagement::DesignAtVersion] + DesignID = ::Types::GlobalIDType[::DesignManagement::Design] + include Gitlab::Graphql::Authorize::AuthorizeResource type Types::DesignManagement::DesignAtVersionType, null: true authorize :read_design - argument :id, GraphQL::ID_TYPE, + argument :id, DesignAtVersionID, required: false, as: :design_at_version_id, description: 'The ID of the DesignAtVersion' - argument :design_id, GraphQL::ID_TYPE, + argument :design_id, DesignID, required: false, description: 'The ID of a specific design' argument :filename, GraphQL::STRING_TYPE, @@ -29,6 +32,11 @@ module Resolvers def resolve(design_id: nil, filename: nil, design_at_version_id: nil) validate_arguments(design_id, filename, design_at_version_id) + # TODO: remove this when the compatibility layer is removed + # See: https://gitlab.com/gitlab-org/gitlab/-/issues/257883 + design_id &&= DesignID.coerce_isolated_input(design_id) + design_at_version_id &&= DesignAtVersionID.coerce_isolated_input(design_at_version_id) + return unless Ability.allowed?(current_user, :read_design, issue) return specific_design_at_version(design_at_version_id) if design_at_version_id @@ -49,7 +57,7 @@ module Resolvers end def specific_design_at_version(id) - dav = GitlabSchema.object_from_id(id, expected_type: ::DesignManagement::DesignAtVersion) + dav = GitlabSchema.find_by_gid(id) return unless consistent?(dav) dav @@ -65,8 +73,8 @@ module Resolvers dav.design.visible_in?(version) end - def find(id, filename) - ids = [parse_design_id(id).model_id] if id + def find(gid, filename) + ids = [gid.model_id] if gid filenames = [filename] if filename ::DesignManagement::DesignsFinder @@ -74,10 +82,6 @@ module Resolvers .execute end - def parse_design_id(id) - GitlabSchema.parse_gid(id, expected_type: ::DesignManagement::Design) - end - def issue version.issue end |