mirror of
https://github.com/cjdenio/trax-accidents.git
synced 2026-08-05 02:46:34 +00:00
46 lines
1.5 KiB
JavaScript
46 lines
1.5 KiB
JavaScript
import Handlebars from "handlebars";
|
|
import { Database } from "bun:sqlite";
|
|
import { differenceInDays, startOfToday, startOfDay } from "date-fns";
|
|
import { tz } from "@date-fns/tz";
|
|
|
|
const db = new Database("database.db");
|
|
|
|
await Bun.cron("./scripts/sync-rss.js", "*/5 * * * *", "rss-sync");
|
|
|
|
Bun.serve({
|
|
routes: {
|
|
"/": async () => {
|
|
const homeTemplate = Handlebars.compile(
|
|
await Bun.file(
|
|
import.meta.dir + "/templates/home.handlebars",
|
|
).text(),
|
|
);
|
|
|
|
const latestCollision = await db
|
|
.query(
|
|
"SELECT * FROM service_alerts WHERE is_collision ORDER BY date DESC LIMIT 1;",
|
|
)
|
|
.get();
|
|
|
|
return new Response(
|
|
homeTemplate({
|
|
daysSince: differenceInDays(
|
|
startOfToday({ in: tz("America/Denver") }),
|
|
startOfDay(new Date(latestCollision.date), { in: tz("America/Denver") }),
|
|
),
|
|
latestCollision: {
|
|
...latestCollision,
|
|
formattedDate: new Date(
|
|
latestCollision.date,
|
|
).toLocaleDateString("en-US", { dateStyle: "medium" }),
|
|
},
|
|
}),
|
|
{
|
|
headers: { "Content-Type": "text/html" },
|
|
},
|
|
);
|
|
},
|
|
"/uta-logo.svg": Bun.file(import.meta.dir + "/public/uta-logo.svg"),
|
|
},
|
|
});
|