Sha256: fa16ab4396d745518023d11234440949148a40ee653b5b36b2a60473361b3b84

Contents?: true

Size: 1.35 KB

Versions: 20

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

require_relative 'base'
require_relative 'shared/issuable'

module Gitlab
  module Triage
    module Resource
      class Issue < Base
        include Shared::Issuable

        DATE_FIELDS = %i[
          due_date
        ].freeze

        DATE_FIELDS.each do |field|
          define_field(field) do
            value = resource[field]

            Date.parse(value) if value
          end
        end

        def merge_requests_count
          @merge_requests_count ||= resource.dig(:merge_requests_count)
        end

        def related_merge_requests
          @related_merge_requests ||= network.query_api_cached(
            resource_url(sub_resource_type: 'related_merge_requests'))
            .map { |merge_request| MergeRequest.new(merge_request, parent: self) }
        end

        def closed_by
          @closed_by ||= network.query_api_cached(
            resource_url(sub_resource_type: 'closed_by'))
            .map { |merge_request| MergeRequest.new(merge_request, parent: self) }
        end

        def linked_issues
          @linked_issues ||= network.query_api_cached(
            resource_url(sub_resource_type: 'links'))
            .map { |issue| LinkedIssue.new(issue, parent: self) }
        end

        def expired?(today = Date.today)
          due_date && due_date < today
        end
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 2 rubygems

Version Path
gitlab-triage-1.44.3 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.44.2 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.44.1 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.44.0 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.43.2 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.43.1 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.43.0 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.42.2 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.42.1 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.42.0 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.41.0 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.40.0 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.30.0 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.29.0 lib/gitlab/triage/resource/issue.rb
payping-gitlab-triage-0.1.3 lib/gitlab/triage/resource/issue.rb
payping-gitlab-triage-0.1.2 lib/gitlab/triage/resource/issue.rb
payping-gitlab-triage-0.1.1 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.28.0 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.27.0 lib/gitlab/triage/resource/issue.rb
gitlab-triage-1.26.0 lib/gitlab/triage/resource/issue.rb