evOo-local/packages/db/src/credential-secrets.ts
cynarAI 6c7eed7580 Initial clean evOo-local from f00577b
Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline
(Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/*
packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
2026-09-20 17:15:16 +02:00

34 lines
966 B
TypeScript

import type { PrismaClient } from "./client.js";
type CredentialSecretClient = Pick<
PrismaClient,
"secret" | "userModelCredential" | "userVoiceCredential"
>;
export async function deleteUnreferencedCredentialSecret(
prisma: CredentialSecretClient,
input: {
credentialKind: "model" | "voice";
credentialId: string;
secretId: string;
},
): Promise<void> {
const [modelReferences, voiceReferences] = await Promise.all([
prisma.userModelCredential.count({
where: {
secretId: input.secretId,
...(input.credentialKind === "model" ? { id: { not: input.credentialId } } : {}),
},
}),
prisma.userVoiceCredential.count({
where: {
secretId: input.secretId,
...(input.credentialKind === "voice" ? { id: { not: input.credentialId } } : {}),
},
}),
]);
if (modelReferences + voiceReferences === 0) {
await prisma.secret.deleteMany({ where: { id: input.secretId } });
}
}