From 852ee620f0a2f6a83cf83eba860ca951b66bb7e2 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Tue, 31 May 2022 01:04:10 +0200 Subject: Use supabase --- src/lib/stores/supabase.ts | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/lib/stores/supabase.ts (limited to 'src/lib/stores/supabase.ts') diff --git a/src/lib/stores/supabase.ts b/src/lib/stores/supabase.ts new file mode 100644 index 0000000..804141f --- /dev/null +++ b/src/lib/stores/supabase.ts @@ -0,0 +1,38 @@ +import { readable } from 'svelte/store'; +import { initialResponse, errorResponse, response } from './response_builder'; + +import type { Readable } from 'svelte/store'; +import type { PostgrestFilterBuilder } from '@supabase/postgrest-js'; +import type { StoreState } from './response_builder'; + +export function collection (query: PostgrestFilterBuilder, initialValue: T[]): Readable> { + + return readable(initialResponse(initialValue), (set) => { + + (async function() { + const { data, error } = await query; + + if (error) { + return set(errorResponse(error)); + } + + set(response(data)); + })() + }); +} + +export function single (query: PostgrestFilterBuilder, initialValue: T): Readable> { + + return readable(initialResponse(initialValue), (set) => { + + (async function() { + const { data, error } = await query.single(); + + if (error) { + return set(errorResponse(error)); + } + + set(response(data)); + })() + }); +} -- cgit