2
0
forked from jmug/cactoide
Files
cactoide/src/routes/discover/+page.server.ts
2025-09-24 21:15:31 +02:00

44 lines
1.3 KiB
TypeScript

import { database } from '$lib/database/db';
import { eq, desc } from 'drizzle-orm';
import type { PageServerLoad } from './$types';
import { events } from '$lib/database/schema';
export const load: PageServerLoad = async () => {
try {
// Fetch all public events ordered by creation date (newest first)
const publicEvents = await database
.select()
.from(events)
.where(eq(events.visibility, 'public'))
.orderBy(desc(events.createdAt));
// Transform the database events to match the expected Event interface
const transformedEvents = publicEvents.map((event) => ({
id: event.id,
name: event.name,
date: event.date, // Already in 'YYYY-MM-DD' format
time: event.time, // Already in 'HH:MM:SS' format
location: event.location,
location_type: event.locationType,
location_url: event.locationUrl,
type: event.type,
attendee_limit: event.attendeeLimit, // Note: schema uses camelCase
visibility: event.visibility,
user_id: event.userId, // Note: schema uses camelCase
created_at: event.createdAt?.toISOString(),
updated_at: event.updatedAt?.toISOString()
}));
return {
events: transformedEvents
};
} catch (error) {
console.error('Error loading public events:', error);
// Return empty array on error to prevent page crash
return {
events: []
};
}
};