defmodule GitHub.PullRequest.Head do
@moduledoc """
Provides struct and types for a PullRequest.Head
"""
use GitHub.Encoder
@type minimal :: %__MODULE__{
__info__: map,
ref: String.t(),
repo: GitHub.PullRequest.HeadRepo.minimal(),
sha: String.t()
}
@type simple :: %__MODULE__{
__info__: map,
label: String.t(),
ref: String.t(),
repo: GitHub.Repository.t(),
sha: String.t(),
user: GitHub.User.simple() | nil
}
@type t :: %__MODULE__{
__info__: map,
label: String.t(),
ref: String.t(),
repo: GitHub.PullRequest.HeadRepo.t() | nil,
sha: String.t(),
user: GitHub.PullRequest.HeadUser.t()
}
defstruct [:__info__, :label, :ref, :repo, :sha, :user]
@doc false
@spec __fields__(atom) :: keyword
def __fields__(type \\ :t)
def __fields__(:minimal) do
[
ref: {:string, :generic},
repo: {GitHub.PullRequest.HeadRepo, :minimal},
sha: {:string, :generic}
]
end
def __fields__(:simple) do
[
label: {:string, :generic},
ref: {:string, :generic},
repo: {GitHub.Repository, :t},
sha: {:string, :generic},
user: {:union, [{GitHub.User, :simple}, :null]}
]
end
def __fields__(:t) do
[
label: {:string, :generic},
ref: {:string, :generic},
repo: {:union, [{GitHub.PullRequest.HeadRepo, :t}, :null]},
sha: {:string, :generic},
user: {GitHub.PullRequest.HeadUser, :t}
]
end
end