Files
classroomio/src/lib/utils/services/lms/exercises.ts
T

97 lines
1.8 KiB
TypeScript

import { supabase } from '$lib/utils/functions/supabase';
import type { PostgrestError } from '@supabase/supabase-js';
export interface LMSExercise {
id: string;
title: string;
updated_at: string;
submission: {
status_id: number;
updated_at: string;
groupmember: {
id: string;
profile: {
id: string;
}[];
}[];
}[];
lesson: {
id: string;
title: string;
order: number;
course: {
id: string;
title: string;
group: {
organisation: {
id: string;
}[];
}[];
groupmember: {
id: string;
profile: {
id: string;
}[];
}[];
};
};
}
interface FetchLMSExercisesResponse {
exercises: LMSExercise[] | null;
error: PostgrestError | null;
}
export async function fetchLMSExercises(
profileId: string,
orgId: string
): Promise<FetchLMSExercisesResponse> {
const { data, error } = await supabase
.from('exercise')
.select(
`
id,
title,
updated_at,
submission (
status_id,
updated_at,
groupmember:submitted_by!inner (
id,
profile!inner (
id
)
)
),
lesson!inner (
id,
title,
order,
course!inner (
id,
title,
group:group_id!inner (
organisation:organization_id!inner (
id
)
),
groupmember:group_id!inner(
id,
profile!inner (
id
)
)
)
)
`
)
.eq('lesson.course.group.organisation.id', orgId)
.eq('lesson.course.groupmember.profile.id', profileId)
.eq('submission.groupmember.profile.id', profileId);
return {
exercises: data,
error
};
}