# frozen_string_literal: true

module Atlassian
  module JiraConnect
    module Serializers
      class BranchEntity < BaseEntity
        expose :id do |branch|
          Digest::SHA256.hexdigest(branch.name)
        end
        expose :issueKeys do |branch|
          JiraIssueKeyExtractor.new(branch.name).issue_keys
        end
        expose :name
        expose :lastCommit, using: JiraConnect::Serializers::CommitEntity do |branch, options|
          options[:project].commit(branch.dereferenced_target)
        end

        expose :url do |branch, options|
          project_commits_url(options[:project], branch.name)
        end
        expose :createPullRequestUrl do |branch, options|
          project_new_merge_request_url(
            options[:project],
            merge_request: {
              source_branch: branch.name
            }
          )
        end
      end
    end
  end
end
