diff options
| author | Adam Soltys <[email protected]> | 2024-02-20 23:18:25 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-02-20 23:19:31 -0800 |
| commit | 99860c48bc27f17d8c593dcfbaab494092e5b19c (patch) | |
| tree | f83b3ae3e20515e062ed5d5d3bb114d63d2664fe | |
| parent | 04d0ffe157b0b412a673a8de2be4ca8f1fe4eff3 (diff) | |
| download | coinos-server-99860c48bc27f17d8c593dcfbaab494092e5b19c.tar.gz coinos-server-99860c48bc27f17d8c593dcfbaab494092e5b19c.zip | |
sort item endpoint
| -rw-r--r-- | index.js | 1 | ||||
| -rw-r--r-- | routes/items.js | 33 |
2 files changed, 27 insertions, 7 deletions
@@ -104,6 +104,7 @@ app.get("/:id/items", items.list); app.get("/items/:id", items.get); app.post("/items", auth, items.create); app.post("/items/delete", auth, items.del); +app.post("/items/sort", auth, items.sort); app.get("/request/:id", auth, requests.get); app.get("/requests", auth, requests.list); diff --git a/routes/items.js b/routes/items.js index 4d831592..a7fa1567 100644 --- a/routes/items.js +++ b/routes/items.js @@ -3,16 +3,20 @@ import { v4 } from "uuid"; import { bail, fail } from "$lib/utils"; export default { - async list({ params: { id } }, res) { - let items = await db.lRange(`${id}:items`, 0, -1); - items = await Promise.all(items.map(async (id) => await g(`item:${id}`))); + async list({ params: { id: uid } }, res) { + let items = []; + for (let id of await db.lRange(`${uid}:items`, 0, -1)) { + let item = await g(`item:${id}`); + if (item) items.push(item); + else await db.lRem(`${uid}:items`, 0, id); + } + res.send(items); }, async get({ params: { id } }, res) { try { let item = await g(`item:${id}`); - console.log("ITEM", item); if (!item) fail("Item not found"); res.send(item); } catch (e) { @@ -26,15 +30,16 @@ export default { await db.lPush(`${id}:items`, item.id); } - await s(`item:${item.id}`, item); + if (!parseFloat(item.price)) fail("Invalid price"); + item.name = item.name.replace(/[^a-zA-Z0-9 ]/g, ""); + + await s(`item:${item.id}`, item); res.send(item); }, async del({ body: { item }, user: { id } }, res) { try { - console.log(id); - console.log(item.id); let n = await db.lRem(`${id}:items`, 0, item.id); if (n) db.del(`item:${item.id}`); else fail("item not found"); @@ -44,4 +49,18 @@ export default { bail(res, e.message); } }, + + async sort({ body: { items }, user: { id } }, res) { + try { + await db.del(`${id}:items`); + + for (let item of items) { + await db.rPush(`${id}:items`, item.id); + } + + res.send({}); + } catch (e) { + bail(res, e.message); + } + }, }; |
