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();
|
const classController = new ClassController();
|
||||||
|
|
||||||
/* Query cache keys */
|
/* Query cache keys */
|
||||||
function classesQueryKey() {
|
function classesQueryKey(full: boolean) {
|
||||||
return ["classes"];
|
return ["classes", full];
|
||||||
}
|
}
|
||||||
function classQueryKey(classid: string) {
|
function classQueryKey(classid: string) {
|
||||||
return ["class", classid];
|
return ["class", classid];
|
||||||
}
|
}
|
||||||
function classStudentsKey(classid: string) {
|
function classStudentsKey(classid: string, full: boolean) {
|
||||||
return ["class-students", classid];
|
return ["class-students", classid, full];
|
||||||
}
|
}
|
||||||
function classTeachersKey(classid: string) {
|
function classTeachersKey(classid: string, full: boolean) {
|
||||||
return ["class-teachers", classid];
|
return ["class-teachers", classid, full];
|
||||||
}
|
}
|
||||||
function classTeacherInvitationsKey(classid: string) {
|
function classTeacherInvitationsKey(classid: string, full: boolean) {
|
||||||
return ["class-teacher-invitations", classid];
|
return ["class-teacher-invitations", classid, full];
|
||||||
}
|
}
|
||||||
function classAssignmentsKey(classid: string) {
|
function classAssignmentsKey(classid: string, full: boolean) {
|
||||||
return ["class-assignments", classid];
|
return ["class-assignments", classid];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,16 +30,18 @@ function classAssignmentsKey(classid: string) {
|
||||||
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) });
|
||||||
await queryClient.invalidateQueries({ queryKey: classStudentsKey(classid) });
|
for (let v of [true, false]) {
|
||||||
await queryClient.invalidateQueries({ queryKey: classTeachersKey(classid) });
|
await queryClient.invalidateQueries({ queryKey: classStudentsKey(classid, v) });
|
||||||
await queryClient.invalidateQueries({ queryKey: classAssignmentsKey(classid) });
|
await queryClient.invalidateQueries({ queryKey: classTeachersKey(classid, v) });
|
||||||
await queryClient.invalidateQueries({ queryKey: classTeacherInvitationsKey(classid) });
|
await queryClient.invalidateQueries({ queryKey: classAssignmentsKey(classid, v) });
|
||||||
|
await queryClient.invalidateQueries({ queryKey: classTeacherInvitationsKey(classid, v) });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Queries */
|
/* 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(toValue(full)))),
|
||||||
queryFn: async () => classController.getAll(toValue(full)),
|
queryFn: async () => classController.getAll(toValue(full)),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -60,7 +62,8 @@ export function useCreateClassMutation(): UseMutationReturnType<ClassResponse, E
|
||||||
return useMutation({
|
return useMutation({
|
||||||
mutationFn: async (data) => classController.createClass(data),
|
mutationFn: async (data) => classController.createClass(data),
|
||||||
onSuccess: async () => {
|
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
|
full: MaybeRefOrGetter<boolean> = true
|
||||||
): UseQueryReturnType<StudentsResponse, Error> {
|
): UseQueryReturnType<StudentsResponse, Error> {
|
||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: computed(() => classStudentsKey(toValue(id)!)),
|
queryKey: computed(() => classStudentsKey(toValue(id)!, toValue(full))),
|
||||||
queryFn: async () => classController.getStudents(toValue(id)!, toValue(full)!),
|
queryFn: async () => classController.getStudents(toValue(id)!, toValue(full)!),
|
||||||
enabled: () => Boolean(toValue(id)),
|
enabled: () => Boolean(toValue(id)),
|
||||||
})
|
})
|
||||||
|
@ -105,7 +108,8 @@ export function useClassAddStudentMutation(): UseMutationReturnType<ClassRespons
|
||||||
mutationFn: async ({ id, username }) => classController.addStudent(id, username),
|
mutationFn: async ({ id, username }) => classController.addStudent(id, username),
|
||||||
onSuccess: async (data) => {
|
onSuccess: async (data) => {
|
||||||
await queryClient.invalidateQueries({ queryKey: classQueryKey(data.class.id) });
|
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),
|
mutationFn: async ({ id, username }) => classController.deleteStudent(id, username),
|
||||||
onSuccess: async (data) => {
|
onSuccess: async (data) => {
|
||||||
await queryClient.invalidateQueries({ queryKey: classQueryKey(data.class.id) });
|
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
|
full: MaybeRefOrGetter<boolean> = true
|
||||||
): UseQueryReturnType<StudentsResponse, Error> {
|
): UseQueryReturnType<StudentsResponse, Error> {
|
||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: computed(() => classTeachersKey(toValue(id)!)),
|
queryKey: computed(() => classTeachersKey(toValue(id)!, toValue(full))),
|
||||||
queryFn: async () => classController.getTeachers(toValue(id)!, toValue(full)!),
|
queryFn: async () => classController.getTeachers(toValue(id)!, toValue(full)!),
|
||||||
enabled: () => Boolean(toValue(id)),
|
enabled: () => Boolean(toValue(id)),
|
||||||
});
|
});
|
||||||
|
@ -140,7 +145,8 @@ export function useClassAddTeacherMutation(): UseMutationReturnType<ClassRespons
|
||||||
mutationFn: async ({ id, username }) => classController.addTeacher(id, username),
|
mutationFn: async ({ id, username }) => classController.addTeacher(id, username),
|
||||||
onSuccess: async (data) => {
|
onSuccess: async (data) => {
|
||||||
await queryClient.invalidateQueries({ queryKey: classQueryKey(data.class.id) });
|
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),
|
mutationFn: async ({ id, username }) => classController.deleteTeacher(id, username),
|
||||||
onSuccess: async (data) => {
|
onSuccess: async (data) => {
|
||||||
await queryClient.invalidateQueries({ queryKey: classQueryKey(data.class.id) });
|
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
|
full: MaybeRefOrGetter<boolean> = true
|
||||||
): UseQueryReturnType<StudentsResponse, Error> {
|
): UseQueryReturnType<StudentsResponse, Error> {
|
||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: computed(() => classTeacherInvitationsKey(toValue(id)!)),
|
queryKey: computed(() => classTeacherInvitationsKey(toValue(id)!, toValue(full))),
|
||||||
queryFn: async () => classController.getTeacherInvitations(toValue(id)!, toValue(full)!),
|
queryFn: async () => classController.getTeacherInvitations(toValue(id)!, toValue(full)!),
|
||||||
enabled: () => Boolean(toValue(id)),
|
enabled: () => Boolean(toValue(id)),
|
||||||
});
|
});
|
||||||
|
@ -173,7 +180,7 @@ export function useClassAssignmentsQuery(
|
||||||
full: MaybeRefOrGetter<boolean> = true
|
full: MaybeRefOrGetter<boolean> = true
|
||||||
): UseQueryReturnType<StudentsResponse, Error> {
|
): UseQueryReturnType<StudentsResponse, Error> {
|
||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: computed(() => classAssignmentsKey(toValue(id)!)),
|
queryKey: computed(() => classAssignmentsKey(toValue(id)!, toValue(full))),
|
||||||
queryFn: async () => classController.getAssignments(toValue(id)!, toValue(full)!),
|
queryFn: async () => classController.getAssignments(toValue(id)!, toValue(full)!),
|
||||||
enabled: () => Boolean(toValue(id)),
|
enabled: () => Boolean(toValue(id)),
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue