51 lines
1.4 KiB
Ruby
51 lines
1.4 KiB
Ruby
|
# 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),
|
||
|
order: :id
|
||
|
).execute
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def version(at_version)
|
||
|
GitlabSchema.object_from_id(at_version)&.sync if at_version
|
||
|
end
|
||
|
|
||
|
def design_ids(ids)
|
||
|
ids&.map { |id| GlobalID.parse(id).model_id }
|
||
|
end
|
||
|
|
||
|
def issue
|
||
|
object.issue
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|