feat: class queries students, teachers, teacher invitations GET

This commit is contained in:
Adriaan Jacquet 2025-04-09 19:42:02 +02:00
parent 1c99b03554
commit c05ad9a702

View file

@ -1,16 +1,25 @@
import { ClassController, type ClassesResponse, type ClassResponse } from "@/controllers/classes";
import type { StudentsResponse } from "@/controllers/students";
import { useQuery, type UseQueryReturnType } from "@tanstack/vue-query";
import { computed, toValue, type MaybeRefOrGetter } from "vue";
const classController = new ClassController();
function classesQueryKey() {
return ["students"];
return ["classes"];
}
function classQueryKey(classid: string) {
return ["student", classid];
return ["class", classid];
}
function classStudentsKey(classid: string) {
return ["class-students", classid];
}
function classTeachersKey(classid: string) {
return ["class-teachers", classid];
}
function classTeacherInvitationsKey(classid: string) {
return ["class-teacher-invitations", classid];
}
export function useClassesQuery(full: MaybeRefOrGetter<boolean> = true): UseQueryReturnType<ClassesResponse, Error> {
return useQuery({
@ -27,4 +36,37 @@ export function useClassQuery(
queryFn: async () => classController.getById(toValue(id)!),
enabled: () => Boolean(toValue(id)),
});
}
export function useClassStudentsQuery(
id: MaybeRefOrGetter<string | undefined>,
full: MaybeRefOrGetter<boolean> = true
): UseQueryReturnType<StudentsResponse, Error> {
return useQuery({
queryKey: computed(() => classStudentsKey(toValue(id)!)),
queryFn: async () => classController.getStudents(toValue(id)!, toValue(full)!),
enabled: () => Boolean(toValue(id)),
})
}
export function useClassTeachersQuery(
id: MaybeRefOrGetter<string | undefined>,
full: MaybeRefOrGetter<boolean> = true
): UseQueryReturnType<StudentsResponse, Error> {
return useQuery({
queryKey: computed(() => classTeachersKey(toValue(id)!)),
queryFn: async () => classController.getTeachers(toValue(id)!, toValue(full)!),
enabled: () => Boolean(toValue(id)),
});
}
export function useClassTeacherInvitationsQuery(
id: MaybeRefOrGetter<string | undefined>,
full: MaybeRefOrGetter<boolean> = true
): UseQueryReturnType<StudentsResponse, Error> {
return useQuery({
queryKey: computed(() => classTeacherInvitationsKey(toValue(id)!)),
queryFn: async () => classController.getTeacherInvitations(toValue(id)!, toValue(full)!),
enabled: () => Boolean(toValue(id)),
});
}