resolver-postgres.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. const pgp = require('pg-promise')();
  2. const helper = require('./helper');
  3. // MySQL
  4. const connection = {
  5. db: 'hello_world',
  6. username: 'benchmarkdbuser',
  7. password: 'benchmarkdbpass',
  8. host: 'tfb-database',
  9. dialect: 'postgres'
  10. }
  11. const db = pgp(`postgres://${connection.username}:${connection.password}@${connection.host}:5432/${connection.db}`);
  12. async function arrayOfRandomWorlds(totalWorldsToReturn) {
  13. var totalIterations = helper.sanititizeTotal(totalWorldsToReturn);
  14. var arr = [];
  15. return new Promise(async(resolve, reject) => {
  16. for(var i = 0; i < totalIterations; i++) {
  17. arr.push(await getRandomWorld());
  18. }
  19. if(arr.length == totalIterations) {
  20. resolve(arr);
  21. }
  22. });
  23. };
  24. async function updateRandomWorlds(totalToUpdate) {
  25. const total = helper.sanititizeTotal(totalToUpdate);
  26. var arr = [];
  27. return new Promise(async(resolve, reject) => {
  28. for(var i = 0; i < total; i++) {
  29. arr.push(await updateRandomWorld());
  30. }
  31. if(arr.length === total) resolve(arr)
  32. });
  33. };
  34. const getRandomWorld = async () => {
  35. let world = await db.one(`select * from World where id = ${helper.randomizeNum()}`, [true])
  36. return {"id": world.id, "randomNumber": world.randomnumber};
  37. };
  38. const updateRandomWorld = async () => {
  39. let world = await db.oneOrNone(`update world set randomNumber = ${helper.randomizeNum()} where id = ${helper.randomizeNum()} returning id, randomNumber`, [true])
  40. return {"id": world.id, "randomNumber": world.randomnumber};
  41. };
  42. const getAllFortunes = async () => {
  43. return await db.many('select * from fortune', [true]);
  44. };
  45. module.exports = {
  46. Query: {
  47. singleDatabaseQuery: async() => await getRandomWorld(),
  48. multipleDatabaseQueries: async(parent, args) => await arrayOfRandomWorlds(args.total),
  49. getAllFortunes: async() => await getAllFortunes(),
  50. getRandomAndUpdate: async(parent, args) => await updateRandomWorlds(args.total)
  51. },
  52. Mutation: {
  53. createWorld: async(parent, args) => {
  54. let randInt = Math.floor(Math.random() * 1000) + 1;
  55. return await World.create({ id: null, randomNumber: randInt });
  56. },
  57. updateWorld: async(parent, args) => {
  58. return await World.update({id: args.id, randomNumber: args.randomNumber});
  59. }
  60. }
  61. }