diff options
Diffstat (limited to 'routes/requests.js')
| -rw-r--r-- | routes/requests.js | 158 |
1 files changed, 35 insertions, 123 deletions
diff --git a/routes/requests.js b/routes/requests.js index 70ab2b07..79af1fb6 100644 --- a/routes/requests.js +++ b/routes/requests.js @@ -1,137 +1,49 @@ -import app from "$app"; -import db from "$db"; -import { auth } from "$lib/passport"; import { emit } from "$lib/sockets"; -import { Op, col } from "@sequelize/core"; +import { g, db } from "$lib/db"; -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: "recipient" - }, - { - attributes: ["username", "profile"], - model: db.User, - as: "requester" - }, - { - model: db.Invoice, - as: "invoice" - } - ] - }); +export default { + async get({ params: { id } }, res) { + try { + res.send({ request: await g(id) }); + } catch (e) { + console.log(e); + res.code(500).send(e.message); + } + }, - 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)); + async list({ user: { id } }, 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 invoices = await db.lRange(`${id}:invoices`, 0, -1); + let requests = await db.lRange(`${id}:requests`, 0, -1); - 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); - } -}); + res.send({ invoices, requests }); + } catch (e) { + console.log(e); + res.code(500).send(e.message); + } + }, -app.post("/requests", auth, async (req, res) => { - try { - let { recipient: username, ...params } = req.body; - let { id: recipient_id } = await db.User.findOne({ where: { username } }); + async create( + { 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); - res.send(request); - } catch (e) { - console.log(e); - res.code(500).send(e.message); - } -}); + emit(recipient, "request", request); -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(); + res.send(request); + }, + async destroy({ body: { request_id }, user: { id } }, res) { + await db.lrem(`user:${id}:requests`, request_id); res.send(); - } catch (e) { - console.log(e); - res.code(500).send(e.message); } -}); +}; |
