aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--index.js6
-rw-r--r--routes/items.js47
-rw-r--r--routes/users.js5
3 files changed, 58 insertions, 0 deletions
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;
+ },
};