import { and, desc, eq, sql } from 'drizzle-orm'; import { getMediaStatus } from '../src/actions/media'; import { db } from '../src/db'; import { media } from '../src/db/schema/media'; async function runTest() { console.log('Testing media status lookup...'); const [latestCompletedMedia] = await db .select() .from(media) .where(and(eq(media.status, 'completed'), sql`${media.metadata}->>'hlsPath' is not null`)) .orderBy(desc(media.updatedAt)) .limit(1); if (!latestCompletedMedia) { console.error('No completed media with HLS output found. Run npm run test:media-pipeline first.'); process.exit(1); } const status = await getMediaStatus(latestCompletedMedia.id); if (!status) { console.error('getMediaStatus returned null.'); process.exit(1); } console.log('Media ID:', status.id); console.log('Status:', status.status); console.log('HLS Path:', status.hlsPath); console.log('HLS URL generated:', Boolean(status.hlsUrl)); if (status.status !== 'completed' || !status.hlsPath || !status.hlsUrl) { console.error('Media status response is missing completed playback data.'); process.exit(1); } console.log('Media status lookup passed.'); process.exit(0); } runTest().catch((error) => { console.error('Test failed with error:', error); process.exit(1); });