migrate door alias
This commit is contained in:
parent
73e98c0508
commit
9f1a05acf8
@ -6,8 +6,8 @@ import { ServerlessEventObject, ServerlessFunctionSignature } from "@twilio-labs
|
||||
import { TwilioContext } from "../../../types/TwilioContext";
|
||||
import { createDDBClient, createDynaBridgeClient, ddbItemToJSON, getDoorAliasCommand, getDoorConfigCommand, getLockStatusCommand, isLockOpen } from "../../../utils/ddb";
|
||||
import { DoorStatus } from "../../../types/DoorStatus";
|
||||
import { DoorConfig } from "../../../types/DoorConfig";
|
||||
import { DOOR_CONFIG_SK, getDoorConfigID } from "../../../schema/DoorConfig";
|
||||
import { getDoorConfigID } from "../../../schema/DoorConfig";
|
||||
import { getDoorAliasID } from "../../../schema/DoorAlias";
|
||||
|
||||
export interface InfoRequest extends ServerlessEventObject {
|
||||
door?: string;
|
||||
@ -42,16 +42,16 @@ export const handler: ServerlessFunctionSignature<TwilioContext, InfoRequest> =
|
||||
const db = createDynaBridgeClient(context);
|
||||
|
||||
if (buzzer) {
|
||||
door = await client.send(getDoorAliasCommand(buzzer))
|
||||
door = await db.entities.doorAlias.findById(getDoorAliasID(buzzer))
|
||||
.then(async (alias) => {
|
||||
if (!alias.Item) {
|
||||
if (!alias) {
|
||||
response
|
||||
.setStatusCode(404)
|
||||
.appendHeader('Content-Type', 'application/json')
|
||||
.setBody({ err: "This buzzer is not registered" });
|
||||
return undefined;
|
||||
}
|
||||
return alias.Item.name.S;
|
||||
return alias.name;
|
||||
});
|
||||
}
|
||||
|
||||
@ -74,7 +74,7 @@ export const handler: ServerlessFunctionSignature<TwilioContext, InfoRequest> =
|
||||
door,
|
||||
fallbackNumbers: config.fallbackNumbers,
|
||||
pressKey: config.pressKey,
|
||||
discordUsers: config.discordUsers || [],
|
||||
discordUsers: config.discordUsers,
|
||||
});
|
||||
} else {
|
||||
await client.send(getLockStatusCommand(door))
|
||||
@ -93,7 +93,7 @@ export const handler: ServerlessFunctionSignature<TwilioContext, InfoRequest> =
|
||||
buzzerCode: config.buzzerCode,
|
||||
fallbackNumbers: config.fallbackNumbers,
|
||||
pressKey: config.pressKey,
|
||||
discordUsers: config.discordUsers || [],
|
||||
discordUsers: config.discordUsers,
|
||||
greeting: config.greeting || "",
|
||||
});
|
||||
|
||||
|
||||
22
packages/doorman-api/src/schema/DoorAlias.ts
Normal file
22
packages/doorman-api/src/schema/DoorAlias.ts
Normal file
@ -0,0 +1,22 @@
|
||||
import { z } from "zod";
|
||||
import { DynaBridge, DynaBridgeEntity } from 'dynabridge';
|
||||
|
||||
export const DOOR_ALIAS_SK = "alias";
|
||||
|
||||
export const DoorAliasSchema = z.object({
|
||||
// keys
|
||||
PK: z.string(), // phone number (buzzer number)
|
||||
SK: z.literal(DOOR_ALIAS_SK).default(DOOR_ALIAS_SK),
|
||||
name: z.string(),
|
||||
});
|
||||
|
||||
export const getDoorAliasID = (buzzer: string): string[] => {
|
||||
return [buzzer, DOOR_ALIAS_SK];
|
||||
}
|
||||
|
||||
export type DoorAlias = z.infer<typeof DoorAliasSchema>;
|
||||
|
||||
export const DoorAliasEntity: DynaBridgeEntity<DoorAlias> = {
|
||||
tableName: "doorman",
|
||||
id: ["PK", "SK"],
|
||||
};
|
||||
@ -15,7 +15,7 @@ export const DoorConfigSchema = z.object({
|
||||
fallbackNumbers: z.array(z.string()),
|
||||
pin: z.string(),
|
||||
pressKey: z.string(),
|
||||
greeting: z.string(),
|
||||
greeting: z.string().optional(),
|
||||
timeout: z.number(),
|
||||
});
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@ import { TwilioContext } from "../types/TwilioContext";
|
||||
import { DoorConfig } from "../types/DoorConfig";
|
||||
import { DynaBridge } from "dynabridge";
|
||||
import { DoorConfigEntity, EditDoorConfigEntity } from "../schema/DoorConfig";
|
||||
import { DoorAliasEntity } from "../schema/DoorAlias";
|
||||
|
||||
export const createDDBClient = (context: TwilioContext) => {
|
||||
return new DynamoDBClient({
|
||||
@ -20,6 +21,7 @@ export const createDynaBridgeClient = (context: TwilioContext) => {
|
||||
return new DynaBridge({
|
||||
doorConfig: DoorConfigEntity,
|
||||
editDoorConfig: EditDoorConfigEntity,
|
||||
doorAlias: DoorAliasEntity,
|
||||
}, {
|
||||
serialize: (entity) => entity,
|
||||
deserialize: (entity) => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user