aboutsummaryrefslogtreecommitdiffstats
path: root/routes/requests.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-01-11 22:09:48 -0800
committerAdam Soltys <[email protected]>2023-01-12 15:44:13 -0800
commitc3565838644123e77881ff4f8536792f074047b9 (patch)
tree96da43fd19940d2f0836e43a511f0a1fb365044d /routes/requests.js
parentded2c69ce89438326523a512b570be6eee4b23f0 (diff)
downloadcoinos-server-c3565838644123e77881ff4f8536792f074047b9.tar.gz
coinos-server-c3565838644123e77881ff4f8536792f074047b9.zip
migrating to redis
Diffstat (limited to 'routes/requests.js')
-rw-r--r--routes/requests.js130
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);
}
-});
+);