feat: student join req query
This commit is contained in:
		
							parent
							
								
									f679a324ab
								
							
						
					
					
						commit
						815858d02f
					
				
					 1 changed files with 47 additions and 0 deletions
				
			
		|  | @ -13,6 +13,8 @@ const STUDENT_ASSIGNMENTS_QUERY_KEY = (username: string, full: boolean) => ['stu | ||||||
| const STUDENT_GROUPS_QUERY_KEY = (username: string, full: boolean) => ['student-groups', username, full]; | const STUDENT_GROUPS_QUERY_KEY = (username: string, full: boolean) => ['student-groups', username, full]; | ||||||
| const STUDENT_SUBMISSIONS_QUERY_KEY = (username: string) => ['student-submissions', username]; | const STUDENT_SUBMISSIONS_QUERY_KEY = (username: string) => ['student-submissions', username]; | ||||||
| const STUDENT_QUESTIONS_QUERY_KEY = (username: string, full: boolean) => ['student-questions', username, full]; | const STUDENT_QUESTIONS_QUERY_KEY = (username: string, full: boolean) => ['student-questions', username, full]; | ||||||
|  | const STUDENT_JOIN_REQUESTS_QUERY_KEY = (username: string) => ["student-join-requests", username]; | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| export function useStudentsQuery(full: MaybeRefOrGetter<boolean> = true) { | export function useStudentsQuery(full: MaybeRefOrGetter<boolean> = true) { | ||||||
|     return useQuery({ |     return useQuery({ | ||||||
|  | @ -100,5 +102,50 @@ export function useDeleteStudentMutation() { | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | export function useStudentJoinRequestsQuery(username: MaybeRefOrGetter<string | undefined>) { | ||||||
|  |     return useQuery({ | ||||||
|  |         queryKey: computed(() => STUDENT_JOIN_REQUESTS_QUERY_KEY(toValue(username)!)), | ||||||
|  |         queryFn: () => studentController.getJoinRequests(toValue(username)!), | ||||||
|  |         enabled: () => !!toValue(username), | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Mutation to create a join request for a class | ||||||
|  |  */ | ||||||
|  | export function useCreateJoinRequestMutation() { | ||||||
|  |     const queryClient = useQueryClient(); | ||||||
|  | 
 | ||||||
|  |     return useMutation({ | ||||||
|  |         mutationFn: ({ username, classId }: { username: string; classId: string }) => | ||||||
|  |             studentController.createJoinRequest(username, classId), | ||||||
|  |         onSuccess: (_, { username }) => { | ||||||
|  |             await queryClient.invalidateQueries({ queryKey: STUDENT_JOIN_REQUESTS_QUERY_KEY(username) }); | ||||||
|  |         }, | ||||||
|  |         onError: (err) => { | ||||||
|  |             alert("Create join request failed:", err); | ||||||
|  |         }, | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Mutation to delete a join request for a class | ||||||
|  |  */ | ||||||
|  | export function useDeleteJoinRequestMutation() { | ||||||
|  |     const queryClient = useQueryClient(); | ||||||
|  | 
 | ||||||
|  |     return useMutation({ | ||||||
|  |         mutationFn: ({ username, classId }: { username: string; classId: string }) => | ||||||
|  |             studentController.deleteJoinRequest(username, classId), | ||||||
|  |         onSuccess: (_, { username }) => { | ||||||
|  |             await queryClient.invalidateQueries({ queryKey: STUDENT_JOIN_REQUESTS_QUERY_KEY(username) }); | ||||||
|  |         }, | ||||||
|  |         onError: (err) => { | ||||||
|  |             alert("Delete join request failed:", err); | ||||||
|  |         }, | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Reference in a new issue
	
	 Gabriellvl
						Gabriellvl