feat: class query student en teacher POST
This commit is contained in:
		
							parent
							
								
									45a36a94a5
								
							
						
					
					
						commit
						02076212fe
					
				
					 1 changed files with 27 additions and 0 deletions
				
			
		|  | @ -6,6 +6,7 @@ import { computed, toValue, type MaybeRefOrGetter } from "vue"; | ||||||
| 
 | 
 | ||||||
| const classController = new ClassController(); | const classController = new ClassController(); | ||||||
| 
 | 
 | ||||||
|  | /* Query cache keys */ | ||||||
| function classesQueryKey() { | function classesQueryKey() { | ||||||
|     return ["classes"]; |     return ["classes"]; | ||||||
| } | } | ||||||
|  | @ -25,6 +26,7 @@ function classAssignmentsKey(classid: string) { | ||||||
|     return ["class-assignments", classid]; |     return ["class-assignments", classid]; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /* Function to invalidate all caches with certain class id */ | ||||||
| async function invalidateAll(classid: string, queryClient: QueryClient): Promise<void> { | async function invalidateAll(classid: string, queryClient: QueryClient): Promise<void> { | ||||||
|     await queryClient.invalidateQueries({ queryKey: ["classes"] }); |     await queryClient.invalidateQueries({ queryKey: ["classes"] }); | ||||||
|     await queryClient.invalidateQueries({ queryKey: classQueryKey(classid) }); |     await queryClient.invalidateQueries({ queryKey: classQueryKey(classid) }); | ||||||
|  | @ -34,6 +36,7 @@ async function invalidateAll(classid: string, queryClient: QueryClient): Promise | ||||||
|     await queryClient.invalidateQueries({ queryKey: classTeacherInvitationsKey(classid) }); |     await queryClient.invalidateQueries({ queryKey: classTeacherInvitationsKey(classid) }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /* Queries */ | ||||||
| export function useClassesQuery(full: MaybeRefOrGetter<boolean> = true): UseQueryReturnType<ClassesResponse, Error> { | export function useClassesQuery(full: MaybeRefOrGetter<boolean> = true): UseQueryReturnType<ClassesResponse, Error> { | ||||||
|     return useQuery({ |     return useQuery({ | ||||||
|         queryKey: computed(() => (classesQueryKey())), |         queryKey: computed(() => (classesQueryKey())), | ||||||
|  | @ -95,6 +98,18 @@ export function useClassStudentsQuery( | ||||||
|     }) |     }) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | export function useCreateClassStudentMutation(): UseMutationReturnType<ClassResponse, Error, {id: string, username: string}, unknown> { | ||||||
|  |     const queryClient = useQueryClient(); | ||||||
|  | 
 | ||||||
|  |     return useMutation({ | ||||||
|  |         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) }); | ||||||
|  |         }, | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| export function useClassTeachersQuery( | export function useClassTeachersQuery( | ||||||
|     id: MaybeRefOrGetter<string | undefined>, |     id: MaybeRefOrGetter<string | undefined>, | ||||||
|     full: MaybeRefOrGetter<boolean> = true |     full: MaybeRefOrGetter<boolean> = true | ||||||
|  | @ -106,6 +121,18 @@ export function useClassTeachersQuery( | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | export function useCreateClassTeacherMutation(): UseMutationReturnType<ClassResponse, Error, {id: string, username: string}, unknown> { | ||||||
|  |     const queryClient = useQueryClient(); | ||||||
|  | 
 | ||||||
|  |     return useMutation({ | ||||||
|  |         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) }); | ||||||
|  |         }, | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| export function useClassTeacherInvitationsQuery( | export function useClassTeacherInvitationsQuery( | ||||||
|     id: MaybeRefOrGetter<string | undefined>, |     id: MaybeRefOrGetter<string | undefined>, | ||||||
|     full: MaybeRefOrGetter<boolean> = true |     full: MaybeRefOrGetter<boolean> = true | ||||||
|  |  | ||||||
		Reference in a new issue
	
	 Adriaan Jacquet
						Adriaan Jacquet