From 04d0ffe157b0b412a673a8de2be4ca8f1fe4eff3 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 20 Feb 2024 19:54:07 -0800 Subject: items endpoints --- index.js | 6 ++++++ routes/items.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ routes/users.js | 5 +++++ 3 files changed, 58 insertions(+) create mode 100644 routes/items.js diff --git a/index.js b/index.js index 40fb3f18..8a5baff3 100644 --- a/index.js +++ b/index.js @@ -16,6 +16,7 @@ import lnurl from "$routes/lnurl"; import nostr from "$routes/nostr"; import rates from "$routes/rates"; import invoices from "$routes/invoices"; +import items from "$routes/items"; import users from "$routes/users"; import payments from "$routes/payments"; import requests from "$routes/requests"; @@ -99,6 +100,11 @@ app.post("/pin", auth, users.pin); app.post("/otpsecret", auth, users.otpsecret); app.get("/contacts", auth, users.contacts); +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.get("/request/:id", auth, requests.get); app.get("/requests", auth, requests.list); app.post("/requests", auth, requests.create); diff --git a/routes/items.js b/routes/items.js new file mode 100644 index 00000000..4d831592 --- /dev/null +++ b/routes/items.js @@ -0,0 +1,47 @@ +import { g, s, db } from "$lib/db"; +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}`))); + 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) { + bail(res, e.message); + } + }, + + async create({ body: item, user: { id } }, res) { + if (!item.id) { + item.id = v4(); + await db.lPush(`${id}:items`, item.id); + } + + 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"); + + res.send({}); + } catch (e) { + bail(res, e.message); + } + }, +}; diff --git a/routes/users.js b/routes/users.js index b30beb54..7598a8a6 100644 --- a/routes/users.js +++ b/routes/users.js @@ -524,4 +524,9 @@ export default { bail(res, e.message); } }, + + async items({ params: { id } }, res) { + let item = await g(`item:${id}`); + return item; + }, }; -- cgit v1.2.3