defmodule GitHub.PullRequest do
@moduledoc """
Provides struct and types for a PullRequest
"""
use GitHub.Encoder
@type minimal :: %__MODULE__{
__info__: map,
base: GitHub.PullRequest.Base.minimal(),
head: GitHub.PullRequest.Head.minimal(),
id: integer,
number: integer,
url: String.t()
}
@type simple :: %__MODULE__{
__info__: map,
_links: GitHub.PullRequest.Links.simple(),
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: GitHub.PullRequest.Base.simple(),
body: String.t() | nil,
closed_at: DateTime.t() | nil,
comments_url: String.t(),
commits_url: String.t(),
created_at: DateTime.t(),
diff_url: String.t(),
draft: boolean | nil,
head: GitHub.PullRequest.Head.simple(),
html_url: String.t(),
id: integer,
issue_url: String.t(),
labels: [GitHub.PullRequest.Labels.simple()],
locked: boolean,
merge_commit_sha: String.t() | nil,
merged_at: DateTime.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: DateTime.t(),
url: String.t(),
user: GitHub.User.simple() | nil
}
@type t :: %__MODULE__{
__info__: map,
_links: GitHub.PullRequest.Links.t(),
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: GitHub.PullRequest.Base.t(),
body: String.t() | nil,
changed_files: integer,
closed_at: DateTime.t() | nil,
comments: integer,
comments_url: String.t(),
commits: integer,
commits_url: String.t(),
created_at: DateTime.t(),
deletions: integer,
diff_url: String.t(),
draft: boolean | nil,
head: GitHub.PullRequest.Head.t(),
html_url: String.t(),
id: integer,
issue_url: String.t(),
labels: [GitHub.PullRequest.Labels.t()],
locked: boolean,
maintainer_can_modify: boolean,
merge_commit_sha: String.t() | nil,
mergeable: boolean | nil,
mergeable_state: String.t(),
merged: boolean,
merged_at: DateTime.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: DateTime.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: {GitHub.PullRequest.Base, :minimal},
head: {GitHub.PullRequest.Head, :minimal},
id: :integer,
number: :integer,
url: {:string, :generic}
]
end
def __fields__(:simple) do
[
_links: {GitHub.PullRequest.Links, :simple},
active_lock_reason: {:union, [{:string, :generic}, :null]},
assignee: {:union, [{GitHub.User, :simple}, :null]},
assignees: {:union, [[{GitHub.User, :simple}], :null]},
author_association:
{:enum,
[
"COLLABORATOR",
"CONTRIBUTOR",
"FIRST_TIMER",
"FIRST_TIME_CONTRIBUTOR",
"MANNEQUIN",
"MEMBER",
"NONE",
"OWNER"
]},
auto_merge: {:union, [{GitHub.AutoMerge, :t}, :null]},
base: {GitHub.PullRequest.Base, :simple},
body: {:union, [{:string, :generic}, :null]},
closed_at: {:union, [{:string, :date_time}, :null]},
comments_url: {:string, :uri},
commits_url: {:string, :uri},
created_at: {:string, :date_time},
diff_url: {:string, :uri},
draft: :boolean,
head: {GitHub.PullRequest.Head, :simple},
html_url: {:string, :uri},
id: :integer,
issue_url: {:string, :uri},
labels: [{GitHub.PullRequest.Labels, :simple}],
locked: :boolean,
merge_commit_sha: {:union, [{:string, :generic}, :null]},
merged_at: {:union, [{:string, :date_time}, :null]},
milestone: {:union, [{GitHub.Milestone, :t}, :null]},
node_id: {:string, :generic},
number: :integer,
patch_url: {:string, :uri},
requested_reviewers: {:union, [[{GitHub.User, :simple}], :null]},
requested_teams: {:union, [[{GitHub.Team, :t}], :null]},
review_comment_url: {:string, :generic},
review_comments_url: {:string, :uri},
state: {:string, :generic},
statuses_url: {:string, :uri},
title: {:string, :generic},
updated_at: {:string, :date_time},
url: {:string, :uri},
user: {:union, [{GitHub.User, :simple}, :null]}
]
end
def __fields__(:t) do
[
_links: {GitHub.PullRequest.Links, :t},
active_lock_reason: {:union, [{:string, :generic}, :null]},
additions: :integer,
assignee: {:union, [{GitHub.User, :simple}, :null]},
assignees: {:union, [[{GitHub.User, :simple}], :null]},
author_association:
{:enum,
[
"COLLABORATOR",
"CONTRIBUTOR",
"FIRST_TIMER",
"FIRST_TIME_CONTRIBUTOR",
"MANNEQUIN",
"MEMBER",
"NONE",
"OWNER"
]},
auto_merge: {:union, [{GitHub.AutoMerge, :t}, :null]},
base: {GitHub.PullRequest.Base, :t},
body: {:union, [{:string, :generic}, :null]},
changed_files: :integer,
closed_at: {:union, [{:string, :date_time}, :null]},
comments: :integer,
comments_url: {:string, :uri},
commits: :integer,
commits_url: {:string, :uri},
created_at: {:string, :date_time},
deletions: :integer,
diff_url: {:string, :uri},
draft: :boolean,
head: {GitHub.PullRequest.Head, :t},
html_url: {:string, :uri},
id: :integer,
issue_url: {:string, :uri},
labels: [{GitHub.PullRequest.Labels, :t}],
locked: :boolean,
maintainer_can_modify: :boolean,
merge_commit_sha: {:union, [{:string, :generic}, :null]},
mergeable: {:union, [:boolean, :null]},
mergeable_state: {:string, :generic},
merged: :boolean,
merged_at: {:union, [{:string, :date_time}, :null]},
merged_by: {:union, [{GitHub.User, :simple}, :null]},
milestone: {:union, [{GitHub.Milestone, :t}, :null]},
node_id: {:string, :generic},
number: :integer,
patch_url: {:string, :uri},
rebaseable: {:union, [:boolean, :null]},
requested_reviewers: {:union, [[{GitHub.User, :simple}], :null]},
requested_teams: {:union, [[{GitHub.Team, :simple}], :null]},
review_comment_url: {:string, :generic},
review_comments: :integer,
review_comments_url: {:string, :uri},
state: {:enum, ["open", "closed"]},
statuses_url: {:string, :uri},
title: {:string, :generic},
updated_at: {:string, :date_time},
url: {:string, :uri},
user: {GitHub.User, :simple}
]
end
end