diff --git a/frontend/src/queries/groups.ts b/frontend/src/queries/groups.ts index afb1fecb..8d235d8f 100644 --- a/frontend/src/queries/groups.ts +++ b/frontend/src/queries/groups.ts @@ -66,7 +66,7 @@ export function useGroupQuery( // TODO: find way to check if cid and an are not undefined. // depends on how this function is used. -export function useCreateClassMutation( +export function useCreateGroupMutation( classid: MaybeRefOrGetter, assignmentNumber: MaybeRefOrGetter, ): UseMutationReturnType { @@ -82,7 +82,7 @@ export function useCreateClassMutation( }); } -export function useDeleteClassMutation( +export function useDeleteGroupMutation( classid: MaybeRefOrGetter, assignmentNumber: MaybeRefOrGetter, ): UseMutationReturnType { @@ -91,7 +91,7 @@ export function useDeleteClassMutation( return useMutation({ mutationFn: async (id) => groupController.deleteGroup(cid!, an!, id), - onSuccess: async (_) => { + onSuccess: async () => { await queryClient.invalidateQueries({ queryKey: groupQueryKey(cid!, an!, gn!) }); await queryClient.invalidateQueries({ queryKey: groupsQueryKey(cid!, an!, true) }); @@ -106,7 +106,7 @@ export function useDeleteClassMutation( }); } -export function useUpdateClassMutation( +export function useUpdateGroupMutation( classid: MaybeRefOrGetter, assignmentNumber: MaybeRefOrGetter, ): UseMutationReturnType { diff --git a/frontend/src/queries/submissions.ts b/frontend/src/queries/submissions.ts index defa6c38..5c0d74c3 100644 --- a/frontend/src/queries/submissions.ts +++ b/frontend/src/queries/submissions.ts @@ -1,5 +1,6 @@ import { SubmissionController, type SubmissionResponse, type SubmissionsResponse } from "@/controllers/submissions"; -import { useQuery, type UseQueryReturnType } from "@tanstack/vue-query"; +import type { SubmissionDTO } from "@dwengo-1/common/interfaces/submission"; +import { useMutation, useQuery, useQueryClient, type UseMutationReturnType, type UseQueryReturnType } from "@tanstack/vue-query"; import { computed, toValue, type MaybeRefOrGetter } from "vue"; function submissionsQueryKey(classid: string, assignmentNumber: number, full: boolean) { @@ -63,4 +64,38 @@ export function useSubmissionQuery( queryFn: async () => new SubmissionController(cid!, an!, gn!).getByNumber(sn!), enabled: () => checkEnabled(cid, an, gn, sn), }); +} + +export function useCreateSubmissionMutation( + classid: MaybeRefOrGetter, + assignmentNumber: MaybeRefOrGetter, + groupNumber: MaybeRefOrGetter, +): UseMutationReturnType { + const queryClient = useQueryClient(); + const { cid, an, gn } = toValues(classid, assignmentNumber, groupNumber, 1, true); + + return useMutation({ + mutationFn: async (data) => new SubmissionController(cid!, an!, gn!).createSubmission(data), + onSuccess: async () => { + await queryClient.invalidateQueries({ queryKey: submissionsQueryKey(cid!, an!, true) }); + await queryClient.invalidateQueries({ queryKey: submissionsQueryKey(cid!, an!, false) }); + }, + }); +} + +export function useDeleteGroupMutation( + classid: MaybeRefOrGetter, + assignmentNumber: MaybeRefOrGetter, + groupNumber: MaybeRefOrGetter, +): UseMutationReturnType { + const queryClient = useQueryClient(); + const { cid, an, gn } = toValues(classid, assignmentNumber, groupNumber, 1, true); + + return useMutation({ + mutationFn: async (id) => new SubmissionController(cid!, an!, gn!).deleteSubmission(id), + onSuccess: async () => { + await queryClient.invalidateQueries({ queryKey: submissionsQueryKey(cid!, an!, true) }); + await queryClient.invalidateQueries({ queryKey: submissionsQueryKey(cid!, an!, false) }); + }, + }); } \ No newline at end of file