mirror of
https://github.com/stack-auth/stack.git
synced 2026-07-20 21:29:36 +08:00
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { BooleanTrue } from "@/generated/prisma/client";
|
|
import { globalPrismaClient } from "@/prisma-client";
|
|
|
|
export type ExternalDbSyncFusebox = {
|
|
sequencerEnabled: boolean,
|
|
pollerEnabled: boolean,
|
|
};
|
|
|
|
const fuseboxSelect = {
|
|
sequencerEnabled: true,
|
|
pollerEnabled: true,
|
|
};
|
|
|
|
// Default values match the Prisma schema defaults
|
|
const defaultFusebox: ExternalDbSyncFusebox = {
|
|
sequencerEnabled: true,
|
|
pollerEnabled: true,
|
|
};
|
|
|
|
export async function getExternalDbSyncFusebox(): Promise<ExternalDbSyncFusebox> {
|
|
const result = await globalPrismaClient.externalDbSyncMetadata.findFirst({
|
|
where: { singleton: BooleanTrue.TRUE },
|
|
select: fuseboxSelect,
|
|
});
|
|
// Return defaults if row doesn't exist yet (row is created on first update)
|
|
return result ?? defaultFusebox;
|
|
}
|
|
|
|
export async function updateExternalDbSyncFusebox(
|
|
updates: ExternalDbSyncFusebox,
|
|
): Promise<ExternalDbSyncFusebox> {
|
|
// Upsert is fine here - updates are infrequent and typically manual/admin actions
|
|
return await globalPrismaClient.externalDbSyncMetadata.upsert({
|
|
where: { singleton: BooleanTrue.TRUE },
|
|
create: { singleton: BooleanTrue.TRUE, ...updates },
|
|
update: updates,
|
|
select: fuseboxSelect,
|
|
});
|
|
}
|