# ===============================================
# COMMENT
# ===============================================

extend type Query {
  commentsProviders: [CommentProvider]

  comments(
    locale: String!
    path: String!
  ): [CommentPost]!

  commentById(
    id: Int!
  ): CommentPost
}

extend type Mutation {
  updateCommentsProviders(
    providers: [CommentProviderInput]
  ): DefaultResponse

  createComment(
    pageId: Int!
    replyTo: Int
    content: String!
    guestName: String
    guestEmail: String
  ): CommentCreateResponse  @rateLimit(limit: 1, duration: 15)

  updateComment(
    id: Int!
    content: String!
  ): CommentUpdateResponse

  deleteComment(
    id: Int!
  ): DefaultResponse
}

# -----------------------------------------------
# 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
  authorIP: String
  createdAt: Date
  updatedAt: Date
}

type CommentCreateResponse {
  operation: Operation
  id: Int
}

type CommentUpdateResponse {
  operation: Operation
  render: String
}
