From a01d40f97fad26b1a6f7157b77ed2f75db182ee7 Mon Sep 17 00:00:00 2001 From: Luciano Giacchetta Date: Thu, 21 Aug 2025 18:38:13 -0300 Subject: [PATCH 1/2] #17 - Update Reviews --- src/libs/reviews.ts | 26 ++++++++++++++++++++++---- src/types/codyops-reviews.ts | 17 +++++++++++++++++ 2 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 src/types/codyops-reviews.ts diff --git a/src/libs/reviews.ts b/src/libs/reviews.ts index 72560fe..0d51cca 100644 --- a/src/libs/reviews.ts +++ b/src/libs/reviews.ts @@ -1,10 +1,28 @@ import directus from "./directus"; -import { readItems } from "@directus/sdk"; +import { readItems, type Query } from "@directus/sdk"; +import type { DirectusSchema, Review } from "../types/codyops-reviews"; + +const isDev = import.meta.env.DEV; // Astro's way to check for development mode export const reviews = await directus.request( - readItems("codyops_reviews", { - fields: ['*', 'user_created.*'] - } + readItems>("codyops_reviews", { + fields: [ + 'stars', + 'date_created', + 'course_id', + 'feedback', + { + user_created: [ + 'first_name', + 'last_name', + 'avatar' + ] + }, + ], + filter: { + status: isDev ? { '_neq': 'archived' } : { '_eq': 'published' } + }, + } ) ); diff --git a/src/types/codyops-reviews.ts b/src/types/codyops-reviews.ts new file mode 100644 index 0000000..06fffc9 --- /dev/null +++ b/src/types/codyops-reviews.ts @@ -0,0 +1,17 @@ +import type { Users } from "./codyops-users"; + +export interface Review { + slug: string; + status: string; + user_created?: Partial; + user_updated: string | null; + date_created: string | null; + date_updated: string | null; + stars: number; + course_id: number; + feedback: string; +} + +export interface DirectusSchema { + codyops_reviews: Review[]; +} -- 2.51.0 From b954cfb65164e43dea18eabba9a549bd1fbe278a Mon Sep 17 00:00:00 2001 From: Luciano Giacchetta Date: Thu, 21 Aug 2025 19:05:14 -0300 Subject: [PATCH 2/2] #17 - Filter Modules on Courses --- .../course/course-accordion-list.astro | 16 ++++++++++++++-- src/libs/courses.ts | 3 ++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/components/course/course-accordion-list.astro b/src/components/course/course-accordion-list.astro index 863da66..b46914b 100644 --- a/src/components/course/course-accordion-list.astro +++ b/src/components/course/course-accordion-list.astro @@ -7,7 +7,19 @@ type Props = { const { course }: Props = Astro.props; -const courseDurations = course.modules.flatMap((time:any) => (time.duration)); +const isDev = import.meta.env.DEV; +const statusFilter = isDev ? { '_neq': 'archived' } : { '_eq': 'published' }; + +const filteredModules = course.modules.filter((module: any) => { + if (statusFilter._neq) { + return module.status !== statusFilter._neq; + } else if (statusFilter._eq) { + return module.status === statusFilter._eq; + } + return true; +}); + +const courseDurations = filteredModules.flatMap((time:any) => (time.duration)); const totalCourseDuration = sumTimes(courseDurations); --- @@ -28,7 +40,7 @@ const totalCourseDuration = sumTimes(courseDurations);
- {course.modules.map((item: any, index:number) => ( + {filteredModules.map((item: any, index:number) => (