diff options
| author | Adam Soltys <[email protected]> | 2022-11-12 01:41:20 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2022-11-12 01:41:20 -0800 |
| commit | a8daf636b6c595d01e6b1cddfe8227b2b7aaed13 (patch) | |
| tree | ffae8dfb83810345c710ab8855bd48ac0ed313f0 /routes/requests.js | |
| parent | 258e85fcfd05128800fb296114668de5b9af73f4 (diff) | |
| download | coinos-server-a8daf636b6c595d01e6b1cddfe8227b2b7aaed13.tar.gz coinos-server-a8daf636b6c595d01e6b1cddfe8227b2b7aaed13.zip | |
request endpoints
Diffstat (limited to 'routes/requests.js')
| -rw-r--r-- | routes/requests.js | 74 |
1 files changed, 72 insertions, 2 deletions
diff --git a/routes/requests.js b/routes/requests.js index a4aad29f..affcfda7 100644 --- a/routes/requests.js +++ b/routes/requests.js @@ -2,6 +2,73 @@ import app from "$app"; import db from "$db"; import { auth } from "$lib/passport"; import { emit } from "$lib/sockets"; +import { Op } from "@sequelize/core"; + +app.get("/request/:id", auth, async (req, res) => { + try { + let request = await db.Request.findOne({ + where: { id: req.params.id }, + include: [ + { + attributes: ["username", "profile"], + model: db.User, + as: "requester" + }, + { + model: db.Invoice, + as: "invoice" + } + ] + }); + + res.send({ request }); + } catch (e) { + console.log(e); + res.code(500).send(e.message); + } +}); + +app.get("/requests", auth, async (req, res) => { + try { + const day = new Date(new Date().setDate(new Date().getDate() - 1)); + + let invoices = ( + await db.Request.findAll({ + where: { + requester_id: req.user.id, + createdAt: { [Op.gt]: day } + //"$invoice.received$": { [Op.lt]: "$invoice.amount$" } + }, + order: [["createdAt", "DESC"]], + include: { + model: db.Invoice, + as: "invoice", + include: { + model: db.User, + as: "user" + } + } + }) + ) + .map(r => r.invoice && r.invoice.get({ plain: true })) + .filter(Boolean); + + let requests = await db.Request.findAll({ + where: { recipient_id: req.user.id, createdAt: { [Op.gt]: day }, invoice_id: { [Op.eq]: null } }, + order: [["createdAt", "DESC"]], + include: { + attributes: ["username", "profile"], + model: db.User, + as: "requester" + } + }); + + res.send({ invoices, requests }); + } catch (e) { + console.log(e); + res.code(500).send(e.message); + } +}); app.post("/requests", auth, async (req, res) => { try { @@ -10,12 +77,15 @@ app.post("/requests", auth, async (req, res) => { let request = await db.Request.create({ recipient_id, ...params }); request = request.get({ plain: true }); - request.requester = { username: req.user.username, profile: req.user.profile }; + request.requester = { + username: req.user.username, + profile: req.user.profile + }; emit(username, "request", request); res.send(request); } catch (e) { - console.log(e) + console.log(e); res.code(500).send(e.message); } }); |
