Martin Dimitrov 594d0ec8cd
Some checks failed
Build and push image for doorman-homeassistant / docker (push) Successful in 56s
Build and push image for doorman-homeassistant / deploy-gitainer (push) Successful in 5s
Build and push Doorman UI / API / docker (push) Failing after 2m21s
change TTL to seconds in ddb
2025-10-11 14:39:50 -07:00

39 lines
1003 B
TypeScript

import { z } from "zod";
import { DynaBridgeEntity } from 'dynabridge';
import { getFutureTTLInSeconds, isTTLInFuture } from "../common/TTLHelper";
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<typeof LockStatusSchema>;
export const LockStatusEntity: DynaBridgeEntity<LockStatus> = {
tableName: "doorman",
id: ["PK", "SK"],
};
export const isLockOpen = (lock?: LockStatus) => {
return isTTLInFuture(lock);
};
export const createLockStatusWithTimeout = (door: string, timeoutSeconds: number, fingerprint: any): LockStatus => {
return {
PK: door,
SK: LOCK_STATUS_SK,
TTL: getFutureTTLInSeconds(timeoutSeconds),
fingerprint: JSON.stringify(fingerprint),
};
};