# frozen_string_literal: true module Resolvers module DesignManagement class DesignsResolver < BaseResolver argument :ids, [GraphQL::ID_TYPE], required: false, description: 'Filters designs by their ID' argument :filenames, [GraphQL::STRING_TYPE], required: false, description: 'Filters designs by their filename' argument :at_version, GraphQL::ID_TYPE, required: false, description: 'Filters designs to only those that existed at the version. ' \ 'If argument is omitted or nil then all designs will reflect the latest version' def self.single ::Resolvers::DesignManagement::DesignResolver end def resolve(ids: nil, filenames: nil, at_version: nil) ::DesignManagement::DesignsFinder.new( issue, current_user, ids: design_ids(ids), filenames: filenames, visible_at_version: version(at_version) ).execute end private def version(at_version) return unless at_version GitlabSchema.object_from_id(at_version, expected_type: ::DesignManagement::Version)&.sync end def design_ids(ids) ids&.map { |id| GlobalID.parse(id, expected_type: ::DesignManagement::Design).model_id } end def issue object.issue end end end end