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 type { StudentsResponse } from "@/controllers/students";
 | 
			
		||||
import { useQuery, type UseQueryReturnType } from "@tanstack/vue-query";
 | 
			
		||||
import { computed, toValue, type MaybeRefOrGetter } from "vue";
 | 
			
		||||
 | 
			
		||||
const classController = new ClassController();
 | 
			
		||||
 | 
			
		||||
function classesQueryKey() {
 | 
			
		||||
    return ["students"];
 | 
			
		||||
    return ["classes"];
 | 
			
		||||
}
 | 
			
		||||
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> {
 | 
			
		||||
    return useQuery({
 | 
			
		||||
| 
						 | 
				
			
			@ -27,4 +36,37 @@ export function useClassQuery(
 | 
			
		|||
        queryFn: async () => classController.getById(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