(#16) delete lesson
All checks were successful
platform/bro/pipeline/pr-master This commit looks good
platform/bro/pipeline/head This commit looks good

This commit is contained in:
2024-04-01 23:20:09 +03:00
parent c68cea7fa6
commit 032cdaaa12
3 changed files with 216 additions and 81 deletions

View File

@@ -1,80 +1,112 @@
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
import { getConfigValue } from "@ijl/cli";
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'
import { getConfigValue } from '@ijl/cli'
import { keycloak } from "../kc";
import { AccessCode, BaseResponse, Course, Lesson, User, UserData } from "../model";
import { keycloak } from '../kc'
import {
AccessCode,
BaseResponse,
Course,
Lesson,
User,
UserData,
} from '../model'
export const api = createApi({
reducerPath: "auth",
reducerPath: 'auth',
baseQuery: fetchBaseQuery({
baseUrl: getConfigValue("journal.back.url"),
fetchFn: async (input: RequestInfo | URL, init?: RequestInit | undefined) => {
const response = await fetch(input, init);
baseUrl: getConfigValue('journal.back.url'),
fetchFn: async (
input: RequestInfo | URL,
init?: RequestInit | undefined,
) => {
const response = await fetch(input, init)
if (response.status === 403) keycloak.login()
return response;
return response
},
headers: {
"Content-Type": "application/json;charset=utf-8",
'Content-Type': 'application/json;charset=utf-8',
},
prepareHeaders: (headers) => {
headers.set('Authorization', `Bearer ${keycloak.token}`)
}
},
}),
tagTypes: ['LessonList', 'CourseList'],
endpoints: (builder) => ({
coursesList: builder.query<BaseResponse<Course[]>, void>({
query: () => '/course/list',
providesTags: ['CourseList']
providesTags: ['CourseList'],
}),
createUpdateCourse: builder.mutation<BaseResponse<Course>, Partial<Course> & Pick<Course, 'name'>>({
createUpdateCourse: builder.mutation<
BaseResponse<Course>,
Partial<Course> & Pick<Course, 'name'>
>({
query: (course) => ({
url: '/course',
method: 'POST',
body: course,
}),
invalidatesTags: ['CourseList']
invalidatesTags: ['CourseList'],
}),
courseAllStudents: builder.query<BaseResponse<User[]>, string>({
query: (courseId) => `/course/students/${courseId}`
query: (courseId) => `/course/students/${courseId}`,
}),
manualAddStudent: builder.mutation<BaseResponse<void>, { lessonId: string, user: User }>({
query: ({lessonId, user}) => ({
manualAddStudent: builder.mutation<
BaseResponse<void>,
{ lessonId: string; user: User }
>({
query: ({ lessonId, user }) => ({
url: `/lesson/add-student/${lessonId}`,
method: 'POST',
body: user
})
body: user,
}),
}),
lessonList: builder.query<BaseResponse<Lesson[]>, string>({
query: (courseId) => `/lesson/list/${courseId}`,
providesTags: ['LessonList']
providesTags: ['LessonList'],
}),
createLesson: builder.mutation<BaseResponse<Lesson>, Pick<Lesson, 'name' | 'date'> & { courseId: string }>({
query: ({ name, courseId, date }) => ({
createLesson: builder.mutation<
BaseResponse<Lesson>,
Partial<Lesson> & Pick<Lesson, 'name' | 'date'> & { courseId: string }
>({
query: (data) => ({
url: '/lesson',
method: 'POST',
body: { name, courseId, date },
body: data,
}),
invalidatesTags: ['LessonList']
invalidatesTags: ['LessonList'],
}),
deleteLesson: builder.mutation<null, string>({
query: (lessonId) => ({
url: `/lesson/${lessonId}`,
method: 'DELETE',
}),
invalidatesTags: ['LessonList'],
}),
lessonById: builder.query<BaseResponse<Lesson>, string>({
query: (lessonId: string) => `/lesson/${lessonId}`
query: (lessonId: string) => `/lesson/${lessonId}`,
}),
createAccessCode: builder.query<BaseResponse<AccessCode>, { lessonId: string }>({
createAccessCode: builder.query<
BaseResponse<AccessCode>,
{ lessonId: string }
>({
query: ({ lessonId }) => ({
url: '/lesson/access-code',
method: 'POST',
body: { lessonId },
})
}),
}),
getAccess: builder.query<BaseResponse<{ user: UserData, accessCode: AccessCode }>, { accessCode: string }>({
getAccess: builder.query<
BaseResponse<{ user: UserData; accessCode: AccessCode }>,
{ accessCode: string }
>({
query: ({ accessCode }) => ({
url: `/lesson/access-code/${accessCode}`,
method: 'GET',
})
})
}),
}),
}),
});
})