diff options
| author | Adam Soltys <[email protected]> | 2023-01-11 22:09:48 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2023-01-12 15:44:13 -0800 |
| commit | c3565838644123e77881ff4f8536792f074047b9 (patch) | |
| tree | 96da43fd19940d2f0836e43a511f0a1fb365044d /routes/requests.js | |
| parent | ded2c69ce89438326523a512b570be6eee4b23f0 (diff) | |
| download | coinos-server-c3565838644123e77881ff4f8536792f074047b9.tar.gz coinos-server-c3565838644123e77881ff4f8536792f074047b9.zip | |
migrating to redis
Diffstat (limited to 'routes/requests.js')
| -rw-r--r-- | routes/requests.js | 130 |
1 files changed, 26 insertions, 104 deletions
diff --git a/routes/requests.js b/routes/requests.js index 0b3832e8..bea8f7fd 100644 --- a/routes/requests.js +++ b/routes/requests.js @@ -1,92 +1,23 @@ import app from "$app"; import { auth } from "$lib/passport"; import { emit } from "$lib/sockets"; +import { g, rd } from "$lib/redis"; -app.get("/request/:id", auth, async (req, res) => { +app.get("/request/:id", auth, async ({ params: { id } }, res) => { try { - let request = await db.Request.findOne({ - where: { id: req.params.id }, - include: [ - { - attributes: ["username", "profile"], - model: db.User, - as: "recipient" - }, - { - attributes: ["username", "profile"], - model: db.User, - as: "requester" - }, - { - model: db.Invoice, - as: "invoice" - } - ] - }); - - res.send({ request }); + res.send({ request: await g(id) }); } catch (e) { console.log(e); res.code(500).send(e.message); } }); -app.get("/requests", auth, async (req, res) => { +app.get("/requests", auth, async ({ user: { uuid } }, res) => { try { const day = new Date(new Date().setDate(new Date().getDate() - 1)); - let invoices = ( - await db.Request.findAll({ - where: { - [Op.or]: { - recipient_id: req.user.id, - requester_id: req.user.id - }, - createdAt: { [Op.gt]: day } - }, - order: [["createdAt", "DESC"]], - include: [ - { - model: db.Invoice, - as: "invoice", - where: { received: { [Op.lt]: col("invoice.amount") } }, - include: { - model: db.User, - as: "user", - attributes: ["username", "profile"] - } - }, - { - model: db.User, - as: "requester", - attributes: ["username", "profile"] - } - ] - }) - ) - .map( - r => - r.invoice && { - request_id: r.id, - requester: r.requester.get({ plain: true }), - ...r.invoice.get({ plain: true }) - } - ) - .filter(r => r); - - 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" - } - }); + let invoices = await rd.lRange(`${uuid}:invoices`, 0, -1); + let requests = await rd.lRange(`${uuid}:requests`, 0, -1); res.send({ invoices, requests }); } catch (e) { @@ -95,41 +26,32 @@ app.get("/requests", auth, async (req, res) => { } }); -app.post("/requests", auth, async (req, res) => { - try { - let { recipient: username, ...params } = req.body; - let { id: recipient_id } = await db.User.findOne({ where: { username } }); +app.post( + "/requests", + auth, + async ( + { body: { recipient, ...params }, user: { username, profile } }, + res + ) => { + let { id: recipient_id } = await g(`user:${recipient}`); - let request = await db.Request.create({ recipient_id, ...params }); - request = request.get({ plain: true }); + let request = { recipient_id, ...params }; request.requester = { - username: req.user.username, - profile: req.user.profile + username, + profile }; - emit(username, "request", request); + + emit(recipient, "request", request); res.send(request); - } catch (e) { - console.log(e); - res.code(500).send(e.message); } -}); - -app.post("/requests/delete", auth, async (req, res) => { - try { - let r = await db.Request.findOne({ - where: { - id: req.body.request_id, - [Op.or]: { requester_id: req.user.id, recipient_id: req.user.id } - } - }); - - if (!r) throw new Error("request not found"); - await r.destroy(); +); +app.post( + "/requests/delete", + auth, + async ({ body: { request_id }, user: { id } }, res) => { + await rd.lrem(`user:${id}:requests`, request_id); res.send(); - } catch (e) { - console.log(e); - res.code(500).send(e.message); } -}); +); |
