export const schema = gql`
  <% if (docs) { %>
  """${modelDescription}"""
  <% } %>
  type ${singularPascalName} {
    ${query}
  }

<% if (enums.length > 0) {%>
<% enums.forEach((enumDef, idx)=> {
  const enumName = enums[idx].name
  const enumDescription = enums[idx].documentation || `Possible values for ${enums[idx].name}`
  %>
  <% if (docs) { %>
  """${enumDescription}"""
  <% } %>
  enum ${enums[idx].name} {<% enums[idx].values.forEach((enumDefValue, idk)=> { %>
    ${enums[idx].values[idk].name}<% }) %>
  }
<%}) %><% } %>
  <% if (docs) { %>
  """About queries"""
  <% } %>
  type Query {
    <% if (docs) { %>
    "Fetch ${pluralPascalName}."
    <% } %>${pluralCamelName}: [${singularPascalName}!]! @requireAuth<% if (crud) { %>
    <% if (docs) { %>
    "Fetch a ${singularPascalName} by id."
    <% } %>${singularCamelName}(${idName}: ${idType}!): ${singularPascalName} @requireAuth<% } %>
  }

  <% if (crud) { %>
  <% if (docs) { %>
  """Autogenerated input type of Input${singularPascalName}."""
  <% } %>
  input Create${singularPascalName}Input {
    ${createInput}
  }

  <% if (idInput) { %>
    <% if (docs) { %>
      """Autogenerated ID input type of ${singularPascalName}Id."""
    <% } %>
    input ${singularPascalName}IdInput {
      ${idInput}
    }
  <% } %>

  <% if (docs) { %>
  """Autogenerated input type of Update${singularPascalName}."""
  <% } %>
  input Update${singularPascalName}Input {
    ${updateInput}
  }

  <% if (docs) { %>
  """About mutations"""
  <% } %>
  type Mutation {
    <% if (docs) { %>
    "Creates a new ${singularPascalName}."
    <% } %>create${singularPascalName}(input: Create${singularPascalName}Input!): ${singularPascalName}! @requireAuth
    <% if (docs) { %>
    "Updates an existing ${singularPascalName}."
    <% } %>update${singularPascalName}(${idName}: ${idType}!, input: Update${singularPascalName}Input!): ${singularPascalName}! @requireAuth
    <% if (docs) { %>
    "Deletes an existing ${singularPascalName}."
    <% } %>delete${singularPascalName}(${idName}: ${idType}!): ${singularPascalName}! @requireAuth
  }<% } %>
`
