Fix #17 - filter-modules-reviews (#18)
All checks were successful
CodyOps Core Builder / build-conteiner (push) Successful in 7m49s

Reviewed-on: #18
Co-authored-by: Luciano Giacchetta <giacchetta-@outlook.com>
Co-committed-by: Luciano Giacchetta <giacchetta-@outlook.com>
This commit is contained in:
Luciano Giacchetta 2025-08-21 19:14:17 -03:00 committed by Luciano Giacchetta
parent 71343ce56f
commit 403cc46966
4 changed files with 55 additions and 7 deletions

View File

@ -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);
</div>
</div>
<div class="accordion accordion-btn-icon-start">
{course.modules.map((item: any, index:number) => (
{filteredModules.map((item: any, index:number) => (
<div class="accordion-item">
<div class="accordion-header" id={`headingCourse${index}`}>
<a

View File

@ -39,7 +39,8 @@ export const courses = await directus.request(
'duration',
'title',
'description',
'video'
'video',
'status'
]
}
],

View File

@ -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<DirectusSchema, 'codyops_reviews', Query<DirectusSchema, Review>>("codyops_reviews", {
fields: [
'stars',
'date_created',
'course_id',
'feedback',
{
user_created: [
'first_name',
'last_name',
'avatar'
]
},
],
filter: {
status: isDev ? { '_neq': 'archived' } : { '_eq': 'published' }
},
}
)
);

View File

@ -0,0 +1,17 @@
import type { Users } from "./codyops-users";
export interface Review {
slug: string;
status: string;
user_created?: Partial<Users>;
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[];
}