postgres.js 876 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. const postgres = require("postgres");
  2. const clientOpts = {
  3. host: process.env.PG_HOST,
  4. user: process.env.PG_USER,
  5. password: process.env.PG_PSWD,
  6. database: process.env.PG_DBNAME,
  7. };
  8. const sql = postgres({ ...clientOpts, max: 1 });
  9. async function allFortunes() {
  10. return sql`select id, message from fortune`;
  11. }
  12. async function getWorld(id) {
  13. return sql`select id, randomNumber from world where id = ${id}`.then(
  14. (arr) => arr[0]
  15. );
  16. }
  17. async function bulkUpdate(worlds) {
  18. const values = sql(
  19. worlds
  20. .map((world) => [world.id, world.randomnumber])
  21. .sort((a, b) => (a[0] < b[0] ? -1 : 1))
  22. );
  23. return sql`update world set randomNumber = (update_data.randomNumber)::int
  24. from (values ${values}) as update_data (id, randomNumber)
  25. where world.id = (update_data.id)::int`;
  26. }
  27. module.exports = {
  28. getWorld,
  29. bulkUpdate,
  30. allFortunes,
  31. };