From 2b6dcc9af88324242fe360323d94c27e27aeb63b Mon Sep 17 00:00:00 2001 From: MrOrz Date: Sun, 8 Oct 2023 13:05:29 +0800 Subject: [PATCH] chore: update GraphQL types - new API - more non-nulls --- src/graphql/cofacts-api.graphql | 62 ++++++++++++++---------- typegen/gql.ts | 10 ++++ typegen/graphql.ts | 83 +++++++++++++++++++++++---------- 3 files changed, 107 insertions(+), 48 deletions(-) diff --git a/src/graphql/cofacts-api.graphql b/src/graphql/cofacts-api.graphql index 02410368..d896b13a 100644 --- a/src/graphql/cofacts-api.graphql +++ b/src/graphql/cofacts-api.graphql @@ -18,6 +18,7 @@ type Query { """ GetUser(id: String, slug: String): User GetCategory(id: String): Category + GetYdoc(id: String!): Ydoc ListArticles( filter: ListArticleFilter orderBy: [ListArticleOrderBy] @@ -176,13 +177,13 @@ type Query { type Article implements Node { id: ID! text: String - createdAt: String + createdAt: String! updatedAt: String status: ReplyRequestStatusEnum! references: [ArticleReference] """Number of normal article replies""" - replyCount: Int + replyCount: Int! """ Connections between this article and replies. Sorted by the logic described in https://github.com/cofacts/rumors-line-bot/issues/78. @@ -207,7 +208,7 @@ type Article implements Node { """Only list the articleReplies created by the currently logged in user""" selfOnly: Boolean - ): [ArticleReply] + ): [ArticleReply!]! """ Automated reply from AI before human fact checkers compose an fact check @@ -224,10 +225,10 @@ type Article implements Node { """Returns only article categories with the specified statuses""" statuses: [ArticleCategoryStatusEnum!] = [NORMAL] - ): [ArticleCategory] + ): [ArticleCategory!]! """Number of normal article categories""" - categoryCount: Int + categoryCount: Int! replyRequests( """Returns only article replies with the specified statuses""" statuses: [ReplyRequestStatusEnum!] = [NORMAL] @@ -258,7 +259,7 @@ type Article implements Node { Specify a cursor, returns results before this cursor. cannot be used with "after". """ before: String - ): ArticleConnection + ): ArticleConnection! """Hyperlinks in article text""" hyperlinks: [Hyperlink] @@ -293,8 +294,8 @@ enum ReplyRequestStatusEnum { } type ArticleReference { - createdAt: String - type: ArticleReferenceTypeEnum + createdAt: String! + type: ArticleReferenceTypeEnum! permalink: String } @@ -311,33 +312,33 @@ enum ArticleReferenceTypeEnum { """The linkage between an Article and a Reply""" type ArticleReply { - replyId: String + replyId: String! reply: Reply """Cached reply type value stored in ArticleReply""" replyType: ReplyTypeEnum - articleId: String + articleId: String! article: Article """The user who conencted this reply and this article.""" user: User userId: String! appId: String! - canUpdateStatus: Boolean - feedbackCount: Int - positiveFeedbackCount: Int - negativeFeedbackCount: Int + canUpdateStatus: Boolean! + feedbackCount: Int! + positiveFeedbackCount: Int! + negativeFeedbackCount: Int! feedbacks( """Returns only aricle reply feedbacks with the specified statuses""" statuses: [ArticleReplyFeedbackStatusEnum!] = [NORMAL] - ): [ArticleReplyFeedback] + ): [ArticleReplyFeedback!]! """ The feedback of current user. null when not logged in or not voted yet. """ ownVote: FeedbackVote - status: ArticleReplyStatusEnum - createdAt: String + status: ArticleReplyStatusEnum! + createdAt: String! updatedAt: String } @@ -346,9 +347,9 @@ type Reply implements Node { """The user submitted this reply version""" user: User - createdAt: String + createdAt: String! text: String - type: ReplyTypeEnum + type: ReplyTypeEnum! reference: String articleReplies( """Deprecated. Please use statuses instead.""" @@ -356,7 +357,7 @@ type Reply implements Node { """Returns only article replies with the specified statuses""" statuses: [ArticleReplyStatusEnum!] = [NORMAL] - ): [ArticleReply] + ): [ArticleReply!]! """ Hyperlinks in reply text or reference. May be empty array if no URLs are included. `null` when hyperlinks are still fetching. @@ -379,7 +380,7 @@ type Reply implements Node { Specify a cursor, returns results before this cursor. cannot be used with "after". """ before: String - ): ReplyConnection + ): ReplyConnection! } type User implements Node { @@ -979,6 +980,21 @@ type Cooccurrence implements Node { updatedAt: String! } +type Ydoc { + """Binary that stores as base64 encoded string""" + data: String + + """Ydoc snapshots which are used to restore to specific version""" + versions: [YdocVersion] +} + +type YdocVersion { + createdAt: String + + """Binary that stores as base64 encoded string""" + snapshot: String +} + input ListArticleFilter { """Show only articles created by a specific app.""" appId: String @@ -1557,9 +1573,7 @@ type Mutation { articleType: ArticleTypeEnum! reference: ArticleReferenceInput! - """ - The reason why the user want to submit this article. Mandatory for 1st sender - """ + """The reason why the user want to submit this article""" reason: String ): MutationResult diff --git a/typegen/gql.ts b/typegen/gql.ts index 50b7fe6e..ac605f79 100644 --- a/typegen/gql.ts +++ b/typegen/gql.ts @@ -13,6 +13,8 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/ * Therefore it is highly recommended to use the babel or swc plugin for production. */ const documents = { + "\n query GetArticleInChoosingArticle($id: String!) {\n GetArticle(id: $id) {\n text\n replyCount\n articleType\n articleReplies(status: NORMAL) {\n reply {\n id\n type\n text\n }\n positiveFeedbackCount\n negativeFeedbackCount\n }\n }\n }\n ": types.GetArticleInChoosingArticleDocument, + "\n mutation SubmitReplyRequestWithoutReason($id: String!) {\n CreateOrUpdateReplyRequest(articleId: $id) {\n replyRequestCount\n }\n }\n ": types.SubmitReplyRequestWithoutReasonDocument, "\n query ListArticlesInInitState($text: String!) {\n ListArticles(\n filter: { moreLikeThis: { like: $text } }\n orderBy: [{ _score: DESC }]\n first: 4\n ) {\n edges {\n node {\n text\n id\n articleType\n }\n highlight {\n text\n hyperlinks {\n title\n summary\n }\n }\n }\n }\n }\n ": types.ListArticlesInInitStateDocument, "\n query ListArticlesInProcessMedia($mediaUrl: String!) {\n ListArticles(\n filter: {\n mediaUrl: $mediaUrl\n articleTypes: [TEXT, IMAGE, AUDIO, VIDEO]\n transcript: { shouldCreate: true }\n }\n orderBy: [{ _score: DESC }]\n first: 9\n ) {\n edges {\n score\n mediaSimilarity\n node {\n id\n articleType\n attachmentUrl(variant: THUMBNAIL)\n }\n highlight {\n text\n hyperlinks {\n title\n summary\n }\n }\n }\n }\n }\n ": types.ListArticlesInProcessMediaDocument, "fragment CreateReferenceWordsReply on Reply {\n reference\n type\n}\n\nfragment CreateReplyMessagesReply on Reply {\n text\n ...CreateReferenceWordsReply\n}\n\nfragment CreateReplyMessagesArticle on Article {\n replyCount\n}\n\nfragment CreateHighlightContentsHighlight on Highlights {\n text\n hyperlinks {\n title\n summary\n }\n}": types.CreateReferenceWordsReplyFragmentDoc, @@ -33,6 +35,14 @@ const documents = { */ export function graphql(source: string): unknown; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query GetArticleInChoosingArticle($id: String!) {\n GetArticle(id: $id) {\n text\n replyCount\n articleType\n articleReplies(status: NORMAL) {\n reply {\n id\n type\n text\n }\n positiveFeedbackCount\n negativeFeedbackCount\n }\n }\n }\n "): (typeof documents)["\n query GetArticleInChoosingArticle($id: String!) {\n GetArticle(id: $id) {\n text\n replyCount\n articleType\n articleReplies(status: NORMAL) {\n reply {\n id\n type\n text\n }\n positiveFeedbackCount\n negativeFeedbackCount\n }\n }\n }\n "]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n mutation SubmitReplyRequestWithoutReason($id: String!) {\n CreateOrUpdateReplyRequest(articleId: $id) {\n replyRequestCount\n }\n }\n "): (typeof documents)["\n mutation SubmitReplyRequestWithoutReason($id: String!) {\n CreateOrUpdateReplyRequest(articleId: $id) {\n replyRequestCount\n }\n }\n "]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ diff --git a/typegen/graphql.ts b/typegen/graphql.ts index cbdb253c..84e403b0 100644 --- a/typegen/graphql.ts +++ b/typegen/graphql.ts @@ -155,9 +155,9 @@ export type Article = Node & { aiReplies: Array; /** Automated transcript */ aiTranscripts: Array; - articleCategories: Maybe>>; + articleCategories: Array; /** Connections between this article and replies. Sorted by the logic described in https://github.com/cofacts/rumors-line-bot/issues/78. */ - articleReplies: Maybe>>; + articleReplies: Array; /** Message event type */ articleType: ArticleTypeEnum; /** Attachment hash to search or identify files */ @@ -165,17 +165,17 @@ export type Article = Node & { /** Attachment URL for this article. */ attachmentUrl: Maybe; /** Number of normal article categories */ - categoryCount: Maybe; + categoryCount: Scalars['Int']; cooccurrences: Maybe>; - createdAt: Maybe; + createdAt: Scalars['String']; /** Hyperlinks in article text */ hyperlinks: Maybe>>; id: Scalars['ID']; lastRequestedAt: Maybe; references: Maybe>>; - relatedArticles: Maybe; + relatedArticles: ArticleConnection; /** Number of normal article replies */ - replyCount: Maybe; + replyCount: Scalars['Int']; replyRequestCount: Maybe; replyRequests: Maybe>>; /** If the current user has requested for reply for this article. Null if not logged in. */ @@ -315,9 +315,9 @@ export type ArticleConnectionPageInfo = PageInfo & { }; export type ArticleReference = { - createdAt: Maybe; + createdAt: Scalars['String']; permalink: Maybe; - type: Maybe; + type: ArticleReferenceTypeEnum; }; export type ArticleReferenceInput = { @@ -336,20 +336,20 @@ export type ArticleReferenceTypeEnum = export type ArticleReply = { appId: Scalars['String']; article: Maybe
; - articleId: Maybe; - canUpdateStatus: Maybe; - createdAt: Maybe; - feedbackCount: Maybe; - feedbacks: Maybe>>; - negativeFeedbackCount: Maybe; + articleId: Scalars['String']; + canUpdateStatus: Scalars['Boolean']; + createdAt: Scalars['String']; + feedbackCount: Scalars['Int']; + feedbacks: Array; + negativeFeedbackCount: Scalars['Int']; /** The feedback of current user. null when not logged in or not voted yet. */ ownVote: Maybe; - positiveFeedbackCount: Maybe; + positiveFeedbackCount: Scalars['Int']; reply: Maybe; - replyId: Maybe; + replyId: Scalars['String']; /** Cached reply type value stored in ArticleReply */ replyType: Maybe; - status: Maybe; + status: ArticleReplyStatusEnum; updatedAt: Maybe; /** The user who conencted this reply and this article. */ user: Maybe; @@ -1024,6 +1024,7 @@ export type Query = { * Note that some fields like email is not visible to other users. */ GetUser: Maybe; + GetYdoc: Maybe; ListAIResponses: AiResponseConnection; ListAnalytics: AnalyticsConnection; ListArticleReplyFeedbacks: Maybe; @@ -1058,6 +1059,11 @@ export type QueryGetUserArgs = { }; +export type QueryGetYdocArgs = { + id: Scalars['String']; +}; + + export type QueryListAiResponsesArgs = { after: InputMaybe; before: InputMaybe; @@ -1162,16 +1168,16 @@ export type RelatedArticleOrderBy = { }; export type Reply = Node & { - articleReplies: Maybe>>; - createdAt: Maybe; + articleReplies: Array; + createdAt: Scalars['String']; /** Hyperlinks in reply text or reference. May be empty array if no URLs are included. `null` when hyperlinks are still fetching. */ hyperlinks: Maybe>>; id: Scalars['ID']; reference: Maybe; /** Replies that has similar text or references of this current reply */ - similarReplies: Maybe; + similarReplies: ReplyConnection; text: Maybe; - type: Maybe; + type: ReplyTypeEnum; /** The user submitted this reply version */ user: Maybe; }; @@ -1360,6 +1366,33 @@ export type ValidationResult = { success: Scalars['Boolean']; }; +export type Ydoc = { + /** Binary that stores as base64 encoded string */ + data: Maybe; + /** Ydoc snapshots which are used to restore to specific version */ + versions: Maybe>>; +}; + +export type YdocVersion = { + createdAt: Maybe; + /** Binary that stores as base64 encoded string */ + snapshot: Maybe; +}; + +export type GetArticleInChoosingArticleQueryVariables = Exact<{ + id: Scalars['String']; +}>; + + +export type GetArticleInChoosingArticleQuery = { GetArticle: { text: string | null, replyCount: number, articleType: ArticleTypeEnum, articleReplies: Array<{ positiveFeedbackCount: number, negativeFeedbackCount: number, reply: { id: string, type: ReplyTypeEnum, text: string | null } | null }> } | null }; + +export type SubmitReplyRequestWithoutReasonMutationVariables = Exact<{ + id: Scalars['String']; +}>; + + +export type SubmitReplyRequestWithoutReasonMutation = { CreateOrUpdateReplyRequest: { replyRequestCount: number | null } | null }; + export type ListArticlesInInitStateQueryVariables = Exact<{ text: Scalars['String']; }>; @@ -1374,11 +1407,11 @@ export type ListArticlesInProcessMediaQueryVariables = Exact<{ export type ListArticlesInProcessMediaQuery = { ListArticles: { edges: Array<{ score: number | null, mediaSimilarity: number, node: { id: string, articleType: ArticleTypeEnum, attachmentUrl: string | null }, highlight: { text: string | null, hyperlinks: Array<{ title: string | null, summary: string | null } | null> | null } | null }> } | null }; -export type CreateReferenceWordsReplyFragment = { reference: string | null, type: ReplyTypeEnum | null }; +export type CreateReferenceWordsReplyFragment = { reference: string | null, type: ReplyTypeEnum }; -export type CreateReplyMessagesReplyFragment = { text: string | null, reference: string | null, type: ReplyTypeEnum | null }; +export type CreateReplyMessagesReplyFragment = { text: string | null, reference: string | null, type: ReplyTypeEnum }; -export type CreateReplyMessagesArticleFragment = { replyCount: number | null }; +export type CreateReplyMessagesArticleFragment = { replyCount: number }; export type CreateHighlightContentsHighlightFragment = { text: string | null, hyperlinks: Array<{ title: string | null, summary: string | null } | null> | null }; @@ -1393,6 +1426,8 @@ export const CreateReferenceWordsReplyFragmentDoc = {"kind":"Document","definiti export const CreateReplyMessagesReplyFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CreateReplyMessagesReply"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Reply"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"text"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CreateReferenceWordsReply"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CreateReferenceWordsReply"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Reply"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"reference"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}}]} as unknown as DocumentNode; export const CreateReplyMessagesArticleFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CreateReplyMessagesArticle"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Article"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"replyCount"}}]}}]} as unknown as DocumentNode; export const CreateHighlightContentsHighlightFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CreateHighlightContentsHighlight"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Highlights"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"text"}},{"kind":"Field","name":{"kind":"Name","value":"hyperlinks"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"summary"}}]}}]}}]} as unknown as DocumentNode; +export const GetArticleInChoosingArticleDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetArticleInChoosingArticle"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"GetArticle"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"text"}},{"kind":"Field","name":{"kind":"Name","value":"replyCount"}},{"kind":"Field","name":{"kind":"Name","value":"articleType"}},{"kind":"Field","name":{"kind":"Name","value":"articleReplies"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"status"},"value":{"kind":"EnumValue","value":"NORMAL"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"reply"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"text"}}]}},{"kind":"Field","name":{"kind":"Name","value":"positiveFeedbackCount"}},{"kind":"Field","name":{"kind":"Name","value":"negativeFeedbackCount"}}]}}]}}]}}]} as unknown as DocumentNode; +export const SubmitReplyRequestWithoutReasonDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SubmitReplyRequestWithoutReason"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"CreateOrUpdateReplyRequest"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"articleId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"replyRequestCount"}}]}}]}}]} as unknown as DocumentNode; export const ListArticlesInInitStateDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ListArticlesInInitState"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"text"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ListArticles"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"moreLikeThis"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"like"},"value":{"kind":"Variable","name":{"kind":"Name","value":"text"}}}]}}]}},{"kind":"Argument","name":{"kind":"Name","value":"orderBy"},"value":{"kind":"ListValue","values":[{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"_score"},"value":{"kind":"EnumValue","value":"DESC"}}]}]}},{"kind":"Argument","name":{"kind":"Name","value":"first"},"value":{"kind":"IntValue","value":"4"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"text"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"articleType"}}]}},{"kind":"Field","name":{"kind":"Name","value":"highlight"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"text"}},{"kind":"Field","name":{"kind":"Name","value":"hyperlinks"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"summary"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const ListArticlesInProcessMediaDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ListArticlesInProcessMedia"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"mediaUrl"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ListArticles"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"mediaUrl"},"value":{"kind":"Variable","name":{"kind":"Name","value":"mediaUrl"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"articleTypes"},"value":{"kind":"ListValue","values":[{"kind":"EnumValue","value":"TEXT"},{"kind":"EnumValue","value":"IMAGE"},{"kind":"EnumValue","value":"AUDIO"},{"kind":"EnumValue","value":"VIDEO"}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"transcript"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"shouldCreate"},"value":{"kind":"BooleanValue","value":true}}]}}]}},{"kind":"Argument","name":{"kind":"Name","value":"orderBy"},"value":{"kind":"ListValue","values":[{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"_score"},"value":{"kind":"EnumValue","value":"DESC"}}]}]}},{"kind":"Argument","name":{"kind":"Name","value":"first"},"value":{"kind":"IntValue","value":"9"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"score"}},{"kind":"Field","name":{"kind":"Name","value":"mediaSimilarity"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"articleType"}},{"kind":"Field","name":{"kind":"Name","value":"attachmentUrl"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"variant"},"value":{"kind":"EnumValue","value":"THUMBNAIL"}}]}]}},{"kind":"Field","name":{"kind":"Name","value":"highlight"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"text"}},{"kind":"Field","name":{"kind":"Name","value":"hyperlinks"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"summary"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const CreateAiReplyDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateAIReply"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"articleId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"CreateAIReply"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"articleId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"articleId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"text"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file