From 154ca3aec093210a44ae4a685699b99c547d3372 Mon Sep 17 00:00:00 2001 From: Martin Dimitrov Date: Sat, 31 May 2025 15:09:39 -0700 Subject: [PATCH] migrate edit route --- bun.lockb | Bin 469032 -> 429456 bytes .../src/functions/api/door/edit.ts | 31 +++++++++--------- packages/doorman-api/src/schema/DoorConfig.ts | 23 +++++++++++++ packages/doorman-client/package.json | 4 +-- 4 files changed, 40 insertions(+), 18 deletions(-) diff --git a/bun.lockb b/bun.lockb index f34e01cae55859848ef6d126282f8a1d06c293c5..6b99f57a067089bdb649689a2e98a33a3c69731d 100755 GIT binary patch delta 49444 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 delta 72586 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 diff --git a/packages/doorman-api/src/functions/api/door/edit.ts b/packages/doorman-api/src/functions/api/door/edit.ts index c261dce..2ae73b2 100644 --- a/packages/doorman-api/src/functions/api/door/edit.ts +++ b/packages/doorman-api/src/functions/api/door/edit.ts @@ -6,9 +6,9 @@ import { ServerlessEventObject, ServerlessFunctionSignature } from "@twilio-labs/serverless-runtime-types/types"; import { TwilioContext } from "../../../types/TwilioContext"; import { shouldBlockRequest, UserAgentHeader } from "../../../utils/blockUserAgent"; -import { createDDBClient, ddbItemToJSON, getDoorConfigCommand, getDoorConfigUpdateCommand, putDoorUpdateConfigCommand, replaceDoorConfigWithUpdateItem } from "../../../utils/ddb"; -import { DoorConfig, EditDoorConfig } from "../../../types/DoorConfig"; +import { createDynaBridgeClient } from "../../../utils/ddb"; import { sendMessageToUser } from "../../../utils/discord"; +import { createEditDoorConfig, EditDoorConfigReq, editDoorToDoorConfig, getDoorConfigID, getEditDoorConfigID } from "../../../schema/DoorConfig"; export interface EditRequest extends ServerlessEventObject<{}, UserAgentHeader> { door?: string; @@ -28,19 +28,18 @@ export const handler: ServerlessFunctionSignature = let approvalId = event.approvalId; let newConfigString = event.newConfig; - const client = createDDBClient(context); + const db = createDynaBridgeClient(context); // approve path if (door && approvalId) { - const newConfigDdb = await client.send(getDoorConfigUpdateCommand(door)); - const newConfig = ddbItemToJSON(newConfigDdb); + const newConfig = await db.entities.editDoorConfig.findById(getEditDoorConfigID(door)); if (!newConfig || newConfig.approvalId !== approvalId) { response.setStatusCode(400); return callback(null, response); } - await client.send(replaceDoorConfigWithUpdateItem(newConfigDdb as any)); + db.entities.doorConfig.save(editDoorToDoorConfig(newConfig)); // send update to discord users const updateMessage = `Configuration change \`${approvalId}\` was approved @ Door "${door}"`; @@ -64,10 +63,8 @@ export const handler: ServerlessFunctionSignature = return callback(null, response); } - const newConfig: EditDoorConfig = JSON.parse(newConfigString); - - const configDdb = await client.send(getDoorConfigCommand(door)); - const config = ddbItemToJSON(configDdb); + const newConfig: EditDoorConfigReq = JSON.parse(newConfigString); + const config = await db.entities.doorConfig.findById(getDoorConfigID(door)); if (!config) { response.setStatusCode(404); @@ -79,15 +76,14 @@ export const handler: ServerlessFunctionSignature = newConfig.pin = config.pin; } - const input = putDoorUpdateConfigCommand(door, newConfig); - - const update = await client.send(input); + const editDoorConfig = createEditDoorConfig(door, newConfig); + await db.entities.editDoorConfig.save(editDoorConfig); // newConfig.discordUsers = undefined; // newConfig.fallbackNumbers = undefined; // newConfig.status = undefined; - const approvalUrl = `https://doorman.chromart.cc/api/door/edit?door=${door}&approvalId=${input?.input?.Item?.approvalId.S as string}`; + const approvalUrl = `https://doorman.chromart.cc/api/door/edit?door=${door}&approvalId=${editDoorConfig.approvalId as string}`; console.log(approvalUrl); // send update to discord users @@ -106,8 +102,11 @@ export const handler: ServerlessFunctionSignature = response .setStatusCode(200) .appendHeader('Content-Type', 'application/json') - .setBody({ msg: update }); + .setBody({ msg: "Created Configuration change" }); + + // destroy the internal client after + // @ts-ignore + db.ddbClient.destroy(); - await client.destroy(); return callback(null, response); }; diff --git a/packages/doorman-api/src/schema/DoorConfig.ts b/packages/doorman-api/src/schema/DoorConfig.ts index 277b907..3a696d7 100644 --- a/packages/doorman-api/src/schema/DoorConfig.ts +++ b/packages/doorman-api/src/schema/DoorConfig.ts @@ -1,5 +1,6 @@ import { z } from "zod"; import { DynaBridgeEntity } from 'dynabridge'; +import { randomUUID } from "crypto"; export const DOOR_CONFIG_SK = "config"; export const EDIT_DOOR_CONFIG_SK = "config-update"; @@ -36,6 +37,8 @@ export const getEditDoorConfigID = (doorName: string): string[] => { export type DoorConfig = z.infer; export type EditDoorConfig = z.infer; +export type EditDoorConfigReq = Omit; + export const DoorConfigEntity: DynaBridgeEntity = { tableName: "doorman", id: ["PK", "SK"], @@ -45,3 +48,23 @@ export const EditDoorConfigEntity: DynaBridgeEntity = { tableName: "doorman", id: ["PK", "SK"], }; + +export const editDoorToDoorConfig = (updateDoor: EditDoorConfig): DoorConfig => { + const newItem: any = { + ...updateDoor, + SK: DOOR_CONFIG_SK, + }; + + delete newItem.approvalId; + + return newItem; +} + +export const createEditDoorConfig = (door: string, newConfig: EditDoorConfigReq): EditDoorConfig => { + return { + ...newConfig, + PK: "door-" + door, + SK: EDIT_DOOR_CONFIG_SK, + approvalId: randomUUID().toString(), + }; +} diff --git a/packages/doorman-client/package.json b/packages/doorman-client/package.json index 12d0204..78e90e6 100644 --- a/packages/doorman-client/package.json +++ b/packages/doorman-client/package.json @@ -15,7 +15,7 @@ "@twilio/runtime-handler": "1.3.0", "node-fetch": "^2.7.0", "prom-client": "^15.1.3", - "prometheus-remote-write": "^0.5.0", + "prometheus-remote-write": "^0.5.1", "promise.timeout": "^1.2.0", "twilio": "^3.84.1", "winston": "^3.17.0", @@ -23,7 +23,7 @@ }, "devDependencies": { "@types/bun": "latest", - "concurrently": "^9.1.0", + "concurrently": "^9.1.2", "twilio-run": "^3.5.4" }, "engines": {