aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2022-10-13 18:05:49 -0700
committerAdam Soltys <[email protected]>2022-10-18 21:58:51 -0700
commita4cccc51652405d6c3d2b6edd2dba5627c3535ba (patch)
tree462cbfdd70674e79cb50156d6562713983ce490d
parentd97b2543f6b9b5a969e2f9fa93f6064b543a58c5 (diff)
downloadcoinos-server-a4cccc51652405d6c3d2b6edd2dba5627c3535ba.tar.gz
coinos-server-a4cccc51652405d6c3d2b6edd2dba5627c3535ba.zip
tickets
-rw-r--r--index.js2
-rw-r--r--lib/redis.js11
-rw-r--r--package.json1
-rw-r--r--pnpm-lock.yaml72
-rw-r--r--routes/tickets.js19
5 files changed, 105 insertions, 0 deletions
diff --git a/index.js b/index.js
index 06338fbc..c0db543c 100644
--- a/index.js
+++ b/index.js
@@ -6,6 +6,7 @@ import { l, err } from "./lib/logging";
import { optionalAuth } from "$lib/passport";
import "./db";
+import "./lib/redis";
import "./lib/sockets";
import "./lib/webhooks";
import "./lib/passport";
@@ -21,6 +22,7 @@ import "./routes/users";
import "./routes/invoices";
import "./routes/payments";
import "./routes/lnurl";
+import "./routes/tickets";
if (config.bitcoin) store.networks.push("bitcoin");
if (config.liquid) store.networks.push("liquid");
diff --git a/lib/redis.js b/lib/redis.js
new file mode 100644
index 00000000..98a71856
--- /dev/null
+++ b/lib/redis.js
@@ -0,0 +1,11 @@
+import { createClient } from "redis";
+
+const redis = createClient({
+ url: "redis://redis",
+});
+
+redis.on("error", (err) => console.log("redis error", err));
+
+await redis.connect();
+
+export default redis;
diff --git a/package.json b/package.json
index 033cb60f..93810935 100644
--- a/package.json
+++ b/package.json
@@ -58,6 +58,7 @@
"pump": "^3.0.0",
"query-string": "^6.13.1",
"readable-stream-clone": "^0.0.7",
+ "redis": "^4.3.1",
"sqlite3": "^5.0.11",
"tiny-secp256k1": "^2.1.2",
"uuid": "8",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index bf5b859b..5caf125d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -53,6 +53,7 @@ specifiers:
pump: ^3.0.0
query-string: ^6.13.1
readable-stream-clone: ^0.0.7
+ redis: ^4.3.1
sqlite3: ^5.0.11
tiny-secp256k1: ^2.1.2
uuid: '8'
@@ -113,6 +114,7 @@ dependencies:
pump: 3.0.0
query-string: 6.14.1
readable-stream-clone: 0.0.7
+ redis: 4.3.1
sqlite3: 5.0.11
tiny-secp256k1: 2.1.2
uuid: 8.3.2
@@ -369,6 +371,55 @@ packages:
resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
dev: false
+ /@redis/bloom/1.0.2_@[email protected]:
+ resolution: {integrity: sha512-EBw7Ag1hPgFzdznK2PBblc1kdlj5B5Cw3XwI9/oG7tSn85/HKy3X9xHy/8tm/eNXJYHLXHJL/pkwBpFMVVefkw==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+ dependencies:
+ '@redis/client': 1.3.0
+ dev: false
+
+ /@redis/client/1.3.0:
+ resolution: {integrity: sha512-XCFV60nloXAefDsPnYMjHGtvbtHR8fV5Om8cQ0JYqTNbWcQo/4AryzJ2luRj4blveWazRK/j40gES8M7Cp6cfQ==}
+ engines: {node: '>=14'}
+ dependencies:
+ cluster-key-slot: 1.1.0
+ generic-pool: 3.8.2
+ yallist: 4.0.0
+ dev: false
+
+ /@redis/graph/1.0.1_@[email protected]:
+ resolution: {integrity: sha512-oDE4myMCJOCVKYMygEMWuriBgqlS5FqdWerikMoJxzmmTUErnTRRgmIDa2VcgytACZMFqpAOWDzops4DOlnkfQ==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+ dependencies:
+ '@redis/client': 1.3.0
+ dev: false
+
+ /@redis/json/1.0.4_@[email protected]:
+ resolution: {integrity: sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+ dependencies:
+ '@redis/client': 1.3.0
+ dev: false
+
+ /@redis/search/1.1.0_@[email protected]:
+ resolution: {integrity: sha512-NyFZEVnxIJEybpy+YskjgOJRNsfTYqaPbK/Buv6W2kmFNaRk85JiqjJZA5QkRmWvGbyQYwoO5QfDi2wHskKrQQ==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+ dependencies:
+ '@redis/client': 1.3.0
+ dev: false
+
+ /@redis/time-series/1.0.3_@[email protected]:
+ resolution: {integrity: sha512-OFp0q4SGrTH0Mruf6oFsHGea58u8vS/iI5+NpYdicaM+7BgqBZH8FFvNZ8rYYLrUO/QRqMq72NpXmxLVNcdmjA==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+ dependencies:
+ '@redis/client': 1.3.0
+ dev: false
+
/@sequelize/core/7.0.0-alpha.10_jza55q5z6t5fyeys4gcza62sym:
resolution: {integrity: sha512-uikpWaCiIaijsgoa9cH+3jCQl8r+FaQPhoE8AOJYvPwxOx52E1JZnRPMXNnlpbFy3Xu0qekrc5LBJq7IR8UB0Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -1308,6 +1359,11 @@ packages:
mimic-response: 1.0.1
dev: false
+ /cluster-key-slot/1.1.0:
+ resolution: {integrity: sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
/co/4.6.0:
resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=}
engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
@@ -2222,6 +2278,11 @@ packages:
is-property: 1.0.2
dev: false
+ /generic-pool/3.8.2:
+ resolution: {integrity: sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==}
+ engines: {node: '>= 4'}
+ dev: false
+
/get-caller-file/2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
@@ -4045,6 +4106,17 @@ packages:
resolve: 1.20.0
dev: false
+ /redis/4.3.1:
+ resolution: {integrity: sha512-cM7yFU5CA6zyCF7N/+SSTcSJQSRMEKN0k0Whhu6J7n9mmXRoXugfWDBo5iOzGwABmsWKSwGPTU5J4Bxbl+0mrA==}
+ dependencies:
+ '@redis/bloom': 1.0.2_@[email protected]
+ '@redis/client': 1.3.0
+ '@redis/graph': 1.0.1_@[email protected]
+ '@redis/json': 1.0.4_@[email protected]
+ '@redis/search': 1.1.0_@[email protected]
+ '@redis/time-series': 1.0.3_@[email protected]
+ dev: false
+
/registry-auth-token/4.2.1:
resolution: {integrity: sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==}
engines: {node: '>=6.0.0'}
diff --git a/routes/tickets.js b/routes/tickets.js
new file mode 100644
index 00000000..0334c2c6
--- /dev/null
+++ b/routes/tickets.js
@@ -0,0 +1,19 @@
+import app from "$app";
+import redis from "$lib/redis";
+import { auth } from "$lib/passport";
+
+app.get("/ticket", async (req, res) => {
+ res.send({ ticket: await redis.lLen("tickets") });
+});
+
+app.post("/ticket", auth, async (req, res) => {
+ try {
+ let { asset } = req.body;
+ if (!asset || asset.length !== 64) throw new Error("invalid asset");
+ await redis.lPush("tickets", req.body.asset);
+
+ res.send(await redis.lPush("tickets", req.body.asset));
+ } catch (e) {
+ res.code(500).send(e.message);
+ }
+});