Compare commits

..

No commits in common. "4604463a8e032c2f045391647a0b53be8fc6171d" and "b376af96ea044d03d27c64107cbcdd97dbf37a7b" have entirely different histories.

2 changed files with 9 additions and 20 deletions

View file

@ -19,16 +19,11 @@ export async function refetchAllData() {
const lines = await getLines(); const lines = await getLines();
await saveLines(lines); await saveLines(lines);
const allEvents = [];
for (const line of lines) { for (const line of lines) {
const lineId = line.id; const lineId = line.id;
const schedule = await getScheduleForLine(lineId); const schedule = await getScheduleForLine(lineId);
const dayEvents = schedule.flatMap((day) => day.events); const allEvents = schedule.flatMap((day) => day.events);
allEvents.push(...dayEvents); await updateLineEvents(lineId, allEvents);
}
await updateLineEvents(allEvents);
if (allEvents.length === 0) {
redirect("/?message=No events found to refetch.");
} }
revalidatePath("/", "layout"); revalidatePath("/", "layout");
redirect("/?message=All data has been successfully refetched and saved."); redirect("/?message=All data has been successfully refetched and saved.");

View file

@ -1,6 +1,6 @@
import type { Event, Line } from "@/common/parser"; import type { Event, Line } from "@/common/parser";
import "dotenv/config"; import "dotenv/config";
import { and, eq, gte, ilike, inArray, lte, or, sql } from "drizzle-orm"; import { and, eq, gte, inArray, like, lte, or } from "drizzle-orm";
import { getDbInstance } from "./getInstance"; import { getDbInstance } from "./getInstance";
import { eventsTable, linesTable } from "./schema"; import { eventsTable, linesTable } from "./schema";
@ -19,18 +19,12 @@ export async function saveLines(lines: Line[]) {
description: line.description, description: line.description,
})), })),
) )
.onConflictDoUpdate({ .onConflictDoNothing();
target: linesTable.id,
set: {
name: sql.raw(`excluded.${linesTable.name.name}`),
description: sql.raw(`excluded.${linesTable.description.name}`),
},
});
} }
export async function updateLineEvents(events: Event[]) { export async function updateLineEvents(lineId: number, events: Event[]) {
await db.transaction(async (tx) => { await db.transaction(async (tx) => {
await tx.delete(eventsTable); await tx.delete(eventsTable).where(eq(eventsTable.lineId, lineId));
await tx.insert(eventsTable).values(events); await tx.insert(eventsTable).values(events);
}); });
} }
@ -149,9 +143,9 @@ export async function searchEvents(query: string) {
.from(eventsTable) .from(eventsTable)
.where( .where(
or( or(
ilike(eventsTable.name, `%${query}%`), like(eventsTable.name, `%${query}%`),
ilike(eventsTable.title, `%${query}%`), like(eventsTable.title, `%${query}%`),
ilike(eventsTable.description, `%${query}%`), like(eventsTable.description, `%${query}%`),
), ),
) )
.orderBy(eventsTable.startTime, eventsTable.endTime); .orderBy(eventsTable.startTime, eventsTable.endTime);