GitHub Discussions GraphQL API๋ฅผ ์ฌ์ฉํ๋ฉด ํ ๋ก ๊ฒ์๋ฌผ์ ๋ค์ด๋ก๋, ์์ฑ, ํธ์ง, ์ญ์ ํ ์ ์์ต๋๋ค. GitHub Discussions์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ ๋ก ์ ๋ณด์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ด API๋ ์ธ์ฆ๋ ์ฌ์ฉ์, OAuth apps ๋ฐ GitHub ์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ก์ธ์ค ํ ํฐ์๋ ํ๋ผ์ด๋น ๋ฆฌํฌ์งํ ๋ฆฌ์ repo
๋ฒ์์ ํผ๋ธ๋ฆญ ๋ฆฌํฌ์งํ ๋ฆฌ์ public_repo
๋ฒ์๊ฐ ํ์ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ OAuth ์ฑ์ ๋ํ ๋ฒ์์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
ํ๋
Repository.discussions
๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์ ํ ๋ก ์ ๋์ดํฉ๋๋ค. categoryId
๋ฅผ ์ง์ ํ๋ฉด ํด๋น ๋ฒ์ฃผ ๋ด์ ๊ฒฐ๊ณผ๋ง ๋ฐํ๋ฉ๋๋ค. answered
๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๋ต๋ณ๋ ํ ๋ก ๋ฐ ๋ต๋ณ๋์ง ์์ ํ ๋ก ์ด ๋ชจ๋ ๋ฐํ๋ฉ๋๋ค.
์๋ช :__
discussions(
after: String,
before: String,
first: Int,
last: Int,
categoryId: ID = null,
answered: Boolean = null,
orderBy: DiscussionOrder = {field: UPDATED_AT, direction: DESC}
) : Discussion
DiscussionOrder
"""
Ways in which discussions can be ordered.
"""
input DiscussionOrder {
"""
The field by which to order discussions.
"""
field: DiscussionOrderField!
"""
The direction in which to order discussions by the specified field.
"""
direction: OrderDirection!
}
"""
Properties by which discussion connections can be ordered.
"""
enum DiscussionOrderField {
"""
Order discussions by creation time.
"""
CREATED_AT
"""
Order discussions by most recent modification time.
"""
UPDATED_AT
}
Repository.discussionCategories
์ด ๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์ ์ ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ ํ ๋ก ๋ฒ์ฃผ๋ฅผ ๋ฐํํฉ๋๋ค. ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์๋ ์ต๋ 25๊ฐ์ ๋ฒ์ฃผ๊ฐ ์์ ์ ์์ต๋๋ค. ํ ๋ก ๋ฒ์ฃผ์ ๊ดํ ์์ธํ ๋ด์ฉ์ ํ ๋ก ์ ๋ณด์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์๋ช :__
discussionCategories(
after: String,
before: String,
first: Int,
last: Int,
) : DiscussionCategoryConnection!
Repository.discussion
ํ ๋ก ์ ๊ฐ์ ธ์ต๋๋ค. ์ง์ ๋ ID๋ฅผ ์ฌ์ฉํ๋ ํ ๋ก ์ด ์๋ ๊ฒฝ์ฐ null
์ ๋ฐํํฉ๋๋ค.
์๋ช :__
discussion(number: Int!) : Discussion
Repository.pinnedDiscussions
์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ณ ์ ๋ ํ ๋ก ์ ๊ณ ์ ์์น๋ก ์ ๋ ฌํ์ฌ ๋ฐํํฉ๋๋ค.
์๋ช :__
pinnedDiscussions(
after: String,
before: String,
first: Int,
last: Int,
) : PinnedDiscussionConnection!
๊ฐ์ฒด
์ฐธ๊ณ : ๊ฐ๋จํ ๋งํ๋ฉด ์ฐ๊ฒฐ ํ์์ ์ฌ๊ธฐ์ ํ์ฅ๋์ง ์์ต๋๋ค. ์คํค๋ง์์ ์ธ๊ธ๋ ๊ฐ ์ฐ๊ฒฐ ํ์์ GraphQL API์ ๋ค๋ฅธ ์ฐ๊ฒฐ๊ณผ ๋์ผํ ํจํด์ ๋ฐ๋ฆ ๋๋ค. ์์ธํ ๋ด์ฉ์ GraphQL ์๊ฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
query {
repository(owner: "github", name: "some-repo") {
discussions(first: 10) {
# type: DiscussionConnection
totalCount # Int!
pageInfo {
# type: PageInfo (from the public schema)
startCursor
endCursor
hasNextPage
hasPreviousPage
}
edges {
# type: DiscussionEdge
cursor
node {
# type: Discussion
id
}
}
nodes {
# type: Discussion
id
}
}
}
}
ํ ๋ก (Discussion)
ํ๋:
"""
A discussion in a repository.
"""
type Discussion implements Comment & Deletable & Lockable & Node & Reactable & RepositoryNode & Subscribable & Updatable {
"""
Reason that the conversation was locked.
"""
activeLockReason: LockReason
"""
Check if this discussion has been answered
"""
isAnswered: Boolean!
"""
The comment chosen as this discussion's answer, if any.
"""
answer: DiscussionComment
"""
The time when a user chose this discussion's answer, if answered.
"""
answerChosenAt: DateTime
"""
The user who chose this discussion's answer, if answered.
"""
answerChosenBy: Actor
"""
The actor who authored the comment.
"""
author: Actor
"""
Author's association with the subject of the comment.
"""
authorAssociation: CommentAuthorAssociation!
"""
The main text of the discussion post.
"""
body: String!
"""
The body rendered to HTML.
"""
bodyHTML: HTML!
"""
The body rendered to text.
"""
bodyText: String!
"""
The category for this discussion.
"""
category: DiscussionCategory!
"""
The replies to the discussion.
"""
comments(
"""
Returns the elements in the list that come after the specified cursor.
"""
after: String
"""
Returns the elements in the list that come before the specified cursor.
"""
before: String
"""
Returns the first _n_ elements from the list.
"""
first: Int
"""
Returns the last _n_ elements from the list.
"""
last: Int
): DiscussionCommentConnection!
"""
Identifies the date and time when the object was created.
"""
createdAt: DateTime!
"""
Check if this comment was created via an email reply.
"""
createdViaEmail: Boolean!
"""
Identifies the primary key from the database.
"""
databaseId: Int
"""
The actor who edited the comment.
"""
editor: Actor
id: ID!
"""
Check if this comment was edited and includes an edit with the creation data
"""
includesCreatedEdit: Boolean!
"""
The moment the editor made the last edit
"""
lastEditedAt: DateTime
"""
`true` if the object is locked
"""
locked: Boolean!
"""
The number identifying this discussion within the repository.
"""
number: Int!
"""
Identifies when the comment was published at.
"""
publishedAt: DateTime
"""
A list of reactions grouped by content left on the subject.
"""
reactionGroups: [ReactionGroup!]
"""
A list of Reactions left on the Issue.
"""
reactions(
"""
Returns the elements in the list that come after the specified cursor.
"""
after: String
"""
Returns the elements in the list that come before the specified cursor.
"""
before: String
"""
Allows filtering Reactions by emoji.
"""
content: ReactionContent
"""
Returns the first _n_ elements from the list.
"""
first: Int
"""
Returns the last _n_ elements from the list.
"""
last: Int
"""
Allows specifying the order in which reactions are returned.
"""
orderBy: ReactionOrder
): ReactionConnection!
"""
The repository associated with this node.
"""
repository: Repository!
"""
The path for this discussion.
"""
resourcePath: URI!
"""
The title of this discussion.
"""
title: String!
"""
Identifies the date and time when the object was last updated.
"""
updatedAt: DateTime!
"""
The URL for this discussion.
"""
url: URI!
"""
A list of edits to this content.
"""
userContentEdits(
"""
Returns the elements in the list that come after the specified cursor.
"""
after: String
"""
Returns the elements in the list that come before the specified cursor.
"""
before: String
"""
Returns the first _n_ elements from the list.
"""
first: Int
"""
Returns the last _n_ elements from the list.
"""
last: Int
): UserContentEditConnection
"""
Check if the current viewer can delete this object.
"""
viewerCanDelete: Boolean!
"""
Can user react to this subject
"""
viewerCanReact: Boolean!
"""
Check if the viewer is able to change their subscription status for the repository.
"""
viewerCanSubscribe: Boolean!
"""
Check if the current viewer can update this object.
"""
viewerCanUpdate: Boolean!
"""
Did the viewer author this comment.
"""
viewerDidAuthor: Boolean!
"""
Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.
"""
viewerSubscription: SubscriptionState
}
DiscussionComment
ํ๋
"""
A comment on a discussion.
"""
type DiscussionComment implements Comment & Deletable & Minimizable & Node & Reactable & Updatable & UpdatableComment {
"""
The actor who authored the comment.
"""
author: Actor
"""
Author's association with the subject of the comment.
"""
authorAssociation: CommentAuthorAssociation!
"""
The body as Markdown.
"""
body: String!
"""
The body rendered to HTML.
"""
bodyHTML: HTML!
"""
The body rendered to text.
"""
bodyText: String!
"""
Identifies the date and time when the object was created.
"""
createdAt: DateTime!
"""
Check if this comment was created via an email reply.
"""
createdViaEmail: Boolean!
"""
Identifies the primary key from the database.
"""
databaseId: Int
"""
The time when this replied-to comment was deleted
"""
deletedAt: DateTime
"""
The discussion this comment was created in
"""
discussion: Discussion
"""
The actor who edited the comment.
"""
editor: Actor
id: ID!
"""
Check if this comment was edited and includes an edit with the creation data
"""
includesCreatedEdit: Boolean!
"""
Has this comment been chosen as the answer of its discussion?
"""
isAnswer: Boolean!
"""
Returns whether or not a comment has been minimized.
"""
isMinimized: Boolean!
"""
The moment the editor made the last edit
"""
lastEditedAt: DateTime
"""
Returns why the comment was minimized.
"""
minimizedReason: String
"""
Identifies when the comment was published at.
"""
publishedAt: DateTime
"""
A list of reactions grouped by content left on the subject.
"""
reactionGroups: [ReactionGroup!]
"""
A list of Reactions left on the Issue.
"""
reactions(
"""
Returns the elements in the list that come after the specified cursor.
"""
after: String
"""
Returns the elements in the list that come before the specified cursor.
"""
before: String
"""
Allows filtering Reactions by emoji.
"""
content: ReactionContent
"""
Returns the first _n_ elements from the list.
"""
first: Int
"""
Returns the last _n_ elements from the list.
"""
last: Int
"""
Allows specifying the order in which reactions are returned.
"""
orderBy: ReactionOrder
): ReactionConnection!
"""
The threaded replies to this comment.
"""
replies(
"""
Returns the elements in the list that come after the specified cursor.
"""
after: String
"""
Returns the elements in the list that come before the specified cursor.
"""
before: String
"""
Returns the first _n_ elements from the list.
"""
first: Int
"""
Returns the last _n_ elements from the list.
"""
last: Int
): DiscussionCommentConnection!
"""
The discussion comment this comment is a reply to
"""
replyTo: DiscussionComment
"""
The path for this discussion comment.
"""
resourcePath: URI!
"""
Identifies the date and time when the object was last updated.
"""
updatedAt: DateTime!
"""
The URL for this discussion comment.
"""
url: URI!
"""
A list of edits to this content.
"""
userContentEdits(
"""
Returns the elements in the list that come after the specified cursor.
"""
after: String
"""
Returns the elements in the list that come before the specified cursor.
"""
before: String
"""
Returns the first _n_ elements from the list.
"""
first: Int
"""
Returns the last _n_ elements from the list.
"""
last: Int
): UserContentEditConnection
"""
Check if the current viewer can delete this object.
"""
viewerCanDelete: Boolean!
"""
Can the current user mark this comment as an answer?
"""
viewerCanMarkAsAnswer: Boolean!
"""
Check if the current viewer can minimize this object.
"""
viewerCanMinimize: Boolean!
"""
Can user react to this subject
"""
viewerCanReact: Boolean!
"""
Can the current user unmark this comment as an answer?
"""
viewerCanUnmarkAsAnswer: Boolean!
"""
Check if the current viewer can update this object.
"""
viewerCanUpdate: Boolean!
"""
Reasons why the current viewer can not update this comment.
"""
viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
"""
Did the viewer author this comment.
"""
viewerDidAuthor: Boolean!
}
DiscussionCategory
ํ๋
"""
A category for discussions in a repository.
"""
type DiscussionCategory implements Node & RepositoryNode {
"""
Identifies the date and time when the object was created.
"""
createdAt: DateTime!
"""
A description of this category.
"""
description: String
"""
An emoji representing this category.
"""
emoji: String!
"""
This category's emoji rendered as HTML.
"""
emojiHTML: HTML!
id: ID!
"""
Whether or not discussions in this category support choosing an answer with the markDiscussionCommentAsAnswer mutation.
"""
isAnswerable: Boolean!
"""
The name of this category.
"""
name: String!
"""
The repository associated with this node.
"""
repository: Repository!
"""
Identifies the date and time when the object was last updated.
"""
updatedAt: DateTime!
}
PinnedDiscussion
ํ๋:
"""
A Pinned discussion is a discussion pinned to a repository's index page.
"""
type PinnedDiscussion implements Node & RepositoryNode {
"""
Identifies the date and time when the object was created.
"""
createdAt: DateTime!
"""
Identifies the primary key from the database.
"""
databaseId: Int
"""
The discussion that was pinned.
"""
discussion: Discussion!
"""
Color stops of the chosen gradient
"""
gradientStopColors: [String!]!
id: ID!
"""
Background texture pattern
"""
pattern: PinnedDiscussionPattern!
"""
The actor that pinned this discussion.
"""
pinnedBy: Actor!
"""
Preconfigured background gradient option
"""
preconfiguredGradient: PinnedDiscussionGradient
"""
The repository associated with this node.
"""
repository: Repository!
"""
Identifies the date and time when the object was last updated.
"""
updatedAt: DateTime!
}
PinnedDiscussionPattern
๊ฐ
"""
Preconfigured background patterns that may be used to style discussions pinned within a repository.
"""
enum PinnedDiscussionPattern {
"""
An upward-facing chevron pattern
"""
CHEVRON_UP
"""
A hollow dot pattern
"""
DOT
"""
A solid dot pattern
"""
DOT_FILL
"""
A heart pattern
"""
HEART_FILL
"""
A friendly octocat face pattern
"""
OCTOFACE
"""
A plus sign pattern
"""
PLUS
}
PinnedDiscussionGradient
๊ฐ
"""
Preconfigured gradients that may be used to style discussions pinned within a repository.
"""
enum PinnedDiscussionGradient {
"""
A gradient of blue to mint
"""
BLUE_MINT
"""
A gradient of blue to purple
"""
BLUE_PURPLE
"""
A gradient of pink to blue
"""
PINK_BLUE
"""
A gradient of purple to coral
"""
PURPLE_CORAL
"""
A gradient of red to orange
"""
RED_ORANGE
}
์ธํฐํ์ด์ค
RepositoryDiscussionAuthor
User
๋ฐ Organization
ํ์์ ์ํด ๊ตฌํ๋ฉ๋๋ค. ์ฐธ๊ณ : Organization
์ User
๋ก๋ถํฐ ๋ณํ๋ ๊ฒฝ์ฐ์๋ง ๊ด๋ จ ํ ๋ก ์ ๊ฐ๊ฒ ๋ฉ๋๋ค.
ํ๋
"""
Represents an author of discussions in repositories.
"""
interface RepositoryDiscussionAuthor {
"""
Discussions this user has started.
"""
repositoryDiscussions(
"""
Returns the elements in the list that come after the specified cursor.
"""
after: String
"""
Filter discussions to only those that have been answered or not. Defaults to
including both answered and unanswered discussions.
"""
answered: Boolean = null
"""
Returns the elements in the list that come before the specified cursor.
"""
before: String
"""
Returns the first _n_ elements from the list.
"""
first: Int
"""
Returns the last _n_ elements from the list.
"""
last: Int
"""
Ordering options for discussions returned from the connection.
"""
orderBy: DiscussionOrder = {field: CREATED_AT, direction: DESC}
"""
Filter discussions to only those in a specific repository.
"""
repositoryId: ID
): DiscussionConnection!
}
RepositoryDiscussionCommentAuthor
์ญ์ User
๋ฐ Organization
ํ์์ ์ํด ๊ตฌํ๋ฉ๋๋ค.
ํ๋
"""
Represents an author of discussion comments in repositories.
"""
interface RepositoryDiscussionCommentAuthor {
"""
Discussion comments this user has authored.
"""
repositoryDiscussionComments(
"""
Returns the elements in the list that come after the specified cursor.
"""
after: String
"""
Returns the elements in the list that come before the specified cursor.
"""
before: String
"""
Returns the first _n_ elements from the list.
"""
first: Int
"""
Returns the last _n_ elements from the list.
"""
last: Int
"""
Filter discussion comments to only those that were marked as the answer
"""
onlyAnswers: Boolean = false
"""
Filter discussion comments to only those in a specific repository.
"""
repositoryId: ID
): DiscussionCommentConnection!
}
๋ณํ
์ด๋ฌํ ๋ณํ์ GraphQL API์ ๋ค๋ฅธ ๋ณํ๊ณผ ๋์ผํ ๊ตฌํ ํจํด์ ๋ฐ๋ฆ
๋๋ค. ๊ฐ ๋ณํ์ ๋ณํ์ ์ด๋ฆ์ ๋ฐ์ ๋ช
๋ช
๋ Input
ํ์์ ๋จ์ผ ์ธ์๋ฅผ ๋ฐ์๋ค์ด๊ณ , ์ง์ ๋ ํ๋๊ฐ ํฌํจ๋ Payload
ํ์์ ๋ฐํํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์์ ์ ํ ๋ก ์ ๋ง๋๋ ๊ธฐ๋ณธ createDiscussion
๋ณํ์
๋๋ค.
mutation {
# input type: CreateDiscussionInput
createDiscussion(input: {repositoryId: "1234", categoryId: "5678", body: "The body", title: "The title"}) {
# response type: CreateDiscussionPayload
discussion {
id
}
}
}
createDiscussion
์ ๋ ฅ ํ๋:
body: String!
์ ํ ๋ก ์ ๋ณธ๋ฌธ์ ๋๋ค.title: String!
์ ํ ๋ก ์ ์ ๋ชฉ์ ๋๋ค.repositoryId: ID!
ํ ๋ก ์ ๋ง๋ค ๋ฆฌํฌ์งํ ๋ฆฌ์ ID์ ๋๋ค.categoryId: ID!
์ด ๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์ ์๋DiscussionCategory
์ ID์ ๋๋ค.clientMutationId: String
๋ณํ์ ์ํํ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ๊ณ ์ ์๋ณ์์ ๋๋ค.
๋ฐํ ํ์ ํ๋:
clientMutationId: String
์ ๋ ฅ์ผ๋ก์ ์ ๊ณต๋๋ ๊ณ ์ ์๋ณ์์ ๋๋ค.discussion: Discussion
๋ง๋ค์ด์ง ํ ๋ก ์ ๋๋ค.
updateDiscussion
์ ๋ ฅ ํ๋:
discussionId: ID!
์ ๋ฐ์ดํธํ ํ ๋ก ์ ๋ ธ๋ ID์ ๋๋ค.body: String
ํ ๋ก ๋ณธ๋ฌธ์ ์ ๋ด์ฉ์ ๋๋ค.title: String
์ ํ ๋ก ์ ๋ชฉ์ ๋๋ค.categoryId: ID
์ด ํ ๋ก ์ ๋ณ๊ฒฝํ ๋์ผํ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์ ์๋DiscussionCategory
์ ๋ ธ๋ ID์ ๋๋ค.clientMutationId: String
๋ณํ์ ์ํํ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ๊ณ ์ ์๋ณ์์ ๋๋ค.
๋ฐํ ํ์ ํ๋:
clientMutationId: String
์ ๋ ฅ์ผ๋ก์ ์ ๊ณต๋๋ ๊ณ ์ ์๋ณ์์ ๋๋ค.discussion: Discussion
์์ ๋ ํ ๋ก ์ ๋๋ค.
deleteDiscussion
์ ๋ ฅ ํ๋:
id: ID!
์ญ์ ํ ํ ๋ก ์ ๋ ธ๋ ID์ ๋๋ค.clientMutationId: String
๋ณํ์ ์ํํ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ๊ณ ์ ์๋ณ์์ ๋๋ค.
๋ฐํ ํ์ ํ๋:
clientMutationId: String
์ ๋ ฅ์ผ๋ก์ ์ ๊ณต๋๋ ๊ณ ์ ์๋ณ์์ ๋๋ค.discussion: Discussion
์ญ์ ๋ ํ ๋ก ์ ๋๋ค.
addDiscussionComment
์ ๋ ฅ ํ๋:
body: String!
์ฃผ์์ ๋ด์ฉ์ ๋๋ค.discussionId: ID!
์ฃผ์์ ๋ฌ ํ ๋ก ์ ๋ ธ๋ ID์ ๋๋ค.replyToId: ID
ํ์ ํ ํ ๋ก ์ฃผ์์ ๋ ธ๋ ID์ ๋๋ค. ์๋ ๊ฒฝ์ฐ, ๋ง๋ค์ด์ง ์ฃผ์์ ์ต์์ ์ฃผ์์ด ๋ฉ๋๋ค.clientMutationId: String
๋ณํ์ ์ํํ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ๊ณ ์ ์๋ณ์์ ๋๋ค.
๋ฐํ ํ์ ํ๋:
clientMutationId: String
์ ๋ ฅ์ผ๋ก์ ์ ๊ณต๋๋ ๊ณ ์ ์๋ณ์์ ๋๋ค.comment: DiscussionComment
๋ง๋ค์ด์ง ํ ๋ก ์ฃผ์์ ๋๋ค.
updateDiscussionComment
์ ๋ ฅ ํ๋:
body: String!
์ฃผ์ ๋ณธ๋ฌธ์ ์ ๋ด์ฉ์ ๋๋ค.commentId: ID!
์ ๋ฐ์ดํธํ ํ ๋ก ์ฃผ์์ ๋ ธ๋ ID์ ๋๋ค.clientMutationId: String
๋ณํ์ ์ํํ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ๊ณ ์ ์๋ณ์์ ๋๋ค.
๋ฐํ ํ์ ํ๋:
clientMutationId: String
์ ๋ ฅ์ผ๋ก์ ์ ๊ณต๋๋ ๊ณ ์ ์๋ณ์์ ๋๋ค.comment: DiscussionComment
์ ๋ฐ์ดํธ๋ ํ ๋ก ์ฃผ์์ ๋๋ค.
deleteDiscussionComment
์ ๋ ฅ ํ๋:
id: ID!
์ญ์ ํ ํ ๋ก ์ฃผ์์ ๋ ธ๋ ID์ ๋๋ค.clientMutationId: String
๋ณํ์ ์ํํ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ๊ณ ์ ์๋ณ์์ ๋๋ค.
๋ฐํ ํ์ ํ๋:
clientMutationId: String
์ ๋ ฅ์ผ๋ก์ ์ ๊ณต๋๋ ๊ณ ์ ์๋ณ์์ ๋๋ค.comment: DiscussionComment
์ญ์ ๋ ํ ๋ก ์ฃผ์์ ๋๋ค.
markDiscussionCommentAsAnswer
์ ๋ ฅ ํ๋:
id: ID!
๋ต๋ณ์ผ๋ก ํ์ํ ํ ๋ก ์ฃผ์์ ๋ ธ๋ ID์ ๋๋ค.clientMutationId: String
๋ณํ์ ์ํํ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ๊ณ ์ ์๋ณ์์ ๋๋ค.
๋ฐํ ํ์ ํ๋:
clientMutationId: String
์ ๋ ฅ์ผ๋ก์ ์ ๊ณต๋๋ ๊ณ ์ ์๋ณ์์ ๋๋ค.discussion: Discussion
์ ํํ ์ฃผ์์ด ํฌํจ๋ ํ ๋ก ์ ๋๋ค.
unmarkDiscussionCommentAsAnswer
์ ๋ ฅ ํ๋:
id: ID!
๋ต๋ณ์ผ๋ก ํ์๋ฅผ ํด์ ํ ํ ๋ก ์ฃผ์์ ๋ ธ๋ ID์ ๋๋ค.clientMutationId: String
๋ณํ์ ์ํํ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ๊ณ ์ ์๋ณ์์ ๋๋ค.
๋ฐํ ํ์ ํ๋:
clientMutationId: String
์ ๋ ฅ์ผ๋ก์ ์ ๊ณต๋๋ ๊ณ ์ ์๋ณ์์ ๋๋ค.discussion: Discussion
ํ์๋์ง ์์ ์ฃผ์์ด ํฌํจ๋ ํ ๋ก ์ ๋๋ค.
๊ฒ์
ํ ๋ก ์ ์ต์์ search
ํ๋์์ ๋ฐํ๋ ์ ์์ต๋๋ค. ํ ๋ก ์ ๊ฒ์ํ๋ ค๋ฉด type
์ DISCUSSION
์ผ๋ก ์ง์ ํฉ๋๋ค. SearchResultItemConnection
ํ์์๋ ๋ฐํ๋ ํ ๋ก ์๋ฅผ ๋ณด๊ณ ํ๋ discussionCount
ํ๋๊ฐ ์์ผ๋ฉฐ Discussion
ํ์์ SearchResultItem
๊ณต์ฉ ๊ตฌ์กฐ์ฒด์ ์ถ๊ฐ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฟผ๋ฆฌ ๋ฐ ํ ๋ก ๊ฒ์์(๋ฅผ) ์ฐธ์กฐํ์ธ์.