mission-control/app/page.tsx
2026-01-28 20:11:44 +01:00

36 lines
1.1 KiB
TypeScript

import MissionControl from '@/components/MissionControl';
import db from '@/lib/db';
export default function Home() {
// SQLite handles the 'now' comparison perfectly
const issRow = db.prepare(`
SELECT pass_time, end_time
FROM iss_passes
WHERE datetime(end_time) > datetime('now')
ORDER BY datetime(pass_time) ASC LIMIT 1
`).get() as { pass_time: string, end_time: string } | undefined;
// 2. Fetch Moon
const moonRow = db.prepare(`
SELECT title, event_time
FROM global_events
WHERE id = 'moon_phase'
`).get() as { title: string, event_time: string } | undefined;
// Prepare Dates
const issStart = issRow ? new Date(issRow.pass_time) : null;
const issEnd = issRow ? new Date(issRow.end_time) : null;
const moonStart = moonRow ? new Date(moonRow.event_time) : null;
// Moon "Event" lasts 24 hours
const moonEnd = moonStart ? new Date(moonStart.getTime() + 86400000) : null;
return (
<main>
<MissionControl
iss={{ start: issStart, end: issEnd }}
moon={{ title: moonRow?.title || "Moon Phase", start: moonStart, end: moonEnd }}
/>
</main>
);
}