aboutsummaryrefslogtreecommitdiff
path: root/src/lib/stores/topics.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/stores/topics.ts')
-rw-r--r--src/lib/stores/topics.ts33
1 files changed, 29 insertions, 4 deletions
diff --git a/src/lib/stores/topics.ts b/src/lib/stores/topics.ts
index 0e39769..04c1e9e 100644
--- a/src/lib/stores/topics.ts
+++ b/src/lib/stores/topics.ts
@@ -1,7 +1,32 @@
-import { store } from './apollo';
-import { GET_TOPIC } from '$lib/data/queries';
+import { createClient } from '@supabase/supabase-js'
+import { single, collection } from './supabase';
+import { supabase } from '$lib/config/config';
import type { Topic } from '$lib/data/types';
-export const getTopic = (id: string) =>
- store<Topic>({ key: 'topic', query: GET_TOPIC, variables: { id } });
+const client = createClient(supabase.url, supabase.key);
+
+export const topic = (id: string, withPosts = false) => single<Topic>(client
+ .from('topics')
+ .select(withPosts ? `*,
+ forum: forums (*),
+ tags: topic_tags (*),
+ posts (
+ *,
+ author:author_id (*)
+ )
+ `: '*' )
+ .eq('id', id),
+ null);
+export const topicsForForum = (id: string) => collection<Topic>(client
+ .from('topics')
+ .select('*')
+ .eq('forum_id', id),
+ []);
+export const topicsForTag = (id: string) => collection<Topic>(client
+ .from('topics')
+ .select(`
+ *,tags!inner(*)
+ `)
+ .eq('tags.tag', id),
+ []);