94 lines
2.0 KiB
GraphQL
94 lines
2.0 KiB
GraphQL
# ===============================================
|
|
# COMMENT
|
|
# ===============================================
|
|
|
|
extend type Query {
|
|
comments: CommentQuery
|
|
}
|
|
|
|
extend type Mutation {
|
|
comments: CommentMutation
|
|
}
|
|
|
|
# -----------------------------------------------
|
|
# QUERIES
|
|
# -----------------------------------------------
|
|
|
|
type CommentQuery {
|
|
providers: [CommentProvider] @auth(requires: ["manage:system"])
|
|
|
|
list(
|
|
locale: String!
|
|
path: String!
|
|
): [CommentPost]! @auth(requires: ["read:comments", "manage:system"])
|
|
|
|
single(
|
|
id: Int!
|
|
): CommentPost @auth(requires: ["read:comments", "manage:system"])
|
|
}
|
|
|
|
# -----------------------------------------------
|
|
# MUTATIONS
|
|
# -----------------------------------------------
|
|
|
|
type CommentMutation {
|
|
updateProviders(
|
|
providers: [CommentProviderInput]
|
|
): DefaultResponse @auth(requires: ["manage:system"])
|
|
|
|
create(
|
|
pageId: Int!
|
|
replyTo: Int
|
|
content: String!
|
|
guestName: String
|
|
guestEmail: String
|
|
): CommentCreateResponse @auth(requires: ["write:comments", "manage:system"]) @rateLimit(limit: 1, duration: 15)
|
|
|
|
update(
|
|
id: Int!
|
|
content: String!
|
|
): DefaultResponse @auth(requires: ["write:comments", "manage:comments", "manage:system"])
|
|
|
|
delete(
|
|
id: Int!
|
|
): DefaultResponse @auth(requires: ["manage:comments", "manage:system"])
|
|
}
|
|
|
|
# -----------------------------------------------
|
|
# TYPES
|
|
# -----------------------------------------------
|
|
|
|
type CommentProvider {
|
|
isEnabled: Boolean!
|
|
key: String!
|
|
title: String!
|
|
description: String
|
|
logo: String
|
|
website: String
|
|
isAvailable: Boolean
|
|
config: [KeyValuePair]
|
|
}
|
|
|
|
input CommentProviderInput {
|
|
isEnabled: Boolean!
|
|
key: String!
|
|
config: [KeyValuePairInput]
|
|
}
|
|
|
|
type CommentPost {
|
|
id: Int!
|
|
content: String!
|
|
render: String!
|
|
authorId: Int!
|
|
authorName: String!
|
|
authorEmail: String! @auth(requires: ["manage:system"])
|
|
authorIP: String! @auth(requires: ["manage:system"])
|
|
createdAt: Date!
|
|
updatedAt: Date!
|
|
}
|
|
|
|
type CommentCreateResponse {
|
|
responseResult: ResponseStatus
|
|
id: Int
|
|
}
|