From fecdaa116d1fba98133a9e4e89d619621bc127b3 Mon Sep 17 00:00:00 2001 From: Rotimi Best Date: Sun, 16 Jun 2024 05:01:35 +0100 Subject: [PATCH] feat: improve fetch course by slug query --- .../src/lib/utils/services/courses/index.ts | 79 ++++++++++++------- apps/dashboard/src/routes/+layout.server.ts | 4 +- 2 files changed, 52 insertions(+), 31 deletions(-) diff --git a/apps/dashboard/src/lib/utils/services/courses/index.ts b/apps/dashboard/src/lib/utils/services/courses/index.ts index 43a3fd49..a5fc0aec 100644 --- a/apps/dashboard/src/lib/utils/services/courses/index.ts +++ b/apps/dashboard/src/lib/utils/services/courses/index.ts @@ -13,6 +13,54 @@ import type { import { STATUS } from '$lib/utils/constants/course'; import type { PostgrestSingleResponse } from '@supabase/supabase-js'; +const SLUG_QUERY = ` + id, + title, + type, + description, + overview, + logo, + is_published, + slug, + cost, + currency, + metadata, + is_certificate_downloadable, + certificate_theme, + lessons:lesson( + id, title, public, lesson_at, call_url, is_unlocked, order, created_at + ) +`; + +const ID_QUERY = ` + id, + title, + type, + description, + overview, + logo, + is_published, + group(*, + members:groupmember(*, + profile(*) + ) + ), + slug, + cost, + currency, + metadata, + is_certificate_downloadable, + certificate_theme, + lessons:lesson( + id, title,public, lesson_at, is_unlocked, order, created_at, + note, videos, slide_url, call_url, totalExercises:exercise(count), totalComments:lesson_comment(count), + profile:teacher_id(id, avatar_url, fullname), + lesson_completion(id, profile_id, is_complete) + ), + attendance:group_attendance(*), + polls:apps_poll(status) +`; + export async function fetchCourse(courseId?: Course['id'], slug?: Course['slug']) { const match: { slug?: string; id?: string; status?: string } = {}; @@ -26,36 +74,7 @@ export async function fetchCourse(courseId?: Course['id'], slug?: Course['slug'] const response: PostgrestSingleResponse = await supabase .from('course') - .select( - ` - id, - title, - type, - description, - overview, - logo, - is_published, - group(*, - members:groupmember(*, - profile(*) - ) - ), - slug, - cost, - currency, - metadata, - is_certificate_downloadable, - certificate_theme, - lessons:lesson( - id, title,public, lesson_at, call_url, is_unlocked, order, created_at, - note, videos, slide_url, call_url, totalExercises:exercise(count), totalComments:lesson_comment(count), - profile:teacher_id(id, avatar_url, fullname), - lesson_completion(id, profile_id, is_complete) - ), - attendance:group_attendance(*), - polls:apps_poll(status) - ` - ) + .select(slug ? SLUG_QUERY : ID_QUERY) .match(match) .single(); diff --git a/apps/dashboard/src/routes/+layout.server.ts b/apps/dashboard/src/routes/+layout.server.ts index 111fe4fd..e33990c3 100644 --- a/apps/dashboard/src/routes/+layout.server.ts +++ b/apps/dashboard/src/routes/+layout.server.ts @@ -53,7 +53,9 @@ export const load = async ({ url, cookies }): Promise => { if (isLocalHost && tempSiteName) { console.log('setting sitename temp'); - cookies.set('_orgSiteName', tempSiteName); + cookies.set('_orgSiteName', tempSiteName, { + path: '/' + }); } const _orgSiteName = cookies.get('_orgSiteName');