feat: class query full parameter toegevoegd aan keys
This commit is contained in:
		
							parent
							
								
									73e3871af0
								
							
						
					
					
						commit
						363eba5745
					
				
					 1 changed files with 30 additions and 23 deletions
				
			
		|  | @ -7,22 +7,22 @@ import { computed, toValue, type MaybeRefOrGetter } from "vue"; | |||
| const classController = new ClassController(); | ||||
| 
 | ||||
| /* Query cache keys */ | ||||
| function classesQueryKey() { | ||||
|     return ["classes"]; | ||||
| function classesQueryKey(full: boolean) { | ||||
|     return ["classes", full]; | ||||
| } | ||||
| function classQueryKey(classid: string) { | ||||
|     return ["class", classid]; | ||||
| } | ||||
| function classStudentsKey(classid: string) { | ||||
|     return ["class-students", classid]; | ||||
| function classStudentsKey(classid: string, full: boolean) { | ||||
|     return ["class-students", classid, full]; | ||||
| } | ||||
| function classTeachersKey(classid: string) { | ||||
|     return ["class-teachers", classid]; | ||||
| function classTeachersKey(classid: string, full: boolean) { | ||||
|     return ["class-teachers", classid, full]; | ||||
| } | ||||
| function classTeacherInvitationsKey(classid: string) { | ||||
|     return ["class-teacher-invitations", classid]; | ||||
| function classTeacherInvitationsKey(classid: string, full: boolean) { | ||||
|     return ["class-teacher-invitations", classid, full]; | ||||
| } | ||||
| function classAssignmentsKey(classid: string) { | ||||
| function classAssignmentsKey(classid: string, full: boolean) { | ||||
|     return ["class-assignments", classid]; | ||||
| } | ||||
| 
 | ||||
|  | @ -30,16 +30,18 @@ function classAssignmentsKey(classid: string) { | |||
| async function invalidateAll(classid: string, queryClient: QueryClient): Promise<void> { | ||||
|     await queryClient.invalidateQueries({ queryKey: ["classes"] }); | ||||
|     await queryClient.invalidateQueries({ queryKey: classQueryKey(classid) }); | ||||
|     await queryClient.invalidateQueries({ queryKey: classStudentsKey(classid) }); | ||||
|     await queryClient.invalidateQueries({ queryKey: classTeachersKey(classid) }); | ||||
|     await queryClient.invalidateQueries({ queryKey: classAssignmentsKey(classid) }); | ||||
|     await queryClient.invalidateQueries({ queryKey: classTeacherInvitationsKey(classid) }); | ||||
|     for (let v of [true, false]) { | ||||
|         await queryClient.invalidateQueries({ queryKey: classStudentsKey(classid, v) }); | ||||
|         await queryClient.invalidateQueries({ queryKey: classTeachersKey(classid, v) }); | ||||
|         await queryClient.invalidateQueries({ queryKey: classAssignmentsKey(classid, v) }); | ||||
|         await queryClient.invalidateQueries({ queryKey: classTeacherInvitationsKey(classid, v) }); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /* Queries */ | ||||
| export function useClassesQuery(full: MaybeRefOrGetter<boolean> = true): UseQueryReturnType<ClassesResponse, Error> { | ||||
|     return useQuery({ | ||||
|         queryKey: computed(() => (classesQueryKey())), | ||||
|         queryKey: computed(() => (classesQueryKey(toValue(full)))), | ||||
|         queryFn: async () => classController.getAll(toValue(full)), | ||||
|     }); | ||||
| } | ||||
|  | @ -60,7 +62,8 @@ export function useCreateClassMutation(): UseMutationReturnType<ClassResponse, E | |||
|     return useMutation({ | ||||
|         mutationFn: async (data) => classController.createClass(data), | ||||
|         onSuccess: async () => { | ||||
|             await queryClient.invalidateQueries({ queryKey: ["classes"] }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classesQueryKey(true) }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classesQueryKey(false) }); | ||||
|         }, | ||||
|     }); | ||||
| } | ||||
|  | @ -92,7 +95,7 @@ export function useClassStudentsQuery( | |||
|     full: MaybeRefOrGetter<boolean> = true | ||||
| ): UseQueryReturnType<StudentsResponse, Error> { | ||||
|     return useQuery({ | ||||
|         queryKey: computed(() => classStudentsKey(toValue(id)!)), | ||||
|         queryKey: computed(() => classStudentsKey(toValue(id)!, toValue(full))), | ||||
|         queryFn: async () => classController.getStudents(toValue(id)!, toValue(full)!), | ||||
|         enabled: () => Boolean(toValue(id)), | ||||
|     }) | ||||
|  | @ -105,7 +108,8 @@ export function useClassAddStudentMutation(): UseMutationReturnType<ClassRespons | |||
|         mutationFn: async ({ id, username }) => classController.addStudent(id, username), | ||||
|         onSuccess: async (data) => { | ||||
|             await queryClient.invalidateQueries({ queryKey: classQueryKey(data.class.id) }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classStudentsKey(data.class.id) }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classStudentsKey(data.class.id, true) }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classStudentsKey(data.class.id, false) }); | ||||
|         }, | ||||
|     }); | ||||
| } | ||||
|  | @ -117,7 +121,8 @@ export function useClassDeleteStudentMutation(): UseMutationReturnType<ClassResp | |||
|         mutationFn: async ({ id, username }) => classController.deleteStudent(id, username), | ||||
|         onSuccess: async (data) => { | ||||
|             await queryClient.invalidateQueries({ queryKey: classQueryKey(data.class.id) }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classStudentsKey(data.class.id) }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classStudentsKey(data.class.id, true) }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classStudentsKey(data.class.id, false) }); | ||||
|         }, | ||||
|     }); | ||||
| } | ||||
|  | @ -127,7 +132,7 @@ export function useClassTeachersQuery( | |||
|     full: MaybeRefOrGetter<boolean> = true | ||||
| ): UseQueryReturnType<StudentsResponse, Error> { | ||||
|     return useQuery({ | ||||
|         queryKey: computed(() => classTeachersKey(toValue(id)!)), | ||||
|         queryKey: computed(() => classTeachersKey(toValue(id)!, toValue(full))), | ||||
|         queryFn: async () => classController.getTeachers(toValue(id)!, toValue(full)!), | ||||
|         enabled: () => Boolean(toValue(id)), | ||||
|     }); | ||||
|  | @ -140,7 +145,8 @@ export function useClassAddTeacherMutation(): UseMutationReturnType<ClassRespons | |||
|         mutationFn: async ({ id, username }) => classController.addTeacher(id, username), | ||||
|         onSuccess: async (data) => { | ||||
|             await queryClient.invalidateQueries({ queryKey: classQueryKey(data.class.id) }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classTeachersKey(data.class.id) }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classTeachersKey(data.class.id, true) }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classTeachersKey(data.class.id, false) }); | ||||
|         }, | ||||
|     }); | ||||
| } | ||||
|  | @ -152,7 +158,8 @@ export function useClassDeleteTeacherMutation(): UseMutationReturnType<ClassResp | |||
|         mutationFn: async ({ id, username }) => classController.deleteTeacher(id, username), | ||||
|         onSuccess: async (data) => { | ||||
|             await queryClient.invalidateQueries({ queryKey: classQueryKey(data.class.id) }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classTeachersKey(data.class.id) }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classTeachersKey(data.class.id, true) }); | ||||
|             await queryClient.invalidateQueries({ queryKey: classTeachersKey(data.class.id, false) }); | ||||
|         }, | ||||
|     }); | ||||
| } | ||||
|  | @ -162,7 +169,7 @@ export function useClassTeacherInvitationsQuery( | |||
|     full: MaybeRefOrGetter<boolean> = true | ||||
| ): UseQueryReturnType<StudentsResponse, Error> { | ||||
|     return useQuery({ | ||||
|         queryKey: computed(() => classTeacherInvitationsKey(toValue(id)!)), | ||||
|         queryKey: computed(() => classTeacherInvitationsKey(toValue(id)!, toValue(full))), | ||||
|         queryFn: async () => classController.getTeacherInvitations(toValue(id)!, toValue(full)!), | ||||
|         enabled: () => Boolean(toValue(id)), | ||||
|     }); | ||||
|  | @ -173,7 +180,7 @@ export function useClassAssignmentsQuery( | |||
|     full: MaybeRefOrGetter<boolean> = true | ||||
| ): UseQueryReturnType<StudentsResponse, Error> { | ||||
|     return useQuery({ | ||||
|         queryKey: computed(() => classAssignmentsKey(toValue(id)!)), | ||||
|         queryKey: computed(() => classAssignmentsKey(toValue(id)!, toValue(full))), | ||||
|         queryFn: async () => classController.getAssignments(toValue(id)!, toValue(full)!), | ||||
|         enabled: () => Boolean(toValue(id)), | ||||
|     }); | ||||
|  |  | |||
		Reference in a new issue
	
	 Adriaan Jacquet
						Adriaan Jacquet