Module: Types::DesignManagement::DesignFields

Includes:
BaseInterface
Defined in:
app/graphql/types/design_management/design_fields.rb

Instance Method Summary collapse

Instance Method Details

#cached_actions_for_version(version) ⇒ Object



65
66
67
68
69
# File 'app/graphql/types/design_management/design_fields.rb', line 65

def cached_actions_for_version(version)
  Gitlab::SafeRequestStore.fetch(['DesignFields', 'actions_for_version', version.id]) do
    version.actions.index_by(&:design_id)
  end
end

#diff_refs(parent:) ⇒ Object



37
38
39
40
# File 'app/graphql/types/design_management/design_fields.rb', line 37

def diff_refs(parent:)
  version = cached_stateful_version(parent)
  version.diff_refs
end

#event(parent:) ⇒ Object



57
58
59
60
61
62
63
# File 'app/graphql/types/design_management/design_fields.rb', line 57

def event(parent:)
  version = cached_stateful_version(parent)

  action = cached_actions_for_version(version)[design.id]

  action&.event || ::Types::DesignManagement::DesignVersionEventEnum::NONE
end

#image(parent:) ⇒ Object



42
43
44
45
46
# File 'app/graphql/types/design_management/design_fields.rb', line 42

def image(parent:)
  sha = cached_stateful_version(parent).sha

  Gitlab::UrlBuilder.build(design, ref: sha)
end

#image_v432x230(parent:) ⇒ Object



48
49
50
51
52
53
54
55
# File 'app/graphql/types/design_management/design_fields.rb', line 48

def image_v432x230(parent:)
  Gitlab::Graphql::Lazy.with_value(lazy_action(parent)) do |action|
    # A `nil` return value indicates that the image has not been processed
    next unless action&.image_v432x230&.file

    Gitlab::UrlBuilder.build(action.design, ref: action.version.sha, size: :v432x230)
  end
end

#issueObject



75
76
77
# File 'app/graphql/types/design_management/design_fields.rb', line 75

def issue
  ::Gitlab::Graphql::Loaders::BatchModelLoader.new(::Issue, design.issue_id).find
end

#projectObject



71
72
73
# File 'app/graphql/types/design_management/design_fields.rb', line 71

def project
  ::Gitlab::Graphql::Loaders::BatchModelLoader.new(::Project, design.project_id).find
end