import { gql } from 'graphql-request'
import fetchAPI from '@/lib/api/fetchAPI'
import { nodesFromEdges } from '@/lib/utilities'
import { PAGE_FRAGMENT } from './fragments'

/**
 * Query a single page by uri
 */
export async function getPageByUri(slug: string) {
  const data = await fetchAPI(
    gql`
      ${PAGE_FRAGMENT}
      query PageBySlug($id: ID!) {
        page(id: $id, idType: URI) {
          ...PageFields
        }
      }
    `,
    {
      variables: {
        id: slug,
      },
    }
  )

  return data
}

/**
 * Query all page uris
 */
export async function getAllPageUris() {
  const data = await fetchAPI(
    gql`
      query AllPageUris {
        pages(first: 10000) {
          edges {
            node {
              uri
            }
          }
        }
      }
    `
  )

  return nodesFromEdges(data?.pages?.edges || [])
}
