import { z } from "zod"; import { DynaBridgeEntity } from 'dynabridge'; export const LOCK_STATUS_SK = "lock"; export const LockStatusSchema = z.object({ // keys PK: z.string(), // door name SK: z.literal(LOCK_STATUS_SK).default(LOCK_STATUS_SK), TTL: z.number(), fingerprint: z.string(), }); export const getLockStatusID = (door: string): string[] => { return [door, LOCK_STATUS_SK]; } export type LockStatus = z.infer; export const LockStatusEntity: DynaBridgeEntity = { tableName: "doorman", id: ["PK", "SK"], }; export const isLockOpen = (lock?: LockStatus) => { // ttl is a UTC ms time for how long it is unlocked const ttl = lock?.TTL || 0; return parseInt("" + ttl) > Date.now(); }; export const createLockStatusWithTimeout = (door: string, timeoutSeconds: number, fingerprint: any): LockStatus => { return { PK: door, SK: LOCK_STATUS_SK, TTL: Date.now() + timeoutSeconds * 1000, fingerprint: JSON.stringify(fingerprint), }; };