| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | const h = require("./helper");/** * @param databaseLayer * @returns {{singleQuery: function(*), multipleQueries: function(*), fortunes: function(*), updates: function(*)}} */module.exports = (databaseLayer) => ({  singleQuery: async (req, reply) => {    const world = await databaseLayer.getWorld(h.randomTfbNumber());    reply.send(world);  },  multipleQueries: async (req, reply) => {    const queries = h.getQueries(req.query.queries);    const promisesArray = [];    for (let i = 0; i < queries; i++) {      promisesArray.push(databaseLayer.getWorld(h.randomTfbNumber()));    }    const worlds = await Promise.all(promisesArray);    reply.send(worlds);  },  fortunes: async (req, reply) => {    const fortunes = await databaseLayer.allFortunes();    fortunes.push(h.additionalFortune);    fortunes.sort(compare);    return reply.view("/views/fortunes.hbs", { fortunes });  },  updates: async (req, reply) => {    const num = h.getQueries(req.query.queries);    const worldPromises = [];    for (let i = 0; i < num; i++) {      const id = h.randomTfbNumber();      worldPromises.push(databaseLayer.getWorld(id));    }    const worlds = await Promise.all(worldPromises);    const worldsToUpdate = worlds.map((world) => {      world.randomnumber = h.randomTfbNumber();      return world;    });    await databaseLayer.bulkUpdate(worldsToUpdate);    reply.send(worldsToUpdate);  },});// faster than localeComparefunction compare(a, b) {  if (a.message < b.message) {    return -1;  } else if (a.message > b.message) {    return 1;  }  return 0;}
 |