From 84f0ce66ca51e78da8685b9be5aaa0e03d5b3eef Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 13 Feb 2024 09:18:13 -0800 Subject: feat(events): groups page --- src/lib/Database/groups.ts | 32 ++++++++ src/routes/api/events/group/+server.ts | 4 + src/routes/api/events/groups/+server.ts | 3 + src/routes/events/groups/+page.svelte | 129 ++++++++++++++++++++++++++++++++ 4 files changed, 168 insertions(+) create mode 100644 src/lib/Database/groups.ts create mode 100644 src/routes/api/events/group/+server.ts create mode 100644 src/routes/api/events/groups/+server.ts create mode 100644 src/routes/events/groups/+page.svelte diff --git a/src/lib/Database/groups.ts b/src/lib/Database/groups.ts new file mode 100644 index 00000000..e3e392b8 --- /dev/null +++ b/src/lib/Database/groups.ts @@ -0,0 +1,32 @@ +import supabase from './supabase'; + +export interface Group { + id: number; + created_at: string; + updated_at?: string; + members: number[]; + avatar: string; + banner: string; + description?: string; + name: string; + anilist_id: number; + anilist_username: string; + badge?: string; + badge_description?: string; +} + +export const getGroups = async () => { + const { data, error } = await supabase.from('groups').select('*'); + + if (error) return []; + + return data as Group[]; +}; + +export const getGroup = async (slug: string) => { + const { data, error } = await supabase.from('groups').select('*').eq('slug', slug); + + if (error) return []; + + return data as Group[]; +}; diff --git a/src/routes/api/events/group/+server.ts b/src/routes/api/events/group/+server.ts new file mode 100644 index 00000000..b79895fd --- /dev/null +++ b/src/routes/api/events/group/+server.ts @@ -0,0 +1,4 @@ +import { getGroup } from '$lib/Database/groups'; + +export const GET = async ({ url }) => + Response.json(await getGroup(url.searchParams.get('slug') || '')); diff --git a/src/routes/api/events/groups/+server.ts b/src/routes/api/events/groups/+server.ts new file mode 100644 index 00000000..512dde37 --- /dev/null +++ b/src/routes/api/events/groups/+server.ts @@ -0,0 +1,3 @@ +import { getGroups } from '$lib/Database/groups'; + +export const GET = async () => Response.json(await getGroups()); diff --git a/src/routes/events/groups/+page.svelte b/src/routes/events/groups/+page.svelte new file mode 100644 index 00000000..b52407f0 --- /dev/null +++ b/src/routes/events/groups/+page.svelte @@ -0,0 +1,129 @@ + + +{#await groupsResponse} + +{:then groups} + {#if groups} + {#await groups.json()} + + {:then json} +
    + {#each json as rawGroup} + {@const group = asGroup(rawGroup)} + +
    + {#if group} + + {/if} + +
    +
    + + + +
    + +
    +

    + + @{group.name} + + {#if group && group.badge} + ‌ + + {/if} +

    + +

    + {group.description} +

    +
    +
    +
    + {/each} +
+ {:catch} + + Error parsing groups. Please + location.reload()}>try again later. + + {/await} + {:else} + + {/if} +{:catch} + + Error loading groups. Please + location.reload()}>try again later. + +{/await} + + -- cgit v1.2.3