From c05ad9a702c61e3fe60011c37095676eec0891a0 Mon Sep 17 00:00:00 2001 From: Adriaan Jacquet Date: Wed, 9 Apr 2025 19:42:02 +0200 Subject: [PATCH] feat: class queries students, teachers, teacher invitations GET --- frontend/src/queries/classes.ts | 48 ++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/frontend/src/queries/classes.ts b/frontend/src/queries/classes.ts index 68e07cc0..897d7e9e 100644 --- a/frontend/src/queries/classes.ts +++ b/frontend/src/queries/classes.ts @@ -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 = true): UseQueryReturnType { return useQuery({ @@ -27,4 +36,37 @@ export function useClassQuery( queryFn: async () => classController.getById(toValue(id)!), enabled: () => Boolean(toValue(id)), }); +} + +export function useClassStudentsQuery( + id: MaybeRefOrGetter, + full: MaybeRefOrGetter = true +): UseQueryReturnType { + return useQuery({ + queryKey: computed(() => classStudentsKey(toValue(id)!)), + queryFn: async () => classController.getStudents(toValue(id)!, toValue(full)!), + enabled: () => Boolean(toValue(id)), + }) +} + +export function useClassTeachersQuery( + id: MaybeRefOrGetter, + full: MaybeRefOrGetter = true +): UseQueryReturnType { + return useQuery({ + queryKey: computed(() => classTeachersKey(toValue(id)!)), + queryFn: async () => classController.getTeachers(toValue(id)!, toValue(full)!), + enabled: () => Boolean(toValue(id)), + }); +} + +export function useClassTeacherInvitationsQuery( + id: MaybeRefOrGetter, + full: MaybeRefOrGetter = true +): UseQueryReturnType { + return useQuery({ + queryKey: computed(() => classTeacherInvitationsKey(toValue(id)!)), + queryFn: async () => classController.getTeacherInvitations(toValue(id)!, toValue(full)!), + enabled: () => Boolean(toValue(id)), + }); } \ No newline at end of file