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 | |
| parent | 258e85fcfd05128800fb296114668de5b9af73f4 (diff) | |
| download | coinos-server-a8daf636b6c595d01e6b1cddfe8227b2b7aaed13.tar.gz coinos-server-a8daf636b6c595d01e6b1cddfe8227b2b7aaed13.zip | |
request endpoints
Diffstat (limited to 'routes')
| -rw-r--r-- | routes/invoices.js | 28 | ||||
| -rw-r--r-- | routes/requests.js | 74 |
2 files changed, 97 insertions, 5 deletions
diff --git a/routes/invoices.js b/routes/invoices.js index 6cde7de8..fa44f6e6 100644 --- a/routes/invoices.js +++ b/routes/invoices.js @@ -61,7 +61,15 @@ app.get("/invoice/:text", async (req, res, next) => { app.post("/invoice", optionalAuth, async (req, res, next) => { try { let { type = "bech32", liquidAddress, id, invoice, user, tx } = req.body; - let { blindkey, currency, tip, amount, rate, network, requester } = invoice; + let { + blindkey, + currency, + tip, + amount, + rate, + network, + request_id + } = invoice; let address, unconfidential, text; if (amount < 0) throw new Error("amount out of range"); @@ -151,11 +159,25 @@ app.post("/invoice", optionalAuth, async (req, res, next) => { if (blindkey) await lq.importBlindingKey(invoice.address, blindkey); } - if (requester) { - emit(requester, "invoice", { + if (request_id) { + console.log("REQ ID", request_id) + let request = await db.Request.findOne({ + where: { id: request_id }, + + include: { + model: db.User, + as: "requester", + attributes: ["username"] + } + }); + request.invoice_id = invoice.id; + await request.save(); + + emit(request.requester.username, "invoice", { amount: invoice.amount, currency: invoice.currency, rate: invoice.rate, + request_id, uuid: invoice.uuid, user: { username: user.username, profile: user.profile } }); 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); } }); |
