feat(frontend): eerste queries voor assignments
This commit is contained in:
parent
ce5e9cd342
commit
45cb020861
10 changed files with 560 additions and 218 deletions
|
@ -1,17 +1,55 @@
|
|||
import {useMutation, useQueryClient, type UseMutationReturnType} from "@tanstack/vue-query";
|
||||
import {AssignmentController, type AssignmentResponse} from "@/controllers/assignments.ts";
|
||||
import type {AssignmentDTO} from "@dwengo-1/common/interfaces/assignment";
|
||||
import {toValue} from "vue";
|
||||
import {computed, type MaybeRefOrGetter, toValue} from "vue";
|
||||
import {useQuery, type UseQueryReturnType} from "@tanstack/vue-query";
|
||||
import {AssignmentController, type AssignmentResponse, type AssignmentsResponse} from "@/controllers/assignments.ts";
|
||||
import type {SubmissionsResponse} from "@/controllers/submissions.ts";
|
||||
|
||||
export function useCreateAssignmentMutation(classId: string): UseMutationReturnType<AssignmentResponse, Error, AssignmentDTO, unknown> {
|
||||
const queryClient = useQueryClient();
|
||||
export function useAssignmentsQuery(classId: MaybeRefOrGetter<string | undefined>, full: MaybeRefOrGetter<boolean> = true): UseQueryReturnType<AssignmentsResponse, Error> {
|
||||
const resolvedClassId = toValue(classId) as string;
|
||||
const resolvedFull = toValue(full);
|
||||
|
||||
const assignmentController = new AssignmentController(toValue(classId));
|
||||
|
||||
return useMutation({
|
||||
mutationFn: async (data) => assignmentController.createAssignment(data),
|
||||
onSuccess: async () => {
|
||||
await queryClient.invalidateQueries({queryKey: ["assignments"]});
|
||||
},
|
||||
});
|
||||
const assignmentController = new AssignmentController(resolvedClassId);
|
||||
return useQuery({
|
||||
queryKey: computed(() => [
|
||||
'assignments',
|
||||
resolvedClassId,
|
||||
resolvedFull,
|
||||
]),
|
||||
queryFn: async () => assignmentController.getAll(resolvedFull),
|
||||
enabled: () => Boolean(resolvedClassId)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export function useAssignmentQuery(classId: MaybeRefOrGetter<string | undefined>, num: MaybeRefOrGetter<number>): UseQueryReturnType<AssignmentResponse, Error> {
|
||||
const resolvedClassId = toValue(classId) as string;
|
||||
const resolvedNum = toValue(num);
|
||||
|
||||
const assignmentController = new AssignmentController(resolvedClassId);
|
||||
return useQuery({
|
||||
queryKey: computed(() => [
|
||||
'assignment',
|
||||
resolvedClassId,
|
||||
resolvedNum,
|
||||
]),
|
||||
queryFn: async () => assignmentController.getByNumber(resolvedNum),
|
||||
enabled: () => Boolean(resolvedClassId)
|
||||
})
|
||||
}
|
||||
|
||||
export function useSubmissionsQuery(classId: MaybeRefOrGetter<string | undefined>, assignmentNum: MaybeRefOrGetter<number>, full: MaybeRefOrGetter<boolean>): UseQueryReturnType<SubmissionsResponse, Error> {
|
||||
const resolvedClassId = toValue(classId) as string;
|
||||
const resolvedNum = toValue(assignmentNum);
|
||||
const resolvedFull = toValue(full);
|
||||
|
||||
const assignmentController = new AssignmentController(resolvedClassId);
|
||||
return useQuery({
|
||||
queryKey: computed(() => [
|
||||
'submissions',
|
||||
resolvedClassId,
|
||||
resolvedNum,
|
||||
resolvedFull
|
||||
]),
|
||||
queryFn: async () => assignmentController.getSubmissions(resolvedNum, resolvedFull),
|
||||
enabled: () => Boolean(resolvedClassId)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import {useQuery, type UseQueryReturnType} from "@tanstack/vue-query";
|
||||
import {computed, type MaybeRefOrGetter, toValue} from "vue";
|
||||
import type {StudentsResponse} from "@/controllers/students.ts";
|
||||
import {getClassController} from "@/controllers/controllers.ts";
|
||||
import {computed, type MaybeRefOrGetter, toValue} from "vue";
|
||||
import {useQuery, type UseQueryReturnType} from "@tanstack/vue-query";
|
||||
import type {StudentsResponse} from "@/controllers/students.ts";
|
||||
|
||||
const classController = getClassController();
|
||||
|
||||
|
@ -9,7 +9,7 @@ function classStudentsQueryKey(classId: string, full: boolean): [string, string,
|
|||
return ["class-students", classId, full];
|
||||
}
|
||||
|
||||
|
||||
//TODO: delete and use the one in classes.ts
|
||||
export function useClassStudentsQuery(
|
||||
classId: MaybeRefOrGetter<string | undefined>,
|
||||
full: MaybeRefOrGetter<boolean> = true,
|
Loading…
Add table
Add a link
Reference in a new issue