const _ = require("lodash")

const usePrettify = string => {
  return (
    string
      .replace(/-/g, ` `)
      .replace(/_/g, `, `)
      .replace(/depoca/, `d'epoca`)
      // Capitalize every workd
      .split(" ")
      .map(s => s.charAt(0).toUpperCase() + s.substring(1))
      .join(" ")
      // Capitalize for apostrofo
      .split(`'`)
      .map(s => s.charAt(0).toUpperCase() + s.substring(1))
      .join(`'`)
      .replace(/D'/, `d'`)
  )
}

const query = `{
  posts: allIndexJson {
    edges {
      node {
        parent {
          ... on File {
            relativeDirectory
          }
        }
        categoryEn
        categoryIt
        descrizioneAlgolia
        price
        titolo
        objectID: titolo
      }
    }
  }
}`

const flatten = arr =>
  arr.map(
    ({
      node: {
        parent: { relativeDirectory },
        descrizioneAlgolia,
        titolo,
        ...rest
      },
    }) => {
      const titoloPretty = usePrettify(titolo)
      const descrizioneAlgoliaTruncated = _.truncate(descrizioneAlgolia, {
        length: 9000,
      })
      return {
        descrizioneAlgolia: descrizioneAlgoliaTruncated,
        relativeDirectory,
        titolo: titolo,
        titoloPretty: titoloPretty,
        ...rest,
      }
    }
  )

const queries = [
  {
    indexName: process.env.GATSBY_ALGOLIA_INDEX_NAME,
    query,
    transformer: ({ data }) => flatten(data.posts.edges),
  },
]

module.exports = queries
