cleanup old code
This commit is contained in:
parent
aeefd6f5d3
commit
2f45005a8a
@ -1,14 +0,0 @@
|
|||||||
export interface DoorConfig {
|
|
||||||
buzzer: string;
|
|
||||||
buzzerCode: string;
|
|
||||||
discordUsers: string[];
|
|
||||||
fallbackNumbers: string[];
|
|
||||||
pin: string;
|
|
||||||
pressKey: string;
|
|
||||||
timeout: number;
|
|
||||||
greeting: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface EditDoorConfig extends DoorConfig {
|
|
||||||
approvalId: string;
|
|
||||||
}
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
export interface Lock {
|
|
||||||
fingerprint: any;
|
|
||||||
}
|
|
||||||
@ -1,22 +1,9 @@
|
|||||||
import { randomUUID } from "crypto";
|
|
||||||
import { DynamoDBClient, GetItemCommand, DeleteItemCommand, PutItemCommand, UpdateItemCommand, GetItemOutput } from "@aws-sdk/client-dynamodb";
|
|
||||||
import { TwilioContext } from "../types/TwilioContext";
|
import { TwilioContext } from "../types/TwilioContext";
|
||||||
import { DoorConfig } from "../types/DoorConfig";
|
|
||||||
import { DynaBridge } from "dynabridge";
|
import { DynaBridge } from "dynabridge";
|
||||||
import { DoorConfigEntity, EditDoorConfigEntity } from "../schema/DoorConfig";
|
import { DoorConfigEntity, EditDoorConfigEntity } from "../schema/DoorConfig";
|
||||||
import { DoorAliasEntity } from "../schema/DoorAlias";
|
import { DoorAliasEntity } from "../schema/DoorAlias";
|
||||||
import { LockStatusEntity } from "../schema/LockStatus";
|
import { LockStatusEntity } from "../schema/LockStatus";
|
||||||
|
|
||||||
export const createDDBClient = (context: TwilioContext) => {
|
|
||||||
return new DynamoDBClient({
|
|
||||||
region: "us-east-1" ,
|
|
||||||
credentials: {
|
|
||||||
accessKeyId: context.AWS_ACCESS_KEY,
|
|
||||||
secretAccessKey: context.AWS_SECRET_ACCESS_KEY,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const createDynaBridgeClient = (context: TwilioContext) => {
|
export const createDynaBridgeClient = (context: TwilioContext) => {
|
||||||
// register all entities here
|
// register all entities here
|
||||||
return new DynaBridge({
|
return new DynaBridge({
|
||||||
@ -46,170 +33,3 @@ export const createDynaBridgeClient = (context: TwilioContext) => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getLockStatusCommand = (door: string) => {
|
|
||||||
return new GetItemCommand({
|
|
||||||
TableName: "doorman",
|
|
||||||
Key: {
|
|
||||||
"PK": {
|
|
||||||
S: door,
|
|
||||||
},
|
|
||||||
"SK": {
|
|
||||||
S: "lock",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getDoorAliasCommand = (buzzerNumber: string) => {
|
|
||||||
return new GetItemCommand({
|
|
||||||
TableName: "doorman",
|
|
||||||
Key: {
|
|
||||||
"PK": {
|
|
||||||
S: buzzerNumber,
|
|
||||||
},
|
|
||||||
"SK": {
|
|
||||||
S: "alias",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getDoorConfigCommand = (door: string) => {
|
|
||||||
return new GetItemCommand({
|
|
||||||
TableName: "doorman",
|
|
||||||
Key: {
|
|
||||||
"PK": {
|
|
||||||
S: `door-${door}`,
|
|
||||||
},
|
|
||||||
"SK": {
|
|
||||||
S: "config",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const isLockOpen = (lock: GetItemOutput) => {
|
|
||||||
// ttl is a UTC ms time for how long it is unlocked
|
|
||||||
const ttl = lock.Item?.TTL?.N || 0;
|
|
||||||
|
|
||||||
return parseInt("" + ttl) > Date.now();
|
|
||||||
};
|
|
||||||
|
|
||||||
export const clearLockStatusCommand = (lock: GetItemOutput) => {
|
|
||||||
return new DeleteItemCommand({
|
|
||||||
TableName: "doorman",
|
|
||||||
Key: {
|
|
||||||
"PK": {
|
|
||||||
S: lock?.Item?.PK.S as string,
|
|
||||||
},
|
|
||||||
"SK": {
|
|
||||||
S: "lock",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const setLockStatusCommand = (door: string, timeoutSeconds: number, fingerprintObj: any) => {
|
|
||||||
return new PutItemCommand({
|
|
||||||
TableName: "doorman",
|
|
||||||
Item: {
|
|
||||||
"PK": {
|
|
||||||
S: door,
|
|
||||||
},
|
|
||||||
"SK": {
|
|
||||||
S: "lock",
|
|
||||||
},
|
|
||||||
"TTL": {
|
|
||||||
N: `${Date.now() + timeoutSeconds * 1000}`,
|
|
||||||
},
|
|
||||||
"fingerprint": {
|
|
||||||
S: JSON.stringify(fingerprintObj),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const putDoorUpdateConfigCommand = (door: string, config: DoorConfig) => {
|
|
||||||
return new PutItemCommand({
|
|
||||||
TableName: "doorman",
|
|
||||||
Item: {
|
|
||||||
"PK": {
|
|
||||||
S: "door-" + door,
|
|
||||||
},
|
|
||||||
"SK": {
|
|
||||||
S: "config-update",
|
|
||||||
},
|
|
||||||
"buzzer": {
|
|
||||||
S: config.buzzer,
|
|
||||||
},
|
|
||||||
"buzzerCode": {
|
|
||||||
S: config.buzzerCode,
|
|
||||||
},
|
|
||||||
"discordUsers": {
|
|
||||||
SS: config.discordUsers,
|
|
||||||
},
|
|
||||||
"fallbackNumbers": {
|
|
||||||
SS: config.fallbackNumbers,
|
|
||||||
},
|
|
||||||
"pin": {
|
|
||||||
S: config.pin,
|
|
||||||
},
|
|
||||||
"pressKey": {
|
|
||||||
S: config.pressKey,
|
|
||||||
},
|
|
||||||
"timeout": {
|
|
||||||
N: `${config.timeout}`,
|
|
||||||
},
|
|
||||||
"greeting": {
|
|
||||||
S: config.greeting,
|
|
||||||
},
|
|
||||||
"approvalId": {
|
|
||||||
S: randomUUID().toString(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export function ddbItemToJSON<T extends Record<string, any>>(ddbItem: GetItemOutput): T {
|
|
||||||
let obj: any = {};
|
|
||||||
|
|
||||||
if (!ddbItem.Item) {
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
const Item = ddbItem.Item;
|
|
||||||
|
|
||||||
Object.keys(Item).forEach(key => {
|
|
||||||
obj[key] = Object.values(Item[key])[0];
|
|
||||||
});
|
|
||||||
return obj;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getDoorConfigUpdateCommand = (door: string) => {
|
|
||||||
return new GetItemCommand({
|
|
||||||
TableName: "doorman",
|
|
||||||
Key: {
|
|
||||||
"PK": {
|
|
||||||
S: `door-${door}`,
|
|
||||||
},
|
|
||||||
"SK": {
|
|
||||||
S: "config-update",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const replaceDoorConfigWithUpdateItem = (newConfigItem: GetItemOutput & { Item: { approvalId?: { S: string } }}) => {
|
|
||||||
const newItem = {
|
|
||||||
...newConfigItem.Item,
|
|
||||||
SK: { S: "config" },
|
|
||||||
};
|
|
||||||
|
|
||||||
delete newItem.approvalId;
|
|
||||||
|
|
||||||
return new PutItemCommand({
|
|
||||||
TableName: "doorman",
|
|
||||||
Item: newItem,
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user