Files
classroomio/apps/dashboard/src/lib/utils/services/submissions/index.ts
T

112 lines
2.2 KiB
TypeScript
Raw Normal View History

import type { PostgrestSingleResponse } from '@supabase/supabase-js';
import { supabase } from '$lib/utils/functions/supabase';
import type { ExerciseSubmissions } from '$lib/utils/types';
2021-08-18 19:47:02 +03:00
export function fetchSubmissionStatus() {
return supabase.from('submissionstatus').select(`*`);
}
export function fetchSubmissions(course_id: string) {
2021-08-18 19:47:02 +03:00
return supabase
.from('submission')
.select(
`
id,
created_at,
2021-08-18 19:47:02 +03:00
answers:question_answer(*),
exercise:exercise_id(
id, title, due_by,
2021-08-18 19:47:02 +03:00
lesson:lesson_id(id, title),
questions:question(
*,
options:option(*),
question_type:question_type_id(id, label)
)
),
status_id,
2024-05-13 19:35:06 +01:00
feedback,
2021-08-18 19:47:02 +03:00
course:course_id(*),
groupmember:submitted_by(
profile(*)
)
`
)
.match({
course_id
2021-08-18 19:47:02 +03:00
});
}
2021-09-04 22:27:00 +03:00
export async function fetchSubmission({
courseId,
exerciseId,
submittedBy
}: {
exerciseId: string;
courseId?: string;
submittedBy?: string;
}) {
const query: {
exercise_id: string;
course_id?: string;
submitted_by?: string;
} = {
exercise_id: exerciseId
};
if (courseId) {
query.course_id = courseId;
}
if (submittedBy) {
query.submitted_by = submittedBy;
}
2021-09-04 22:27:00 +03:00
return supabase
.from('submission')
.select(
`
id,
answers:question_answer(*),
status_id,
2024-05-13 19:35:06 +01:00
feedback,
submitted_by:groupmember!inner(
profile!inner(
id,
fullname,
avatar_url
)
)
2021-09-04 22:27:00 +03:00
`
)
.match(query)
.returns<ExerciseSubmissions[]>();
2021-09-04 22:27:00 +03:00
}
export async function updateSubmission(
2024-05-13 19:35:06 +01:00
{
id,
status_id,
total,
feedback
}: { id?: number; status_id?: number; total?: number; feedback?: string },
otherArgs?: any
) {
const toUpdate: {
status_id?: number;
total?: number;
2024-05-13 19:35:06 +01:00
feedback?: string;
} = {
2024-05-13 19:35:06 +01:00
status_id,
feedback
2021-09-04 22:27:00 +03:00
};
if (typeof total === 'number') {
toUpdate.total = total;
}
2021-09-11 19:27:11 +03:00
return supabase.from('submission').update(toUpdate, otherArgs).match({ id });
2021-09-04 22:27:00 +03:00
}
export async function updateQuestionAnswer(update: any, match: any) {
2021-09-04 22:27:00 +03:00
return supabase.from('question_answer').update(update).match(match);
}