feat: map shapes, image persistence, grab tool, layer rename/delete, i18n, page metadata

This commit is contained in:
AlacrisDevs
2026-02-08 23:11:09 +02:00
parent 75a2aefadb
commit f2384bceb8
125 changed files with 22605 additions and 3902 deletions

View File

@@ -108,6 +108,70 @@ export async function deleteSponsorTier(
}
}
// ============================================================
// Event-wide Tier + Sponsor fetching
// ============================================================
export async function fetchEventSponsorTiers(
supabase: SupabaseClient,
eventId: string
): Promise<SponsorTier[]> {
const { data, error } = await db(supabase)
.from('sponsor_tiers')
.select('*, event_departments!inner(event_id)')
.eq('event_departments.event_id', eventId)
.order('sort_order');
if (error) {
log.error('fetchEventSponsorTiers failed', { error, data: { eventId } });
throw error;
}
return (data ?? []).map((d: any) => {
const { event_departments, ...tier } = d;
return tier;
}) as SponsorTier[];
}
export async function fetchEventSponsors(
supabase: SupabaseClient,
eventId: string
): Promise<Sponsor[]> {
const { data, error } = await db(supabase)
.from('sponsors')
.select('*, event_departments!inner(event_id)')
.eq('event_departments.event_id', eventId)
.order('name');
if (error) {
log.error('fetchEventSponsors failed', { error, data: { eventId } });
throw error;
}
return (data ?? []).map((d: any) => {
const { event_departments, ...sponsor } = d;
return sponsor;
}) as Sponsor[];
}
export async function fetchEventDeliverables(
supabase: SupabaseClient,
eventId: string
): Promise<SponsorDeliverable[]> {
const { data, error } = await db(supabase)
.from('sponsor_deliverables')
.select('*, sponsors!inner(department_id, event_departments!inner(event_id))')
.eq('sponsors.event_departments.event_id', eventId)
.order('sort_order');
if (error) {
log.error('fetchEventDeliverables failed', { error, data: { eventId } });
throw error;
}
return (data ?? []).map((d: any) => {
const { sponsors, ...del } = d;
return del;
}) as SponsorDeliverable[];
}
// ============================================================
// Sponsors
// ============================================================