From b99a2ecf4cd31e749f61f9b476450cdff6c2fa98 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 13 Feb 2024 09:59:01 -0800 Subject: feat(group): show events --- src/lib/Database/events.ts | 19 ++++++--- src/routes/api/events/+server.ts | 4 ++ src/routes/events/group/[group]/+page.svelte | 61 ++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 src/routes/api/events/+server.ts (limited to 'src') diff --git a/src/lib/Database/events.ts b/src/lib/Database/events.ts index 714bd446..c6153d26 100644 --- a/src/lib/Database/events.ts +++ b/src/lib/Database/events.ts @@ -1,12 +1,14 @@ import supabase from './supabase'; -interface Event { +export interface Event { id: number; created_at: string; updated_at: string; title: string; description: string; - group: number; + group: string; + banner: string; + anilist_url: string; } interface NewEvent { @@ -15,11 +17,16 @@ interface NewEvent { description: string; } -export const getEvents = async (group?: number) => { - let data, error; +export const getEvents = async () => { + const { data, error } = await supabase.from('events').select('*'); - if (group) [data, error] = await supabase.from('events').select('*').eq('group', group); - else [data, error] = await supabase.from('events').select('*'); + if (error) return []; + + return data as Event[]; +}; + +export const getGroupEvents = async (group: string) => { + const { data, error } = await supabase.from('events').select('*').eq('group', group); if (error) return []; diff --git a/src/routes/api/events/+server.ts b/src/routes/api/events/+server.ts new file mode 100644 index 00000000..987eecae --- /dev/null +++ b/src/routes/api/events/+server.ts @@ -0,0 +1,4 @@ +import { getGroupEvents } from '$lib/Database/events'; + +export const GET = async ({ url }) => + Response.json(await getGroupEvents(url.searchParams.get('group') || '')); diff --git a/src/routes/events/group/[group]/+page.svelte b/src/routes/events/group/[group]/+page.svelte index 5a36a755..7cd37100 100644 --- a/src/routes/events/group/[group]/+page.svelte +++ b/src/routes/events/group/[group]/+page.svelte @@ -1,9 +1,11 @@ {#await groupsResponse} @@ -76,6 +80,59 @@ + +

+ +

+ Events + + {#await fetch(root(`/api/events?group=${data.group}`))} + + {:then eventsResponse} + {#await eventsResponse.json()} + + {:then events} + {#if events} + {#each events as rawEvent} + {@const event = asEvent(rawEvent)} + + +
+ {#if event} + + {/if} + +
+
+

+ + {event.title} + +
+ {$locale().dateFormatter(new Date(event.created_at))} +

+ +

{event.description}

+
+
+
+ + {/each} + {/if} + {:catch} + + Error parsing events. Please + location.reload()}>try again later. + + {/await} + {/await} +
{/if} {:catch} @@ -129,4 +186,8 @@ visibility: hidden; height: 4.5em; } + + .title-text { + font-size: 1.1em; + } -- cgit v1.2.3