mirror of
https://github.com/wassname/talk.git
synced 2026-06-29 03:05:24 +08:00
178 lines
3.0 KiB
GraphQL
178 lines
3.0 KiB
GraphQL
interface ActionableItem {
|
|
id: ID!
|
|
}
|
|
|
|
type UserSettings {
|
|
# bio of the user.
|
|
bio: String
|
|
}
|
|
|
|
input CommentsInput {
|
|
# current status of a comment.
|
|
status: COMMENT_STATUS
|
|
|
|
# asset that a comment is on.
|
|
asset_id: ID
|
|
|
|
# action type to find comments that have an action with.
|
|
action_type: ACTION_TYPE
|
|
}
|
|
|
|
# Any person who can author comments, create actions, and view comments on a
|
|
# stream.
|
|
type User {
|
|
id: ID!
|
|
|
|
# display name of a user.
|
|
displayName: String!
|
|
|
|
# actions against a specific user.
|
|
actions: [ActionSummary]
|
|
|
|
# settings for a user.
|
|
settings: UserSettings
|
|
|
|
# returns all comments based on a query.
|
|
comments(query: CommentsInput): [Comment]
|
|
}
|
|
|
|
type Comment {
|
|
id: ID!
|
|
|
|
# the actual comment data.
|
|
body: String!
|
|
|
|
# the user who authored the comment.
|
|
user: User
|
|
|
|
# the replies that were made to the comment.
|
|
replies(limit: Int = 3): [Comment]
|
|
|
|
# the actions made against a comment.
|
|
actions: [ActionSummary]
|
|
|
|
# the asset that a comment was made on.
|
|
asset: Asset
|
|
|
|
# the current status of a comment.
|
|
status: COMMENT_STATUS
|
|
|
|
# the time when the comment was created
|
|
created_at: String!
|
|
}
|
|
|
|
enum ITEM_TYPE {
|
|
ASSETS
|
|
COMMENTS
|
|
USERS
|
|
}
|
|
|
|
enum ACTION_TYPE {
|
|
LIKE
|
|
FLAG
|
|
}
|
|
|
|
type Action {
|
|
id: ID!
|
|
action_type: ACTION_TYPE!
|
|
|
|
item_id: ID!
|
|
item_type: ITEM_TYPE!
|
|
item: ActionableItem
|
|
|
|
user: User!
|
|
updated_at: String
|
|
created_at: String
|
|
}
|
|
|
|
type ActionSummary {
|
|
action_type: ACTION_TYPE!
|
|
item_type: ITEM_TYPE!
|
|
count: Int
|
|
current_user: Action
|
|
}
|
|
|
|
enum MODERATION_MODE {
|
|
PRE
|
|
POST
|
|
}
|
|
|
|
type Settings {
|
|
moderation: MODERATION_MODE!
|
|
infoBoxEnable: Boolean
|
|
infoBoxContent: String
|
|
closeTimeout: Int
|
|
closedMessage: String
|
|
charCountEnable: Boolean
|
|
charCount: Int
|
|
requireEmailConfirmation: Boolean
|
|
}
|
|
|
|
type Asset {
|
|
id: ID!
|
|
title: String
|
|
url: String
|
|
comments: [Comment]
|
|
settings: Settings!
|
|
closedAt: String
|
|
created_at: String
|
|
}
|
|
|
|
enum COMMENT_STATUS {
|
|
ACCEPTED
|
|
REJECTED
|
|
PREMOD
|
|
}
|
|
|
|
type RootQuery {
|
|
# retrieves site wide settings and defaults.
|
|
settings: Settings
|
|
|
|
# retrieves all assets.
|
|
assets: [Asset]
|
|
|
|
# retrieves a specific asset.
|
|
asset(id: ID, url: String): Asset
|
|
|
|
# retrieves comments based on the input query.
|
|
comments(query: CommentsInput): [Comment]
|
|
|
|
# retrieves the current logged in user.
|
|
me: User
|
|
}
|
|
|
|
input CreateActionInput {
|
|
# the type of action.
|
|
action_type: ACTION_TYPE!
|
|
|
|
# the type of the item.
|
|
item_type: ITEM_TYPE!
|
|
|
|
# the id of the item that is related to the action.
|
|
item_id: ID!
|
|
}
|
|
|
|
input UpdateUserSettingsInput {
|
|
# user bio
|
|
bio: String!
|
|
}
|
|
|
|
type RootMutation {
|
|
# creates a comment on the asset.
|
|
createComment(asset_id: ID!, parent_id: ID, body: String!): Comment
|
|
|
|
# creates an action based on an input.
|
|
createAction(action: CreateActionInput!): Action
|
|
|
|
# delete an action based on the action id.
|
|
deleteAction(id: ID!): Boolean
|
|
|
|
# updates a user's settings, it will return if the query was successful.
|
|
updateUserSettings(settings: UpdateUserSettingsInput!): Boolean
|
|
}
|
|
|
|
schema {
|
|
query: RootQuery
|
|
mutation: RootMutation
|
|
}
|