import type { Actions } from './$types'; import { error as kitError } from '@sveltejs/kit'; import Papa from 'papaparse'; import { fail } from '@sveltejs/kit'; export async function load({ locals }) { const { data: events, error } = await locals.supabase .from('events') .select('*') .order('date', { ascending: true }); if (error) { console.error('❌ supabase error:', error); // optional: throw to render SvelteKit error page throw kitError(500, 'Could not load events'); } return { events }; } export const actions = { create: async (event) => { const formData = await event.request.formData(); let { data: new_event, error } = await event.locals.supabase.rpc("create_event", { "p_name": formData.get('name'), "p_date": formData.get('date'), "p_description": formData.get('description'), }); return { new_event, error } }, participants: async (event) => { const formData = await event.request.formData(); const file = formData.get('participants') as File; let csvText = await file.text(); const { data: parsedRows, errors } = Papa.parse(csvText, { skipEmptyLines: true, header: false }); // Remove the first row (header) if (parsedRows.length > 0) { parsedRows.shift(); } // Map each row to an object with keys: name, surname, email const participants = parsedRows.map((row: string[]) => ({ name: row[0], surname: row[1], email: row[2] })); return { participants, } } } satisfies Actions;