175 lines
3.1 KiB
TypeScript
175 lines
3.1 KiB
TypeScript
import gql from "graphql-tag";
|
|
|
|
export const DISCUSSION_BASIC_FIELDS_FRAGMENT = gql`
|
|
fragment DiscussionBasicFields on Discussion {
|
|
id
|
|
title
|
|
slug
|
|
insertedAt
|
|
updatedAt
|
|
lastComment {
|
|
id
|
|
text
|
|
actor {
|
|
id
|
|
preferredUsername
|
|
domain
|
|
avatar {
|
|
id
|
|
url
|
|
}
|
|
}
|
|
publishedAt
|
|
deletedAt
|
|
}
|
|
}
|
|
`;
|
|
|
|
export const DISCUSSION_FIELDS_FOR_REPLY_FRAGMENT = gql`
|
|
fragment DiscussionFieldsReply on Discussion {
|
|
id
|
|
title
|
|
slug
|
|
lastComment {
|
|
id
|
|
text
|
|
updatedAt
|
|
actor {
|
|
id
|
|
preferredUsername
|
|
domain
|
|
avatar {
|
|
id
|
|
url
|
|
}
|
|
}
|
|
}
|
|
actor {
|
|
id
|
|
preferredUsername
|
|
domain
|
|
}
|
|
creator {
|
|
id
|
|
preferredUsername
|
|
domain
|
|
}
|
|
}
|
|
`;
|
|
|
|
export const DISCUSSION_FIELDS_FRAGMENT = gql`
|
|
fragment DiscussionFields on Discussion {
|
|
id
|
|
title
|
|
slug
|
|
lastComment {
|
|
id
|
|
text
|
|
insertedAt
|
|
updatedAt
|
|
}
|
|
actor {
|
|
id
|
|
domain
|
|
name
|
|
preferredUsername
|
|
}
|
|
creator {
|
|
id
|
|
domain
|
|
name
|
|
preferredUsername
|
|
}
|
|
}
|
|
`;
|
|
|
|
export const CREATE_DISCUSSION = gql`
|
|
mutation createDiscussion($title: String!, $actorId: ID!, $text: String!) {
|
|
createDiscussion(title: $title, text: $text, actorId: $actorId) {
|
|
...DiscussionFields
|
|
}
|
|
}
|
|
${DISCUSSION_FIELDS_FRAGMENT}
|
|
`;
|
|
|
|
export const REPLY_TO_DISCUSSION = gql`
|
|
mutation replyToDiscussion($discussionId: ID!, $text: String!) {
|
|
replyToDiscussion(discussionId: $discussionId, text: $text) {
|
|
...DiscussionFields
|
|
}
|
|
}
|
|
${DISCUSSION_FIELDS_FRAGMENT}
|
|
`;
|
|
|
|
export const GET_DISCUSSION = gql`
|
|
query getDiscussion($slug: String!, $page: Int, $limit: Int) {
|
|
discussion(slug: $slug) {
|
|
comments(page: $page, limit: $limit)
|
|
@connection(key: "discussion-comments", filter: ["slug"]) {
|
|
total
|
|
elements {
|
|
id
|
|
text
|
|
actor {
|
|
id
|
|
avatar {
|
|
id
|
|
url
|
|
}
|
|
name
|
|
domain
|
|
preferredUsername
|
|
}
|
|
insertedAt
|
|
updatedAt
|
|
deletedAt
|
|
publishedAt
|
|
}
|
|
}
|
|
...DiscussionFields
|
|
}
|
|
}
|
|
${DISCUSSION_FIELDS_FRAGMENT}
|
|
`;
|
|
|
|
export const UPDATE_DISCUSSION = gql`
|
|
mutation updateDiscussion($discussionId: ID!, $title: String!) {
|
|
updateDiscussion(discussionId: $discussionId, title: $title) {
|
|
...DiscussionFields
|
|
}
|
|
}
|
|
${DISCUSSION_FIELDS_FRAGMENT}
|
|
`;
|
|
|
|
export const DELETE_DISCUSSION = gql`
|
|
mutation deleteDiscussion($discussionId: ID!) {
|
|
deleteDiscussion(discussionId: $discussionId) {
|
|
id
|
|
}
|
|
}
|
|
`;
|
|
|
|
export const DISCUSSION_COMMENT_CHANGED = gql`
|
|
subscription($slug: String!) {
|
|
discussionCommentChanged(slug: $slug) {
|
|
id
|
|
lastComment {
|
|
id
|
|
text
|
|
updatedAt
|
|
insertedAt
|
|
actor {
|
|
id
|
|
preferredUsername
|
|
name
|
|
domain
|
|
avatar {
|
|
id
|
|
url
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
`;
|