feat: class queries students, teachers, teacher invitations GET
This commit is contained in:
		
							parent
							
								
									1c99b03554
								
							
						
					
					
						commit
						c05ad9a702
					
				
					 1 changed files with 45 additions and 3 deletions
				
			
		|  | @ -1,16 +1,25 @@ | ||||||
| import { ClassController, type ClassesResponse, type ClassResponse } from "@/controllers/classes"; | import { ClassController, type ClassesResponse, type ClassResponse } from "@/controllers/classes"; | ||||||
|  | import type { StudentsResponse } from "@/controllers/students"; | ||||||
| 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"; | ||||||
| 
 | 
 | ||||||
| const classController = new ClassController(); | const classController = new ClassController(); | ||||||
| 
 | 
 | ||||||
| function classesQueryKey() { | function classesQueryKey() { | ||||||
|     return ["students"]; |     return ["classes"]; | ||||||
| } | } | ||||||
| function classQueryKey(classid: string) { | function classQueryKey(classid: string) { | ||||||
|     return ["student", classid]; |     return ["class", classid]; | ||||||
|  | } | ||||||
|  | function classStudentsKey(classid: string) { | ||||||
|  |     return ["class-students", classid]; | ||||||
|  | } | ||||||
|  | function classTeachersKey(classid: string) { | ||||||
|  |     return ["class-teachers", classid]; | ||||||
|  | } | ||||||
|  | function classTeacherInvitationsKey(classid: string) { | ||||||
|  |     return ["class-teacher-invitations", classid]; | ||||||
| } | } | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| export function useClassesQuery(full: MaybeRefOrGetter<boolean> = true): UseQueryReturnType<ClassesResponse, Error> { | export function useClassesQuery(full: MaybeRefOrGetter<boolean> = true): UseQueryReturnType<ClassesResponse, Error> { | ||||||
|     return useQuery({ |     return useQuery({ | ||||||
|  | @ -27,4 +36,37 @@ export function useClassQuery( | ||||||
|         queryFn: async () => classController.getById(toValue(id)!), |         queryFn: async () => classController.getById(toValue(id)!), | ||||||
|         enabled: () => Boolean(toValue(id)), |         enabled: () => Boolean(toValue(id)), | ||||||
|     }); |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export function useClassStudentsQuery( | ||||||
|  |     id: MaybeRefOrGetter<string | undefined>, | ||||||
|  |     full: MaybeRefOrGetter<boolean> = true | ||||||
|  | ): UseQueryReturnType<StudentsResponse, Error> { | ||||||
|  |     return useQuery({ | ||||||
|  |         queryKey: computed(() => classStudentsKey(toValue(id)!)), | ||||||
|  |         queryFn: async () => classController.getStudents(toValue(id)!, toValue(full)!), | ||||||
|  |         enabled: () => Boolean(toValue(id)), | ||||||
|  |     }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export function useClassTeachersQuery( | ||||||
|  |     id: MaybeRefOrGetter<string | undefined>, | ||||||
|  |     full: MaybeRefOrGetter<boolean> = true | ||||||
|  | ): UseQueryReturnType<StudentsResponse, Error> { | ||||||
|  |     return useQuery({ | ||||||
|  |         queryKey: computed(() => classTeachersKey(toValue(id)!)), | ||||||
|  |         queryFn: async () => classController.getTeachers(toValue(id)!, toValue(full)!), | ||||||
|  |         enabled: () => Boolean(toValue(id)), | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export function useClassTeacherInvitationsQuery( | ||||||
|  |     id: MaybeRefOrGetter<string | undefined>, | ||||||
|  |     full: MaybeRefOrGetter<boolean> = true | ||||||
|  | ): UseQueryReturnType<StudentsResponse, Error> { | ||||||
|  |     return useQuery({ | ||||||
|  |         queryKey: computed(() => classTeacherInvitationsKey(toValue(id)!)), | ||||||
|  |         queryFn: async () => classController.getTeacherInvitations(toValue(id)!, toValue(full)!), | ||||||
|  |         enabled: () => Boolean(toValue(id)), | ||||||
|  |     }); | ||||||
| } | } | ||||||
		Reference in a new issue
	
	 Adriaan Jacquet
						Adriaan Jacquet