diff options
Diffstat (limited to 'src/lib/Database')
| -rw-r--r-- | src/lib/Database/eventBadges.ts | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/lib/Database/eventBadges.ts b/src/lib/Database/eventBadges.ts new file mode 100644 index 00000000..145d0bc1 --- /dev/null +++ b/src/lib/Database/eventBadges.ts @@ -0,0 +1,49 @@ +import supabase from './supabase'; + +interface Badge { + id: number; + created_at: string; + updated_at: string; + image_url: string; + image_artist: string; + description: string; + event: number; + group: number; +} + +interface NewBadge { + updated_at?: string; + image_url: string; + image_artist: string; + description: string; +} + +interface GetBy { + event?: number; + group?: number; +} + +export const getBadges = async (getBy?: GetBy) => { + let data, error; + + if (getBy?.event) + [data, error] = await supabase.from('badges').select('*').eq('event', getBy.event); + else if (getBy?.group) + [data, error] = await supabase.from('badges').select('*').eq('group', getBy.group); + else [data, error] = await supabase.from('badges').select('*'); + + if (error) return []; + + return data as Badge[]; +}; + +export const createBadge = async (badge: NewBadge) => await supabase.from('badges').insert(badge); + +export const deleteBadge = async (id: number) => + await supabase.from('badges').delete().eq('id', id); + +export const updateBadge = async (id: number, badge: NewBadge) => { + if (!badge.updated_at) badge.updated_at = new Date().toISOString(); + + return await supabase.from('badges').update(badge).eq('id', id); +}; |