defmodule GitHub.PullRequest do
@moduledoc """
Provides struct and types for PullRequest, PullRequestMinimal, PullRequestSimple
"""
use GitHub.Encoder
@type minimal :: %__MODULE__{
__info__: map,
base: map,
head: map,
id: integer,
number: integer,
url: String.t()
}
@type simple :: %__MODULE__{
__info__: map,
_links: map,
active_lock_reason: String.t() | nil,
assignee: GitHub.User.simple() | nil,
assignees: [GitHub.User.simple()] | nil,
author_association: String.t(),
auto_merge: GitHub.AutoMerge.t() | nil,
base: map,
body: String.t() | nil,
closed_at: String.t() | nil,
comments_url: String.t(),
commits_url: String.t(),
created_at: String.t(),
diff_url: String.t(),
draft: boolean | nil,
head: map,
html_url: String.t(),
id: integer,
issue_url: String.t(),
labels: [map],
locked: boolean,
merge_commit_sha: String.t() | nil,
merged_at: String.t() | nil,
milestone: GitHub.Milestone.t() | nil,
node_id: String.t(),
number: integer,
patch_url: String.t(),
requested_reviewers: [GitHub.User.simple()] | nil,
requested_teams: [GitHub.Team.t()] | nil,
review_comment_url: String.t(),
review_comments_url: String.t(),
state: String.t(),
statuses_url: String.t(),
title: String.t(),
updated_at: String.t(),
url: String.t(),
user: GitHub.User.simple() | nil
}
@type t :: %__MODULE__{
__info__: map,
_links: map,
active_lock_reason: String.t() | nil,
additions: integer,
assignee: GitHub.User.simple() | nil,
assignees: [GitHub.User.simple()] | nil,
author_association: String.t(),
auto_merge: GitHub.AutoMerge.t() | nil,
base: map,
body: String.t() | nil,
changed_files: integer,
closed_at: String.t() | nil,
comments: integer,
comments_url: String.t(),
commits: integer,
commits_url: String.t(),
created_at: String.t(),
deletions: integer,
diff_url: String.t(),
draft: boolean | nil,
head: map,
html_url: String.t(),
id: integer,
issue_url: String.t(),
labels: [map],
locked: boolean,
maintainer_can_modify: boolean,
merge_commit_sha: String.t() | nil,
mergeable: boolean | nil,
mergeable_state: String.t(),
merged: boolean,
merged_at: String.t() | nil,
merged_by: GitHub.User.simple() | nil,
milestone: GitHub.Milestone.t() | nil,
node_id: String.t(),
number: integer,
patch_url: String.t(),
rebaseable: boolean | nil,
requested_reviewers: [GitHub.User.simple()] | nil,
requested_teams: [GitHub.Team.simple()] | nil,
review_comment_url: String.t(),
review_comments: integer,
review_comments_url: String.t(),
state: String.t(),
statuses_url: String.t(),
title: String.t(),
updated_at: String.t(),
url: String.t(),
user: GitHub.User.simple()
}
defstruct [
:__info__,
:_links,
:active_lock_reason,
:additions,
:assignee,
:assignees,
:author_association,
:auto_merge,
:base,
:body,
:changed_files,
:closed_at,
:comments,
:comments_url,
:commits,
:commits_url,
:created_at,
:deletions,
:diff_url,
:draft,
:head,
:html_url,
:id,
:issue_url,
:labels,
:locked,
:maintainer_can_modify,
:merge_commit_sha,
:mergeable,
:mergeable_state,
:merged,
:merged_at,
:merged_by,
:milestone,
:node_id,
:number,
:patch_url,
:rebaseable,
:requested_reviewers,
:requested_teams,
:review_comment_url,
:review_comments,
:review_comments_url,
:state,
:statuses_url,
:title,
:updated_at,
:url,
:user
]
@doc false
@spec __fields__(atom) :: keyword
def __fields__(type \\ :t)
def __fields__(:minimal) do
[base: :map, head: :map, id: :integer, number: :integer, url: :string]
end
def __fields__(:simple) do
[
_links: :map,
active_lock_reason: {:nullable, :string},
assignee: {:nullable, {GitHub.User, :simple}},
assignees: {:nullable, {:array, {GitHub.User, :simple}}},
author_association: :string,
auto_merge: {:nullable, {GitHub.AutoMerge, :t}},
base: :map,
body: {:nullable, :string},
closed_at: {:nullable, :string},
comments_url: :string,
commits_url: :string,
created_at: :string,
diff_url: :string,
draft: :boolean,
head: :map,
html_url: :string,
id: :integer,
issue_url: :string,
labels: {:array, :map},
locked: :boolean,
merge_commit_sha: {:nullable, :string},
merged_at: {:nullable, :string},
milestone: {:nullable, {GitHub.Milestone, :t}},
node_id: :string,
number: :integer,
patch_url: :string,
requested_reviewers: {:nullable, {:array, {GitHub.User, :simple}}},
requested_teams: {:nullable, {:array, {GitHub.Team, :t}}},
review_comment_url: :string,
review_comments_url: :string,
state: :string,
statuses_url: :string,
title: :string,
updated_at: :string,
url: :string,
user: {:nullable, {GitHub.User, :simple}}
]
end
def __fields__(:t) do
[
_links: :map,
active_lock_reason: {:nullable, :string},
additions: :integer,
assignee: {:nullable, {GitHub.User, :simple}},
assignees: {:nullable, {:array, {GitHub.User, :simple}}},
author_association: :string,
auto_merge: {:nullable, {GitHub.AutoMerge, :t}},
base: :map,
body: {:nullable, :string},
changed_files: :integer,
closed_at: {:nullable, :string},
comments: :integer,
comments_url: :string,
commits: :integer,
commits_url: :string,
created_at: :string,
deletions: :integer,
diff_url: :string,
draft: :boolean,
head: :map,
html_url: :string,
id: :integer,
issue_url: :string,
labels: {:array, :map},
locked: :boolean,
maintainer_can_modify: :boolean,
merge_commit_sha: {:nullable, :string},
mergeable: {:nullable, :boolean},
mergeable_state: :string,
merged: :boolean,
merged_at: {:nullable, :string},
merged_by: {:nullable, {GitHub.User, :simple}},
milestone: {:nullable, {GitHub.Milestone, :t}},
node_id: :string,
number: :integer,
patch_url: :string,
rebaseable: {:nullable, :boolean},
requested_reviewers: {:nullable, {:array, {GitHub.User, :simple}}},
requested_teams: {:nullable, {:array, {GitHub.Team, :simple}}},
review_comment_url: :string,
review_comments: :integer,
review_comments_url: :string,
state: :string,
statuses_url: :string,
title: :string,
updated_at: :string,
url: :string,
user: {GitHub.User, :simple}
]
end
end