fix: extra invalidate queries bij delete en put
This commit is contained in:
parent
075616b67b
commit
dadde1651b
4 changed files with 21 additions and 28 deletions
6
common/src/interfaces/teacher.d.ts
vendored
6
common/src/interfaces/teacher.d.ts
vendored
|
@ -3,10 +3,4 @@ export interface TeacherDTO {
|
||||||
username: string;
|
username: string;
|
||||||
firstName: string;
|
firstName: string;
|
||||||
lastName: string;
|
lastName: string;
|
||||||
endpoints?: {
|
|
||||||
classes: string;
|
|
||||||
questions: string;
|
|
||||||
invitations: string;
|
|
||||||
groups: string;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ import type {ClassesResponse} from "@/controllers/classes.ts";
|
||||||
import type {TeacherDTO} from "dwengo-1-common/src/interfaces/teacher";
|
import type {TeacherDTO} from "dwengo-1-common/src/interfaces/teacher";
|
||||||
|
|
||||||
export interface TeachersResponse { teachers: TeacherDTO[] | string[] }
|
export interface TeachersResponse { teachers: TeacherDTO[] | string[] }
|
||||||
export interface TeacherResponse { teacher: TeacherDTO | string }
|
export interface TeacherResponse { teacher: TeacherDTO }
|
||||||
|
|
||||||
|
|
||||||
export class TeacherController extends BaseController {
|
export class TeacherController extends BaseController {
|
||||||
|
|
|
@ -45,10 +45,10 @@ function STUDENT_SUBMISSIONS_QUERY_KEY(username: string): [string, string] {
|
||||||
function STUDENT_QUESTIONS_QUERY_KEY(username: string, full: boolean): [string, string, boolean] {
|
function STUDENT_QUESTIONS_QUERY_KEY(username: string, full: boolean): [string, string, boolean] {
|
||||||
return ["student-questions", username, full];
|
return ["student-questions", username, full];
|
||||||
}
|
}
|
||||||
function STUDENT_JOIN_REQUESTS_QUERY_KEY(username: string): [string, string] {
|
export function STUDENT_JOIN_REQUESTS_QUERY_KEY(username: string): [string, string] {
|
||||||
return ["student-join-requests", username];
|
return ["student-join-requests", username];
|
||||||
}
|
}
|
||||||
function STUDENT_JOIN_REQUEST_QUERY_KEY(username: string, classId: string): [string, string, string] {
|
export function STUDENT_JOIN_REQUEST_QUERY_KEY(username: string, classId: string): [string, string, string] {
|
||||||
return ["student-join-request", username, classId];
|
return ["student-join-request", username, classId];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,8 +172,9 @@ export function useDeleteStudentMutation(): UseMutationReturnType<
|
||||||
|
|
||||||
return useMutation({
|
return useMutation({
|
||||||
mutationFn: async (username) => studentController.deleteStudent(username),
|
mutationFn: async (username) => studentController.deleteStudent(username),
|
||||||
onSuccess: async () => {
|
onSuccess: async (deletedUser) => {
|
||||||
await queryClient.invalidateQueries({ queryKey: ["students"] });
|
await queryClient.invalidateQueries({ queryKey: ["students"] });
|
||||||
|
await queryClient.invalidateQueries({ queryKey: STUDENT_QUERY_KEY(deletedUser.student.username) });
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -188,8 +189,8 @@ export function useCreateJoinRequestMutation(): UseMutationReturnType<
|
||||||
|
|
||||||
return useMutation({
|
return useMutation({
|
||||||
mutationFn: async ({ username, classId }) => studentController.createJoinRequest(username, classId),
|
mutationFn: async ({ username, classId }) => studentController.createJoinRequest(username, classId),
|
||||||
onSuccess: async ({ username }) => {
|
onSuccess: async (newJoinRequest) => {
|
||||||
await queryClient.invalidateQueries({ queryKey: STUDENT_JOIN_REQUESTS_QUERY_KEY(username) });
|
await queryClient.invalidateQueries({ queryKey: STUDENT_JOIN_REQUESTS_QUERY_KEY(newJoinRequest.request.requester) });
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -204,8 +205,11 @@ export function useDeleteJoinRequestMutation(): UseMutationReturnType<
|
||||||
|
|
||||||
return useMutation({
|
return useMutation({
|
||||||
mutationFn: async ({ username, classId }) => studentController.deleteJoinRequest(username, classId),
|
mutationFn: async ({ username, classId }) => studentController.deleteJoinRequest(username, classId),
|
||||||
onSuccess: async ({ username }) => {
|
onSuccess: async (deletedJoinRequest) => {
|
||||||
|
const username = deletedJoinRequest.request.requester;
|
||||||
|
const classId = deletedJoinRequest.request.class;
|
||||||
await queryClient.invalidateQueries({ queryKey: STUDENT_JOIN_REQUESTS_QUERY_KEY(username) });
|
await queryClient.invalidateQueries({ queryKey: STUDENT_JOIN_REQUESTS_QUERY_KEY(username) });
|
||||||
|
await queryClient.invalidateQueries({ queryKey: STUDENT_JOIN_REQUEST_QUERY_KEY(username, classId) });
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,17 +8,11 @@ import {
|
||||||
UseQueryReturnType,
|
UseQueryReturnType,
|
||||||
} from "@tanstack/vue-query";
|
} from "@tanstack/vue-query";
|
||||||
import {TeacherController, type TeacherResponse, type TeachersResponse} from "@/controllers/teachers.ts";
|
import {TeacherController, type TeacherResponse, type TeachersResponse} from "@/controllers/teachers.ts";
|
||||||
import type {
|
|
||||||
TeacherDTO,
|
|
||||||
ClassDTO,
|
|
||||||
StudentDTO,
|
|
||||||
QuestionDTO,
|
|
||||||
QuestionId,
|
|
||||||
JoinRequestDTO,
|
|
||||||
} from "dwengo-1-common/src/interfaces";
|
|
||||||
import type {ClassesResponse} from "@/controllers/classes.ts";
|
import type {ClassesResponse} from "@/controllers/classes.ts";
|
||||||
import type {JoinRequestResponse, JoinRequestsResponse, StudentsResponse} from "@/controllers/students.ts";
|
import type {JoinRequestResponse, JoinRequestsResponse, StudentsResponse} from "@/controllers/students.ts";
|
||||||
import type {QuestionsResponse} from "@/controllers/questions.ts"; // pas dit aan naar jouw pad indien nodig
|
import type {QuestionsResponse} from "@/controllers/questions.ts";
|
||||||
|
import type {TeacherDTO} from "dwengo-1-common/src/interfaces/teacher";
|
||||||
|
import {STUDENT_JOIN_REQUEST_QUERY_KEY, STUDENT_JOIN_REQUESTS_QUERY_KEY} from "@/queries/students.ts";
|
||||||
|
|
||||||
const teacherController = new TeacherController();
|
const teacherController = new TeacherController();
|
||||||
|
|
||||||
|
@ -133,8 +127,9 @@ export function useDeleteTeacherMutation(): UseMutationReturnType<
|
||||||
|
|
||||||
return useMutation({
|
return useMutation({
|
||||||
mutationFn: (username: string) => teacherController.deleteTeacher(username),
|
mutationFn: (username: string) => teacherController.deleteTeacher(username),
|
||||||
onSuccess: async () => {
|
onSuccess: async (deletedTeacher) => {
|
||||||
await queryClient.invalidateQueries({ queryKey: ["teachers"] });
|
await queryClient.invalidateQueries({ queryKey: ["teachers"] });
|
||||||
|
await queryClient.invalidateQueries({ queryKey: TEACHER_QUERY_KEY(deletedTeacher.teacher.username) });
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -150,11 +145,11 @@ export function useUpdateJoinRequestMutation(): UseMutationReturnType<
|
||||||
return useMutation({
|
return useMutation({
|
||||||
mutationFn: ({ teacherUsername, classId, studentUsername, accepted }) =>
|
mutationFn: ({ teacherUsername, classId, studentUsername, accepted }) =>
|
||||||
teacherController.updateStudentJoinRequest(teacherUsername, classId, studentUsername, accepted),
|
teacherController.updateStudentJoinRequest(teacherUsername, classId, studentUsername, accepted),
|
||||||
onSuccess: async (_, { teacherUsername, classId }) => {
|
onSuccess: async (deletedJoinRequest) => {
|
||||||
await queryClient.invalidateQueries({
|
const username = deletedJoinRequest.request.requester;
|
||||||
queryKey: JOIN_REQUESTS_QUERY_KEY(teacherUsername, classId),
|
const classId = deletedJoinRequest.request.class;
|
||||||
// TODO
|
await queryClient.invalidateQueries({ queryKey: STUDENT_JOIN_REQUESTS_QUERY_KEY(username) });
|
||||||
});
|
await queryClient.invalidateQueries({ queryKey: STUDENT_JOIN_REQUEST_QUERY_KEY(username, classId) });
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue