import people from './src/data.js';
import { tags, countries, devices } from './src/util/stats';

function sourceNodes({ actions, createNodeId, createContentDigest }) {
  // Add People to the GraphQL API, we randomize the data on each build so no one gets their feelings hurt
  people
    .sort(() => Math.random() - 0.5)
    .forEach(person => {
      const nodeMeta = {
        id: createNodeId(`person-${person.name}`),
        parent: null,
        children: [],
        internal: {
          type: `Person`,
          mediaType: `text/html`,
          content: JSON.stringify(person),
          contentDigest: createContentDigest(person),
        },
      };

      actions.createNode({ ...person, ...nodeMeta });
    });

  // Add tags to GraphQL API
  tags().forEach(tag => {
    const nodeMeta = {
      id: createNodeId(`tag-${tag.name}`),
      parent: null,
      children: [],
      internal: {
        type: `Tag`,
        mediaType: `text/html`,
        content: JSON.stringify(tag),
        contentDigest: createContentDigest(tag),
      },
    };

    actions.createNode({ ...tag, ...nodeMeta });
  });

  // Add Countries to GraphQL API
  countries().forEach(country => {
    const nodeMeta = {
      id: createNodeId(`country-${country.name}`),
      parent: null,
      children: [],
      internal: {
        type: `Country`,
        mediaType: `text/html`,
        content: JSON.stringify(country),
        contentDigest: createContentDigest(country),
      },
    };

    actions.createNode({ ...country, ...nodeMeta });
  });

  // Add Devices to GraphQL API
  console.log(devices());
  devices().forEach(device => {
    const nodeMeta = {
      id: createNodeId(`device-${device.name}`),
      parent: null,
      children: [],
      internal: {
        type: `device`,
        mediaType: `text/html`,
        content: JSON.stringify(device),
        contentDigest: createContentDigest(device),
      },
    };
    actions.createNode({ ...device, ...nodeMeta });
  });
}

export { sourceNodes };
