🪻 distributed transcription service thistle.dunkirk.sh

feat: fix transcript saving tests

dunkirk.sh 59f82f0d 94b32b21

verified
+4
src/lib/transcript-storage.test.ts
···
import {
getTranscriptVTT,
saveTranscriptVTT,
+
hasTranscript,
+
saveTranscript,
+
getTranscript,
+
deleteTranscript,
} from "./transcript-storage";
test("transcript storage", async () => {
+43
src/lib/transcript-storage.ts
···
return null;
}
}
+
+
/**
+
* Compatibility wrappers using VTT as the canonical format
+
*/
+
export async function hasTranscript(transcriptionId: string): Promise<boolean> {
+
const safeId = validateTranscriptionId(transcriptionId);
+
const filePath = `${TRANSCRIPTS_DIR}/${safeId}.vtt`;
+
try {
+
// Try reading the file; if it exists return true
+
await Bun.file(filePath).text();
+
return true;
+
} catch {
+
return false;
+
}
+
}
+
+
export async function saveTranscript(
+
transcriptionId: string,
+
content: string,
+
): Promise<void> {
+
// Store transcripts as VTT files to keep a single canonical format
+
return saveTranscriptVTT(transcriptionId, content);
+
}
+
+
export async function getTranscript(
+
transcriptionId: string,
+
): Promise<string | null> {
+
// Read VTT content as the transcript text
+
return getTranscriptVTT(transcriptionId);
+
}
+
+
export async function deleteTranscript(transcriptionId: string): Promise<void> {
+
const safeId = validateTranscriptionId(transcriptionId);
+
const filePath = `${TRANSCRIPTS_DIR}/${safeId}.vtt`;
+
try {
+
const fs = await import("node:fs");
+
if (fs.existsSync(filePath)) {
+
fs.unlinkSync(filePath);
+
}
+
} catch {
+
// Ignore errors
+
}
+
}