From 4cd58d6461f3bda9bb2610d54980188903553240 Mon Sep 17 00:00:00 2001 From: Tanner Shaw Date: Tue, 1 Aug 2023 12:35:39 -0500 Subject: [PATCH 01/11] feature(express) endpoint for fetching all messages for a room --- package-lock.json | 8 +++--- package.json | 2 +- src/data/db.ts | 61 +++++++++++++++++++++--------------------- src/endpoints/index.ts | 29 +++++++++++++++++--- 4 files changed, 60 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index 02df99c..933323a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "body-parser": "^1.20.2", "cors": "^2.8.5", "discreetly-claimcodes": "^1.1.3", - "discreetly-interfaces": "^0.1.21", + "discreetly-interfaces": "^0.1.22", "dotenv": "^16.3.1", "express": "^4.18.2", "mongodb": "^5.7.0", @@ -1887,9 +1887,9 @@ "integrity": "sha512-2QnlhYUPIGLl11XgxIxl6ZKIJZoS2T1ABIHbqjBbec0YYQ2qfWZ7JWH53OZm0mqeO8Dbjon5zK3YNoGiuYJ1Gg==" }, "node_modules/discreetly-interfaces": { - "version": "0.1.21", - "resolved": "https://registry.npmjs.org/discreetly-interfaces/-/discreetly-interfaces-0.1.21.tgz", - "integrity": "sha512-REQ+QUAWprx7j2RPMZi+55Xlfr9pgUHAHnQ9V14FMjnhE6iXl4SWHvg5nskU5EKxrMn2C6AhEd/Aj1T4uwMWHA==", + "version": "0.1.22", + "resolved": "https://registry.npmjs.org/discreetly-interfaces/-/discreetly-interfaces-0.1.22.tgz", + "integrity": "sha512-p7HuKOE0Zan3Nf3Rg6auzsxNeKrtH4GMRoSMhsb+6YGO9AlF6ffnlHV4L4SSxLbJr2XInGEf0TUzsKkXwkQKoQ==", "dependencies": { "poseidon-lite": "^0.2.0", "rlnjs": "^3.1.4" diff --git a/package.json b/package.json index c997642..b84025c 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "body-parser": "^1.20.2", "cors": "^2.8.5", "discreetly-claimcodes": "^1.1.3", - "discreetly-interfaces": "^0.1.21", + "discreetly-interfaces": "^0.1.22", "dotenv": "^16.3.1", "express": "^4.18.2", "mongodb": "^5.7.0", diff --git a/src/data/db.ts b/src/data/db.ts index 716a4c5..8351c2d 100644 --- a/src/data/db.ts +++ b/src/data/db.ts @@ -10,7 +10,6 @@ import type { ClaimCodeT } from 'discreetly-claimcodes'; const prisma = new PrismaClient(); - interface CodeStatus { claimed: boolean; roomIds: string[]; @@ -64,6 +63,36 @@ export function getRoomsByIdentity(identity: string): RoomI[] { return []; } +export function findClaimCode(code: string): Promise { + return prisma.claimCodes.findUnique({ + where: { claimcode: code }, + }); +} + +export function updateClaimCode(code: string): Promise { + return prisma.claimCodes.update({ + where: { claimcode: code }, + data: { claimed: true }, + }); +} + +export function updateRoomIdentities(idc: string, roomIds: string[]): Promise { + return prisma.rooms.updateMany({ + where: { id: { in: roomIds } }, + data: { + identities: { + push: idc + }, + }, + }); +} + +export function findUpdatedRooms(roomIds: string[]): Promise { + return prisma.rooms.findMany({ + where: { id: { in: roomIds } }, + }); +} + /** * Creates a new room with the given name and optional parameters. * @param {string} name - The name of the room. @@ -121,33 +150,3 @@ export function createRoom( .then(() => { }) .catch((err) => console.error(err)); } - -export function findClaimCode(code: string): Promise { - return prisma.claimCodes.findUnique({ - where: { claimcode: code }, - }); -} - -export function updateClaimCode(code: string): Promise { - return prisma.claimCodes.update({ - where: { claimcode: code }, - data: { claimed: true }, - }); -} - -export function updateRoomIdentities(idc: string, roomIds: string[]): Promise { - return prisma.rooms.updateMany({ - where: { id: { in: roomIds } }, - data: { - identities: { - push: idc - }, - }, - }); -} - -export function findUpdatedRooms(roomIds: string[]): Promise { - return prisma.rooms.findMany({ - where: { id: { in: roomIds } }, - }); -} diff --git a/src/endpoints/index.ts b/src/endpoints/index.ts index f857ff2..7cb3708 100644 --- a/src/endpoints/index.ts +++ b/src/endpoints/index.ts @@ -63,8 +63,11 @@ export function initEndpoints(app: Express) { }); app.post("/join", (req, res) => { - const { code, idc } = req.body; - + interface JoinRequestBody { + code: string; + idc: string; + } + const { code, idc } = req.body as JoinRequestBody; findClaimCode(code) .then((codeStatus) => { if (codeStatus && codeStatus.claimed === false) { @@ -92,7 +95,6 @@ export function initEndpoints(app: Express) { }); }); - app.post('/room/add', (req, res) => { interface RoomData { password: string; @@ -119,4 +121,23 @@ export function initEndpoints(app: Express) { res.status(401).send('Unauthorized'); } }); -} + + app.get('/api/room/:id/messages', (req, res) => { + const { id } = req.params; + prisma.messages + .findMany({ + where: { + roomId: id + } + }) + .then((messages) => { + pp('Express: fetching messages for room ' + id) + res.status(200).json(messages); + }) + .catch((error: Error) => { + pp(error, 'error') + res.status(500).send('Error fetching messages'); + }); + } + ) +}; From f407dcb630576c732e77ac05558461d8efb2bf19 Mon Sep 17 00:00:00 2001 From: AtHeartEngineer Date: Tue, 1 Aug 2023 14:06:36 -0400 Subject: [PATCH 02/11] fix env variable name being incorrect --- src/config/serverConfig.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/config/serverConfig.ts b/src/config/serverConfig.ts index cb01e4a..dc36fc3 100644 --- a/src/config/serverConfig.ts +++ b/src/config/serverConfig.ts @@ -3,17 +3,17 @@ import 'dotenv/config'; // TODO THIS SHOULD BE AN ENVIRONMENTAL VARIABLE STORED IN .env FILE // IF THIS FILE DOESN'T EXIST, GENERATE A RANDOM ID AND STORE IT IN THE FILE -let serverID: bigint; +let server_ID: bigint; try { - serverID = process.env.SERVERID ? (process.env.SERVERID as unknown as bigint) : 0n; + server_ID = process.env.SERVER_ID ? (process.env.SERVER_ID as unknown as bigint) : 0n; } catch (error) { console.error('Error reading serverID from .env file!'); } -console.log('SERVERID:', serverID); +console.log('SERVERID:', server_ID); export const serverConfig: ServerI = { - id: serverID, + id: server_ID, name: 'Localhost', serverInfoEndpoint: 'localhost:3001', messageHandlerSocket: 'localhost:3002', From 6c1ff447708fabb41b88187292c8e169f603c394 Mon Sep 17 00:00:00 2001 From: AtHeartEngineer Date: Tue, 1 Aug 2023 16:50:58 -0400 Subject: [PATCH 03/11] feat: configurable port/ws-port/name in .env --- src/config/serverConfig.ts | 35 ++++++++++++++++++++++++++++------- src/server.ts | 5 +++-- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/config/serverConfig.ts b/src/config/serverConfig.ts index dc36fc3..a08849e 100644 --- a/src/config/serverConfig.ts +++ b/src/config/serverConfig.ts @@ -3,19 +3,40 @@ import 'dotenv/config'; // TODO THIS SHOULD BE AN ENVIRONMENTAL VARIABLE STORED IN .env FILE // IF THIS FILE DOESN'T EXIST, GENERATE A RANDOM ID AND STORE IT IN THE FILE -let server_ID: bigint; +let SERVER_ID: bigint; +let PORT: string; +let WS_PORT: string; +let NAME: string; try { - server_ID = process.env.SERVER_ID ? (process.env.SERVER_ID as unknown as bigint) : 0n; + SERVER_ID = process.env.SERVER_ID ? (process.env.SERVER_ID as unknown as bigint) : 0n; } catch (error) { console.error('Error reading serverID from .env file!'); } -console.log('SERVERID:', server_ID); +console.log('SERVERID:', SERVER_ID); + +try { + PORT = process.env.PORT ? process.env.PORT : '3001'; +} catch (err) { + console.error('Error reading PORT from .env file!'); +} + +try { + WS_PORT = process.env.WS_PORT ? process.env.WS_PORT : '3002'; +} catch (err) { + console.error('Error reading PORT from .env file!'); +} + +try { + NAME = process.env.NAME ? process.env.NAME : 'localhost'; +} catch (err) { + console.error('Error reading PORT from .env file!'); +} export const serverConfig: ServerI = { - id: server_ID, - name: 'Localhost', - serverInfoEndpoint: 'localhost:3001', - messageHandlerSocket: 'localhost:3002', + id: SERVER_ID, + name: NAME, + serverInfoEndpoint: PORT, + messageHandlerSocket: WS_PORT, version: '0.0.1' }; diff --git a/src/server.ts b/src/server.ts index 3681381..65e7a97 100644 --- a/src/server.ts +++ b/src/server.ts @@ -46,8 +46,8 @@ const io = new SocketIOServer(socket_server, { }); function initAppListeners() { - const expressServerPort = serverConfig.serverInfoEndpoint.split(':')[1]; - const socketServerPort = serverConfig.messageHandlerSocket.split(':')[1]; + const expressServerPort = serverConfig.serverInfoEndpoint; + const socketServerPort = serverConfig.messageHandlerSocket; app.listen(expressServerPort, () => { pp(`Express Http Server is running at port ${expressServerPort}`); }); @@ -62,6 +62,7 @@ function initAppListeners() { */ if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') { console.log('~~~~DEVELOPMENT MODE~~~~'); + console.log(serverConfig); initWebsockets(io); initEndpoints(app, adminAuth); listEndpoints(app); From f2e00ac26aa6c339f3f6b141884099a230a86560 Mon Sep 17 00:00:00 2001 From: AtHeartEngineer Date: Tue, 1 Aug 2023 18:35:24 -0400 Subject: [PATCH 04/11] feat: trying to get heroku to deploy --- src/config/serverConfig.ts | 9 +-------- src/endpoints/index.ts | 14 +++++++------- src/server.ts | 30 ++++++++++-------------------- 3 files changed, 18 insertions(+), 35 deletions(-) diff --git a/src/config/serverConfig.ts b/src/config/serverConfig.ts index a08849e..e743552 100644 --- a/src/config/serverConfig.ts +++ b/src/config/serverConfig.ts @@ -5,7 +5,6 @@ import 'dotenv/config'; // IF THIS FILE DOESN'T EXIST, GENERATE A RANDOM ID AND STORE IT IN THE FILE let SERVER_ID: bigint; let PORT: string; -let WS_PORT: string; let NAME: string; try { @@ -21,12 +20,6 @@ try { console.error('Error reading PORT from .env file!'); } -try { - WS_PORT = process.env.WS_PORT ? process.env.WS_PORT : '3002'; -} catch (err) { - console.error('Error reading PORT from .env file!'); -} - try { NAME = process.env.NAME ? process.env.NAME : 'localhost'; } catch (err) { @@ -37,6 +30,6 @@ export const serverConfig: ServerI = { id: SERVER_ID, name: NAME, serverInfoEndpoint: PORT, - messageHandlerSocket: WS_PORT, + messageHandlerSocket: PORT, version: '0.0.1' }; diff --git a/src/endpoints/index.ts b/src/endpoints/index.ts index 0e98784..a8cbd76 100644 --- a/src/endpoints/index.ts +++ b/src/endpoints/index.ts @@ -22,7 +22,7 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) { res.json(serverConfig); }); - app.get('/api/room/:id', (req, res) => { + app.get(['/room/:id', '/api/room/:id'], (req, res) => { pp(String('Express: fetching room info for ' + req.params.id)); getRoomByID(req.params.id) .then((room: RoomI) => { @@ -36,14 +36,14 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) { .catch((err) => console.error(err)); }); - app.get('/api/rooms/:idc', (req, res) => { + app.get(['/rooms/:idc', '/api/rooms/:idc'], (req, res) => { pp(String('Express: fetching rooms by identityCommitment ' + req.params.idc)); res.json(getRoomsByIdentity(req.params.idc)); }); - app.post('/join', (req, res) => { + app.post(['/join', '/api/join'], (req, res) => { const { code, idc }: { code: string; idc: string } = req.body; - + console.log('Invite Code:', code); findClaimCode(code) .then((codeStatus) => { if (codeStatus && codeStatus.claimed === false) { @@ -69,7 +69,7 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) { }); /* ~~~~ ADMIN ENDPOINTS ~~~~ */ - app.post('/room/add', adminAuth, (req, res) => { + app.post(['/room/add', '/api/room/add'], adminAuth, (req, res) => { interface RoomData { roomName: string; rateLimit: number; @@ -91,7 +91,7 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) { } }); - app.get('/logclaimcodes', adminAuth, (req, res) => { + app.get(['/logclaimcodes', '/api/logclaimcodes'], adminAuth, (req, res) => { pp('Express: fetching claim codes'); prisma.claimCodes .findMany() @@ -104,7 +104,7 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) { }); }); - app.get('/api/rooms', adminAuth, (req, res) => { + app.get(['/rooms', '/api/rooms'], adminAuth, (req, res) => { pp(String('Express: fetching all rooms')); prisma.rooms .findMany() diff --git a/src/server.ts b/src/server.ts index 65e7a97..26f3685 100644 --- a/src/server.ts +++ b/src/server.ts @@ -1,10 +1,9 @@ -import { Server } from 'http'; import express from 'express'; +import http from 'http'; import cors from 'cors'; import helmet from 'helmet'; import basicAuth from 'express-basic-auth'; import { Server as SocketIOServer } from 'socket.io'; - import { serverConfig } from './config/serverConfig'; import { pp, shim } from './utils'; import mock from './data/mock'; @@ -16,7 +15,6 @@ import { listEndpoints } from './endpoints/utils'; // TODO https://www.npmjs.com/package/winston const app = express(); -const socket_server = new Server(app); shim(); app.use(express.json()); @@ -39,22 +37,14 @@ const adminAuth = basicAuth({ } }); -const io = new SocketIOServer(socket_server, { - cors: { - origin: '*' - } -}); - function initAppListeners() { - const expressServerPort = serverConfig.serverInfoEndpoint; - const socketServerPort = serverConfig.messageHandlerSocket; - app.listen(expressServerPort, () => { - pp(`Express Http Server is running at port ${expressServerPort}`); + const serverPort = serverConfig.serverInfoEndpoint; + const httpServer = http.createServer(app).listen(serverPort, () => { + pp(`Server is running at port ${serverPort}`); }); - socket_server.listen(socketServerPort, () => { - pp(`SocketIO Server is running at port ${socketServerPort}`); - }); + const io = new SocketIOServer(httpServer); + return io; } /** @@ -63,15 +53,15 @@ function initAppListeners() { if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') { console.log('~~~~DEVELOPMENT MODE~~~~'); console.log(serverConfig); - initWebsockets(io); initEndpoints(app, adminAuth); + const io = initAppListeners(); + initWebsockets(io); listEndpoints(app); - initAppListeners(); mock(io); // TODO! This is dangerous and only for development console.log('Admin password: ' + admin_password); } else { - initWebsockets(io); initEndpoints(app, adminAuth); - initAppListeners(); + const io = initAppListeners(); + initWebsockets(io); } From c1d7ec09bf6012a78ee0236555fdeeecdb602901 Mon Sep 17 00:00:00 2001 From: AtHeartEngineer Date: Tue, 1 Aug 2023 18:59:30 -0400 Subject: [PATCH 05/11] chore renamed env variables to prevent conflicts with heroku --- src/config/serverConfig.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/serverConfig.ts b/src/config/serverConfig.ts index e743552..897e722 100644 --- a/src/config/serverConfig.ts +++ b/src/config/serverConfig.ts @@ -15,13 +15,13 @@ try { console.log('SERVERID:', SERVER_ID); try { - PORT = process.env.PORT ? process.env.PORT : '3001'; + PORT = process.env.SERVER_PORT ? process.env.SERVER_PORT : '8000'; } catch (err) { console.error('Error reading PORT from .env file!'); } try { - NAME = process.env.NAME ? process.env.NAME : 'localhost'; + NAME = process.env.SERVER_NAME ? process.env.SERVER_NAME : 'localhost'; } catch (err) { console.error('Error reading PORT from .env file!'); } From 226cfee1f9b4cbe60f413d130277f7c68efac96f Mon Sep 17 00:00:00 2001 From: AtHeartEngineer Date: Tue, 1 Aug 2023 19:14:59 -0400 Subject: [PATCH 06/11] fix PORT is necessary for heroku to host --- package-lock.json | 8 ++++---- package.json | 2 +- src/config/serverConfig.ts | 13 +------------ src/server.ts | 6 +++--- 4 files changed, 9 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5f833f6..4130fd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "body-parser": "^1.20.2", "cors": "^2.8.5", "discreetly-claimcodes": "^1.1.3", - "discreetly-interfaces": "^0.1.22", + "discreetly-interfaces": "^0.1.23", "dotenv": "^16.3.1", "express": "^4.18.2", "express-basic-auth": "^1.2.1", @@ -1905,9 +1905,9 @@ "integrity": "sha512-2QnlhYUPIGLl11XgxIxl6ZKIJZoS2T1ABIHbqjBbec0YYQ2qfWZ7JWH53OZm0mqeO8Dbjon5zK3YNoGiuYJ1Gg==" }, "node_modules/discreetly-interfaces": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/discreetly-interfaces/-/discreetly-interfaces-0.1.22.tgz", - "integrity": "sha512-p7HuKOE0Zan3Nf3Rg6auzsxNeKrtH4GMRoSMhsb+6YGO9AlF6ffnlHV4L4SSxLbJr2XInGEf0TUzsKkXwkQKoQ==", + "version": "0.1.23", + "resolved": "https://registry.npmjs.org/discreetly-interfaces/-/discreetly-interfaces-0.1.23.tgz", + "integrity": "sha512-C1mqzLZY52aW83XHUBr3lxe8F7HFagx4V+MzigxPf5GTjDGhelIbnmihhV3RUtWb1uddo1Gm1CImD+meygf1bg==", "dependencies": { "poseidon-lite": "^0.2.0", "rlnjs": "^3.1.4" diff --git a/package.json b/package.json index 9b2a0ca..ad1274c 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "body-parser": "^1.20.2", "cors": "^2.8.5", "discreetly-claimcodes": "^1.1.3", - "discreetly-interfaces": "^0.1.22", + "discreetly-interfaces": "^0.1.23", "dotenv": "^16.3.1", "express": "^4.18.2", "express-basic-auth": "^1.2.1", diff --git a/src/config/serverConfig.ts b/src/config/serverConfig.ts index 897e722..24acfbb 100644 --- a/src/config/serverConfig.ts +++ b/src/config/serverConfig.ts @@ -1,10 +1,7 @@ import type { ServerI } from 'discreetly-interfaces'; import 'dotenv/config'; -// TODO THIS SHOULD BE AN ENVIRONMENTAL VARIABLE STORED IN .env FILE -// IF THIS FILE DOESN'T EXIST, GENERATE A RANDOM ID AND STORE IT IN THE FILE let SERVER_ID: bigint; -let PORT: string; let NAME: string; try { @@ -14,12 +11,6 @@ try { } console.log('SERVERID:', SERVER_ID); -try { - PORT = process.env.SERVER_PORT ? process.env.SERVER_PORT : '8000'; -} catch (err) { - console.error('Error reading PORT from .env file!'); -} - try { NAME = process.env.SERVER_NAME ? process.env.SERVER_NAME : 'localhost'; } catch (err) { @@ -29,7 +20,5 @@ try { export const serverConfig: ServerI = { id: SERVER_ID, name: NAME, - serverInfoEndpoint: PORT, - messageHandlerSocket: PORT, - version: '0.0.1' + version: '0.0.2' }; diff --git a/src/server.ts b/src/server.ts index 26f3685..5d8e88a 100644 --- a/src/server.ts +++ b/src/server.ts @@ -38,9 +38,9 @@ const adminAuth = basicAuth({ }); function initAppListeners() { - const serverPort = serverConfig.serverInfoEndpoint; - const httpServer = http.createServer(app).listen(serverPort, () => { - pp(`Server is running at port ${serverPort}`); + const PORT = process.env.SERVER_PORT ? process.env.SERVER_PORT : '3001'; + const httpServer = http.createServer(app).listen(PORT, () => { + pp(`Server is running at port ${PORT}`); }); const io = new SocketIOServer(httpServer); From 0ac5d60d13f5b09ee23540fdf617f222b3065b09 Mon Sep 17 00:00:00 2001 From: AtHeartEngineer Date: Tue, 1 Aug 2023 19:17:30 -0400 Subject: [PATCH 07/11] fix typo --- src/server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server.ts b/src/server.ts index 5d8e88a..e959555 100644 --- a/src/server.ts +++ b/src/server.ts @@ -38,7 +38,7 @@ const adminAuth = basicAuth({ }); function initAppListeners() { - const PORT = process.env.SERVER_PORT ? process.env.SERVER_PORT : '3001'; + const PORT = process.env.PORT ? process.env.PORT : '3001'; const httpServer = http.createServer(app).listen(PORT, () => { pp(`Server is running at port ${PORT}`); }); From c04f35823f7bc2e05de4fb9a48dd4a89715a4f09 Mon Sep 17 00:00:00 2001 From: AtHeartEngineer Date: Tue, 1 Aug 2023 19:19:59 -0400 Subject: [PATCH 08/11] fix env PORT for production, PORT 3001 for dev --- src/server.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/server.ts b/src/server.ts index e959555..7f22d38 100644 --- a/src/server.ts +++ b/src/server.ts @@ -37,8 +37,7 @@ const adminAuth = basicAuth({ } }); -function initAppListeners() { - const PORT = process.env.PORT ? process.env.PORT : '3001'; +function initAppListeners(PORT) { const httpServer = http.createServer(app).listen(PORT, () => { pp(`Server is running at port ${PORT}`); }); @@ -53,8 +52,9 @@ function initAppListeners() { if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') { console.log('~~~~DEVELOPMENT MODE~~~~'); console.log(serverConfig); + const PORT = 3001; initEndpoints(app, adminAuth); - const io = initAppListeners(); + const io = initAppListeners(PORT); initWebsockets(io); listEndpoints(app); mock(io); @@ -62,6 +62,6 @@ if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') { console.log('Admin password: ' + admin_password); } else { initEndpoints(app, adminAuth); - const io = initAppListeners(); + const io = initAppListeners(process.env.PORT); initWebsockets(io); } From 9a50c2f766d3379698392f0a882c1ea6cbc6ac00 Mon Sep 17 00:00:00 2001 From: AtHeartEngineer Date: Tue, 1 Aug 2023 19:28:11 -0400 Subject: [PATCH 09/11] chore: duplicate code from merge issue --- src/data/db.ts | 41 +++++------------------------------------ 1 file changed, 5 insertions(+), 36 deletions(-) diff --git a/src/data/db.ts b/src/data/db.ts index 606e0f2..d9534ea 100644 --- a/src/data/db.ts +++ b/src/data/db.ts @@ -67,14 +67,14 @@ export function getRoomsByIdentity(identity: string): RoomI[] { export function findClaimCode(code: string): Promise { return prisma.claimCodes.findUnique({ - where: { claimcode: code }, + where: { claimcode: code } }); } export function updateClaimCode(code: string): Promise { return prisma.claimCodes.update({ where: { claimcode: code }, - data: { claimed: true }, + data: { claimed: true } }); } @@ -84,14 +84,14 @@ export function updateRoomIdentities(idc: string, roomIds: string[]): Promise { return prisma.rooms.findMany({ - where: { id: { in: roomIds } }, + where: { id: { in: roomIds } } }); } @@ -163,34 +163,3 @@ export function createRoom( .catch((err) => console.error(err)); return false; } - - -export function findClaimCode(code: string): Promise { - return prisma.claimCodes.findUnique({ - where: { claimcode: code } - }); -} - -export function updateClaimCode(code: string): Promise { - return prisma.claimCodes.update({ - where: { claimcode: code }, - data: { claimed: true } - }); -} - -export function updateRoomIdentities(idc: string, roomIds: string[]): Promise { - return prisma.rooms.updateMany({ - where: { id: { in: roomIds } }, - data: { - identities: { - push: idc - } - } - }); -} - -export function findUpdatedRooms(roomIds: string[]): Promise { - return prisma.rooms.findMany({ - where: { id: { in: roomIds } } - }); -} From b31504e6911842ef2660896c7a417ada9995c207 Mon Sep 17 00:00:00 2001 From: AtHeartEngineer Date: Tue, 1 Aug 2023 20:36:40 -0400 Subject: [PATCH 10/11] comment: added link to idcNullifierCircuit in Todo --- src/data/db.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/data/db.ts b/src/data/db.ts index d9534ea..577ac97 100644 --- a/src/data/db.ts +++ b/src/data/db.ts @@ -47,6 +47,8 @@ export function getRoomsByIdentity(identity: string): RoomI[] { /* TODO Need to create a system here where the client needs to provide a proof they know the secrets to some Identity Commitment with a unix epoch time stamp to prevent replay attacks + + https://github.com/Discreetly/IdentityCommitmentNullifierCircuit <- Circuit and JS to do this */ prisma.rooms .findMany({ From f8c10b399306c701e06e77546caa353d1dec78f2 Mon Sep 17 00:00:00 2001 From: AtHeartEngineer Date: Tue, 1 Aug 2023 20:59:04 -0400 Subject: [PATCH 11/11] fix: /api/rooms/idc wasn't returning roomIds --- src/data/db.ts | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/data/db.ts b/src/data/db.ts index 577ac97..1221436 100644 --- a/src/data/db.ts +++ b/src/data/db.ts @@ -43,28 +43,31 @@ export function getRoomByID(id: string): Promise { }); } -export function getRoomsByIdentity(identity: string): RoomI[] { +export async function getRoomsByIdentity(identity: string): Promise { /* TODO Need to create a system here where the client needs to provide a proof they know the secrets to some Identity Commitment with a unix epoch time stamp to prevent replay attacks https://github.com/Discreetly/IdentityCommitmentNullifierCircuit <- Circuit and JS to do this */ - prisma.rooms - .findMany({ + const r: string[] = []; + try { + const rooms = await prisma.rooms.findMany({ where: { identities: { has: identity } } - }) - .then((rooms) => { - return rooms.map((room) => { - room.roomId; - }); - }) - .catch((err) => console.error(err)); - return []; + }); + rooms.forEach((room) => { + r.push(room.roomId); + }); + console.log(r); + return r; + } catch (err) { + console.error(err); + return []; + } } export function findClaimCode(code: string): Promise {