feat: group queries voor alle GETs
This commit is contained in:
parent
77ca390bd2
commit
5c9314aa59
2 changed files with 79 additions and 1 deletions
|
@ -16,11 +16,15 @@ export class GroupController extends BaseController {
|
|||
super(`class/${classid}/assignments/${assignmentNumber}/groups`);
|
||||
}
|
||||
|
||||
update(classid: string, assignmentNumber: number) {
|
||||
this.basePath = `class/${classid}/assignments/${assignmentNumber}/groups`;
|
||||
}
|
||||
|
||||
async getAll(full = true): Promise<GroupsResponse> {
|
||||
return this.get<GroupsResponse>(`/`, { full });
|
||||
}
|
||||
|
||||
async getByNumber(num: number): Promise<GroupResponse> {
|
||||
async getByNumber(num: number | string): Promise<GroupResponse> {
|
||||
return this.get<GroupResponse>(`/${num}`);
|
||||
}
|
||||
|
||||
|
|
74
frontend/src/queries/groups.ts
Normal file
74
frontend/src/queries/groups.ts
Normal file
|
@ -0,0 +1,74 @@
|
|||
import type { ClassesResponse } from "@/controllers/classes";
|
||||
import { GroupController, type GroupResponse, type GroupsResponse } from "@/controllers/groups";
|
||||
import type { QuestionsResponse } from "@/controllers/questions";
|
||||
import type { SubmissionsResponse } from "@/controllers/submissions";
|
||||
import { useQuery, type UseQueryReturnType } from "@tanstack/vue-query";
|
||||
import { computed, toValue, type MaybeRefOrGetter } from "vue";
|
||||
|
||||
const groupController = new GroupController('', 0);
|
||||
|
||||
function groupsQueryKey(classid: string, assignmentNumber: number) {
|
||||
return [ "groups", classid, assignmentNumber ];
|
||||
}
|
||||
function groupQueryKey(classid: string, assignmentNumber: number, groupNumber: number) {
|
||||
return [ "group", classid, assignmentNumber, groupNumber ];
|
||||
}
|
||||
function groupSubmissionsQueryKey(classid: string, assignmentNumber: number, groupNumber: number) {
|
||||
return [ "group-submissions", classid, assignmentNumber, groupNumber ];
|
||||
}
|
||||
|
||||
export function useGroupsQuery(
|
||||
classid: string,
|
||||
assignmentNumber: number,
|
||||
): UseQueryReturnType<GroupsResponse, Error> {
|
||||
groupController.update(classid, assignmentNumber);
|
||||
|
||||
return useQuery({
|
||||
queryKey: computed(() => (groupsQueryKey(classid, assignmentNumber))),
|
||||
queryFn: async () => groupController.getAll(),
|
||||
});
|
||||
}
|
||||
|
||||
export function useGroupQuery(
|
||||
classid: string,
|
||||
assignmentNumber: number,
|
||||
groupNumber: MaybeRefOrGetter<number | undefined>,
|
||||
): UseQueryReturnType<GroupResponse, Error> {
|
||||
groupController.update(classid, assignmentNumber);
|
||||
|
||||
return useQuery({
|
||||
queryKey: computed(() => groupQueryKey(classid, assignmentNumber, toValue(groupNumber)!)),
|
||||
queryFn: async () => groupController.getByNumber(toValue(groupNumber)!),
|
||||
enabled: () => !isNaN(Number(toValue(groupNumber))),
|
||||
});
|
||||
}
|
||||
|
||||
export function useGroupSubmissionsQuery(
|
||||
classid: string,
|
||||
assignmentNumber: number,
|
||||
groupNumber: MaybeRefOrGetter<number | undefined>,
|
||||
full: MaybeRefOrGetter<boolean> = true,
|
||||
): UseQueryReturnType<SubmissionsResponse, Error> {
|
||||
groupController.update(classid, assignmentNumber);
|
||||
|
||||
return useQuery({
|
||||
queryKey: computed(() => groupSubmissionsQueryKey(classid, assignmentNumber, toValue(groupNumber)!)),
|
||||
queryFn: async () => groupController.getSubmissions(toValue(groupNumber)!, toValue(full)!),
|
||||
enabled: () => !isNaN(Number(toValue(groupNumber))),
|
||||
});
|
||||
}
|
||||
|
||||
export function useGroupQuestionsQuery(
|
||||
classid: string,
|
||||
assignmentNumber: number,
|
||||
groupNumber: MaybeRefOrGetter<number | undefined>,
|
||||
full: MaybeRefOrGetter<boolean> = true,
|
||||
): UseQueryReturnType<QuestionsResponse, Error> {
|
||||
groupController.update(classid, assignmentNumber);
|
||||
|
||||
return useQuery({
|
||||
queryKey: computed(() => groupSubmissionsQueryKey(classid, assignmentNumber, toValue(groupNumber)!)),
|
||||
queryFn: async () => groupController.getSubmissions(toValue(groupNumber)!, toValue(full)!),
|
||||
enabled: () => !isNaN(Number(toValue(groupNumber))),
|
||||
});
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue