99 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			GraphQL
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.2 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!
 | 
						|
  ): CommentUpdateResponse @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! @auth(requires: ["write:comments", "manage:comments", "manage:system"])
 | 
						|
  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
 | 
						|
}
 | 
						|
 | 
						|
type CommentUpdateResponse {
 | 
						|
  responseResult: ResponseStatus
 | 
						|
  render: String
 | 
						|
}
 |