import type { PageServerLoad, Actions } from './$types'; import { db } from '$lib/server/db'; import { sponsors } from '$lib/server/schema'; import { eq, asc } from 'drizzle-orm'; import { error, fail } from '@sveltejs/kit'; import { logAudit } from '$lib/server/audit'; import { hasPermission } from '$lib/roles'; import type { Role } from '$lib/roles'; export const load: PageServerLoad = async ({ locals }) => { if (!hasPermission(locals.user!.role as Role, 'sponsors')) error(403, 'Access denied'); const allSponsors = await db.select().from(sponsors).orderBy(asc(sponsors.sortOrder)); const grouped = { top_dog: allSponsors.filter(s => s.tier === 'top_dog'), wagging_tails: allSponsors.filter(s => s.tier === 'wagging_tails'), wet_noses: allSponsors.filter(s => s.tier === 'wet_noses') }; return { sponsors: allSponsors, grouped }; }; export const actions: Actions = { toggleActive: async ({ request, locals }) => { if (!hasPermission(locals.user!.role as Role, 'sponsors')) error(403, 'Access denied'); const fd = await request.formData(); const sponsorId = parseInt(fd.get('sponsorId') as string, 10); const active = fd.get('active') === 'true'; if (!sponsorId || isNaN(sponsorId)) return fail(400, { error: 'Invalid sponsor ID' }); await db.update(sponsors).set({ active }).where(eq(sponsors.id, sponsorId)); await logAudit({ userId: locals.user?.id ?? undefined, action: 'toggle_sponsor_active', entity: 'sponsor', entityId: sponsorId, diff: { active } }); return { success: true }; } };