happy-server/sources/storage/repeatKey.ts
2025-07-12 17:57:05 -07:00

32 lines
1.1 KiB
TypeScript

import { Tx } from "@/storage/inTx";
export async function fetchRepeatKey(tx: Tx, key: string) {
let session = await tx.repeatKey.findUnique({ where: { key, expiresAt: { gte: new Date() } } });
if (session) {
return session.value;
} else {
return null;
}
}
export async function saveRepeatKey(tx: Tx, key: string, value: string, timeout: number = Date.now() + (1000 * 60 * 60 * 24) /* 1 day */) {
await tx.repeatKey.upsert({
where: { key },
create: { key, value, expiresAt: new Date(timeout) },
update: { key, value, expiresAt: new Date(timeout) }
});
}
export async function repeatKey(tx: Tx, key: string, value: string, timeout: number = Date.now() + (1000 * 60 * 60 * 24) /* 1 day */): Promise<boolean> {
let session = await tx.repeatKey.findUnique({ where: { key, expiresAt: { lte: new Date() } } });
if (session) {
return false;
}
await tx.repeatKey.upsert({
where: { key },
create: { key, value, expiresAt: new Date(timeout) },
update: { key, value, expiresAt: new Date(timeout) }
});
return true;
}