feat: assignment query submissions, questions en groups geimplementeerd
This commit is contained in:
		
							parent
							
								
									3ee66d2f67
								
							
						
					
					
						commit
						10ec9cbb58
					
				
					 2 changed files with 56 additions and 1 deletions
				
			
		|  | @ -1,6 +1,10 @@ | ||||||
| import { AssignmentController, type AssignmentsResponse } from "@/controllers/assignments"; | 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 { useQuery, type UseQueryReturnType } from "@tanstack/vue-query"; | ||||||
| import { computed, toValue, type MaybeRefOrGetter } from "vue"; | import { computed, toValue, type MaybeRefOrGetter } from "vue"; | ||||||
|  | import { groupsQueryKey } from "./groups"; | ||||||
|  | import type { GroupsResponse } from "@/controllers/groups"; | ||||||
| 
 | 
 | ||||||
| function assignmentsQueryKey(classid: string, full: boolean) { | function assignmentsQueryKey(classid: string, full: boolean) { | ||||||
|     return [ "assignments", classid, full ]; |     return [ "assignments", classid, full ]; | ||||||
|  | @ -8,6 +12,12 @@ function assignmentsQueryKey(classid: string, full: boolean) { | ||||||
| function assignmentQueryKey(classid: string, assignmentNumber: number) { | function assignmentQueryKey(classid: string, assignmentNumber: number) { | ||||||
|     return [ "assignment", classid, assignmentNumber ]; |     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( | function checkEnabled( | ||||||
|     classid: string | undefined,  |     classid: string | undefined,  | ||||||
|  | @ -52,3 +62,48 @@ export function useAssignmentQuery( | ||||||
|         enabled: () => checkEnabled(cid, an, gn), |         enabled: () => checkEnabled(cid, an, gn), | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | export function useAssignmentSubmissionsQuery( | ||||||
|  |     classid: MaybeRefOrGetter<string | undefined>,  | ||||||
|  |     assignmentNumber: MaybeRefOrGetter<number | undefined>,  | ||||||
|  |     groupNumber: MaybeRefOrGetter<number | undefined>, | ||||||
|  |     full: MaybeRefOrGetter<boolean> = true, | ||||||
|  | ): UseQueryReturnType<SubmissionsResponse, Error> { | ||||||
|  |     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<string | undefined>,  | ||||||
|  |     assignmentNumber: MaybeRefOrGetter<number | undefined>,  | ||||||
|  |     groupNumber: MaybeRefOrGetter<number | undefined>, | ||||||
|  |     full: MaybeRefOrGetter<boolean> = true, | ||||||
|  | ): UseQueryReturnType<QuestionsResponse, Error> { | ||||||
|  |     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<string | undefined>,  | ||||||
|  |     assignmentNumber: MaybeRefOrGetter<number | undefined>,  | ||||||
|  |     groupNumber: MaybeRefOrGetter<number | undefined>, | ||||||
|  |     full: MaybeRefOrGetter<boolean> = true, | ||||||
|  | ): UseQueryReturnType<GroupsResponse, Error> { | ||||||
|  |     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), | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | @ -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 { useMutation, useQuery, useQueryClient, type UseMutationReturnType, type UseQueryReturnType } from "@tanstack/vue-query"; | ||||||
| import { computed, toValue, type MaybeRefOrGetter } from "vue"; | 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 ]; |     return [ "groups", classid, assignmentNumber, full ]; | ||||||
| } | } | ||||||
| function groupQueryKey(classid: string, assignmentNumber: number, groupNumber: number) { | function groupQueryKey(classid: string, assignmentNumber: number, groupNumber: number) { | ||||||
|  |  | ||||||
		Reference in a new issue
	
	 Adriaan Jacquet
						Adriaan Jacquet