lib/schemas/pull_request/links.ex

defmodule GitHub.PullRequest.Links do
  @moduledoc """
  Provides struct and types for a PullRequest.Links
  """
  use GitHub.Encoder

  @type simple :: %__MODULE__{
          __info__: map,
          comments: GitHub.Link.t(),
          commits: GitHub.Link.t(),
          html: GitHub.Link.t(),
          issue: GitHub.Link.t(),
          review_comment: GitHub.Link.t(),
          review_comments: GitHub.Link.t(),
          self: GitHub.Link.t(),
          statuses: GitHub.Link.t()
        }

  @type t :: %__MODULE__{
          __info__: map,
          comments: GitHub.Link.t(),
          commits: GitHub.Link.t(),
          html: GitHub.Link.t(),
          issue: GitHub.Link.t(),
          review_comment: GitHub.Link.t(),
          review_comments: GitHub.Link.t(),
          self: GitHub.Link.t(),
          statuses: GitHub.Link.t()
        }

  defstruct [
    :__info__,
    :comments,
    :commits,
    :html,
    :issue,
    :review_comment,
    :review_comments,
    :self,
    :statuses
  ]

  @doc false
  @spec __fields__(atom) :: keyword
  def __fields__(type \\ :t)

  def __fields__(:simple) do
    [
      comments: {GitHub.Link, :t},
      commits: {GitHub.Link, :t},
      html: {GitHub.Link, :t},
      issue: {GitHub.Link, :t},
      review_comment: {GitHub.Link, :t},
      review_comments: {GitHub.Link, :t},
      self: {GitHub.Link, :t},
      statuses: {GitHub.Link, :t}
    ]
  end

  def __fields__(:t) do
    [
      comments: {GitHub.Link, :t},
      commits: {GitHub.Link, :t},
      html: {GitHub.Link, :t},
      issue: {GitHub.Link, :t},
      review_comment: {GitHub.Link, :t},
      review_comments: {GitHub.Link, :t},
      self: {GitHub.Link, :t},
      statuses: {GitHub.Link, :t}
    ]
  end
end