From 10ec9cbb589d8d0901b9b2355b3fdd8822e39c12 Mon Sep 17 00:00:00 2001 From: Adriaan Jacquet Date: Sun, 13 Apr 2025 11:41:34 +0200 Subject: [PATCH] feat: assignment query submissions, questions en groups geimplementeerd --- frontend/src/queries/assignments.ts | 55 +++++++++++++++++++++++++++++ frontend/src/queries/groups.ts | 2 +- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/frontend/src/queries/assignments.ts b/frontend/src/queries/assignments.ts index a7a8caaf..bec4e52a 100644 --- a/frontend/src/queries/assignments.ts +++ b/frontend/src/queries/assignments.ts @@ -1,6 +1,10 @@ import { AssignmentController, type AssignmentsResponse } from "@/controllers/assignments"; +import type { QuestionsResponse } from "@/controllers/questions"; +import type { SubmissionsResponse } from "@/controllers/submissions"; import { useQuery, type UseQueryReturnType } from "@tanstack/vue-query"; import { computed, toValue, type MaybeRefOrGetter } from "vue"; +import { groupsQueryKey } from "./groups"; +import type { GroupsResponse } from "@/controllers/groups"; function assignmentsQueryKey(classid: string, full: boolean) { return [ "assignments", classid, full ]; @@ -8,6 +12,12 @@ function assignmentsQueryKey(classid: string, full: boolean) { function assignmentQueryKey(classid: string, assignmentNumber: number) { return [ "assignment", classid, assignmentNumber ]; } +function assignmentSubmissionsQueryKey(classid: string, assignmentNumber: number, full: boolean) { + return [ "assignment-submissions", classid, assignmentNumber, full ]; +} +function assignmentQuestionsQueryKey(classid: string, assignmentNumber: number, full: boolean) { + return [ "assignment-questions", classid, assignmentNumber, full ]; +} function checkEnabled( classid: string | undefined, @@ -51,4 +61,49 @@ export function useAssignmentQuery( queryFn: async () => new AssignmentController(cid!).getByNumber(gn!), enabled: () => checkEnabled(cid, an, gn), }); +} + +export function useAssignmentSubmissionsQuery( + classid: MaybeRefOrGetter, + assignmentNumber: MaybeRefOrGetter, + groupNumber: MaybeRefOrGetter, + full: MaybeRefOrGetter = true, +): UseQueryReturnType { + const { cid, an, gn, f } = toValues(classid, assignmentNumber, groupNumber, full); + + return useQuery({ + queryKey: computed(() => assignmentSubmissionsQueryKey(cid!, an!, f)), + queryFn: async () => new AssignmentController(cid!).getSubmissions(gn!, f), + enabled: () => checkEnabled(cid, an, gn), + }); +} + +export function useAssignmentQuestionsQuery( + classid: MaybeRefOrGetter, + assignmentNumber: MaybeRefOrGetter, + groupNumber: MaybeRefOrGetter, + full: MaybeRefOrGetter = true, +): UseQueryReturnType { + const { cid, an, gn, f } = toValues(classid, assignmentNumber, groupNumber, full); + + return useQuery({ + queryKey: computed(() => assignmentQuestionsQueryKey(cid!, an!, f)), + queryFn: async () => new AssignmentController(cid!).getQuestions(gn!, f), + enabled: () => checkEnabled(cid, an, gn), + }); +} + +export function useAssignmentGroupsQuery( + classid: MaybeRefOrGetter, + assignmentNumber: MaybeRefOrGetter, + groupNumber: MaybeRefOrGetter, + full: MaybeRefOrGetter = true, +): UseQueryReturnType { + const { cid, an, gn, f } = toValues(classid, assignmentNumber, groupNumber, full); + + return useQuery({ + queryKey: computed(() => groupsQueryKey(cid!, an!, f)), + queryFn: async () => new AssignmentController(cid!).getQuestions(gn!, f), + enabled: () => checkEnabled(cid, an, gn), + }); } \ No newline at end of file diff --git a/frontend/src/queries/groups.ts b/frontend/src/queries/groups.ts index 7223ebc6..50a5d92a 100644 --- a/frontend/src/queries/groups.ts +++ b/frontend/src/queries/groups.ts @@ -6,7 +6,7 @@ import type { GroupDTO } from "@dwengo-1/common/interfaces/group"; import { useMutation, useQuery, useQueryClient, type UseMutationReturnType, type UseQueryReturnType } from "@tanstack/vue-query"; import { computed, toValue, type MaybeRefOrGetter } from "vue"; -function groupsQueryKey(classid: string, assignmentNumber: number, full: boolean) { +export function groupsQueryKey(classid: string, assignmentNumber: number, full: boolean) { return [ "groups", classid, assignmentNumber, full ]; } function groupQueryKey(classid: string, assignmentNumber: number, groupNumber: number) {