diff options
| author | Adam Soltys <[email protected]> | 2024-02-20 19:54:07 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-02-20 23:19:31 -0800 |
| commit | 04d0ffe157b0b412a673a8de2be4ca8f1fe4eff3 (patch) | |
| tree | b14a97849d8c011037c1d9f192c50392b0a491e9 | |
| parent | a02e15ce9a4b8d8fba9934d8f9bde3959fc423af (diff) | |
| download | coinos-server-04d0ffe157b0b412a673a8de2be4ca8f1fe4eff3.tar.gz coinos-server-04d0ffe157b0b412a673a8de2be4ca8f1fe4eff3.zip | |
items endpoints
| -rw-r--r-- | index.js | 6 | ||||
| -rw-r--r-- | routes/items.js | 47 | ||||
| -rw-r--r-- | routes/users.js | 5 |
3 files changed, 58 insertions, 0 deletions
@@ -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; + }, }; |
