text: // Connects to MongoDB using the mongoose driver
  // Handles related routes
  
  const h = require('../helper');
  const Mongoose = require('mongoose');
  Mongoose.connect('mongodb://tfb-database/hello_world');
  
  const WorldSchema = new Mongoose.Schema({
    id: Number,
    randomNumber: Number
  }, {
      collection: 'world'
    });
  
  const FortuneSchema = new Mongoose.Schema({
    id: Number,
    message: String
  }, {
      collection: 'fortune'
    });
  
  const Worlds = Mongoose.model('world', WorldSchema);
  const Fortunes = Mongoose.model('fortune', FortuneSchema);
  
  const randomWorld = async () =>
    await Worlds.findOne({ id: h.randomTfbNumber() });
  
  const updateWorld = async (world) =>
    await Worlds.update(
      { id: world.randomNumber },
      { randomNumber: world.randomNumber }
    );
  
  module.exports = {
  
    SingleQuery: async (req, reply) => {
      reply(await randomWorld()).header('Server', 'hapi');
    },
  
    MultipleQueries: async (req, reply) => {
      const queries = h.getQueries(req);
      const results = h.fillArray(await randomWorld(), queries);
  
      reply(results).header('Server', 'hapi');
    },
  
    Fortunes: async (req, reply) => {
      const fortunes = await Fortunes.find();
      fortunes.push(h.additionalFortune());
      fortunes.sort((a, b) => a.message.localeCompare(b.message));
  
      reply.view('fortunes', {
        fortunes: fortunes
      })
        .header('Content-Type', 'text/html')
        .header('Server', 'hapi');
    },
  
    Updates: async (req, reply) => {
      const queries = h.getQueries(req);
      const results = [];
  
      for (let i = 0; i < queries; i++) {
        const world = await randomWorld();
        world.randomNumber = h.randomTfbNumber();
        await updateWorld(world);
        results.push(world);
      }
  
      reply(results)
        .header('Content-Type', 'application/json')
        .header('Server', 'hapi');
    }
  
  };
  