# DO NOT MODIFY THIS FILE. This file is automatically generated by Tina
"""
References another document, used as a foreign key
"""
scalar Reference

"""

"""
scalar JSON

type SystemInfo {
  filename: String!
  basename: String!
  breadcrumbs(excludeExtension: Boolean): [String!]!
  path: String!
  relativePath: String!
  extension: String!
  template: String!
  collection: Collection!
}

type PageInfo {
  hasPreviousPage: Boolean!
  hasNextPage: Boolean!
  startCursor: String!
  endCursor: String!
}

"""

"""
interface Node {
  id: ID!
}

"""

"""
interface Document {
  id: ID!
  _sys: SystemInfo
  _values: JSON!
}

"""
A relay-compliant pagination connection
"""
interface Connection {
  totalCount: Float!
  pageInfo: PageInfo!
}

type Query {
  getOptimizedQuery(queryString: String!): String
  collection(collection: String): Collection!
  collections: [Collection!]!
  node(id: String): Node!
  document(collection: String, relativePath: String): DocumentNode!
  posts(relativePath: String): Posts!
  postsConnection(
    before: String
    after: String
    first: Float
    last: Float
    sort: String
  ): PostsConnection!
}

type DocumentConnectionEdges {
  cursor: String!
  node: DocumentNode
}

type DocumentConnection implements Connection {
  pageInfo: PageInfo!
  totalCount: Float!
  edges: [DocumentConnectionEdges]
}

type Collection {
  name: String!
  slug: String!
  label: String
  path: String!
  format: String
  matches: String
  templates: [JSON]
  fields: [JSON]
  documents(
    before: String
    after: String
    first: Float
    last: Float
    sort: String
  ): DocumentConnection!
}

union DocumentNode = Posts

type PostsAuthor {
  name: String
  picture: String
}

type PostsOgImage {
  url: String
}

type Posts implements Node & Document {
  title: String
  excerpt: String
  coverImage: String
  date: String
  author: PostsAuthor
  ogImage: PostsOgImage
  body: String
  id: ID!
  _sys: SystemInfo!
  _values: JSON!
}

type PostsConnectionEdges {
  cursor: String!
  node: Posts
}

type PostsConnection implements Connection {
  pageInfo: PageInfo!
  totalCount: Float!
  edges: [PostsConnectionEdges]
}

type Mutation {
  addPendingDocument(
    collection: String!
    relativePath: String!
    template: String
  ): DocumentNode!
  updateDocument(
    collection: String
    relativePath: String!
    params: DocumentMutation!
  ): DocumentNode!
  deleteDocument(collection: String, relativePath: String!): DocumentNode!
  createDocument(
    collection: String
    relativePath: String!
    params: DocumentMutation!
  ): DocumentNode!
  updatePosts(relativePath: String!, params: PostsMutation!): Posts!
  createPosts(relativePath: String!, params: PostsMutation!): Posts!
}

input DocumentMutation {
  posts: PostsMutation
}

input PostsAuthorMutation {
  name: String
  picture: String
}

input PostsOgImageMutation {
  url: String
}

input PostsMutation {
  title: String
  excerpt: String
  coverImage: String
  date: String
  author: PostsAuthorMutation
  ogImage: PostsOgImageMutation
  body: String
}

schema {
  query: Query
  mutation: Mutation
}
