@sekolaos/shared-api 0.0.0-stage → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-2FTS6JMO.cjs +66 -0
- package/dist/chunk-2FTS6JMO.cjs.map +1 -0
- package/dist/chunk-3RS57C3E.cjs +90 -0
- package/dist/chunk-3RS57C3E.cjs.map +1 -0
- package/dist/chunk-4ECXVAIQ.cjs +50 -0
- package/dist/chunk-4ECXVAIQ.cjs.map +1 -0
- package/dist/chunk-4T52ABA5.js +63 -0
- package/dist/chunk-4T52ABA5.js.map +1 -0
- package/dist/chunk-6JGO2CUT.js +52 -0
- package/dist/chunk-6JGO2CUT.js.map +1 -0
- package/dist/chunk-6UCHRWSL.js +43 -0
- package/dist/chunk-6UCHRWSL.js.map +1 -0
- package/dist/chunk-AGNLUQKT.cjs +52 -0
- package/dist/chunk-AGNLUQKT.cjs.map +1 -0
- package/dist/chunk-AGPMQFZM.js +3 -0
- package/dist/chunk-AGPMQFZM.js.map +1 -0
- package/dist/chunk-ALMSFTRM.js +66 -0
- package/dist/chunk-ALMSFTRM.js.map +1 -0
- package/dist/chunk-AOBHBJ2G.cjs +89 -0
- package/dist/chunk-AOBHBJ2G.cjs.map +1 -0
- package/dist/chunk-BOASJ3VG.cjs +31 -0
- package/dist/chunk-BOASJ3VG.cjs.map +1 -0
- package/dist/chunk-CBTITLRR.js +43 -0
- package/dist/chunk-CBTITLRR.js.map +1 -0
- package/dist/chunk-CP46K2UB.cjs +74 -0
- package/dist/chunk-CP46K2UB.cjs.map +1 -0
- package/dist/chunk-DMEWJ56D.js +76 -0
- package/dist/chunk-DMEWJ56D.js.map +1 -0
- package/dist/chunk-DNNK2DMM.cjs +119 -0
- package/dist/chunk-DNNK2DMM.cjs.map +1 -0
- package/dist/chunk-GKKJMRCL.js +75 -0
- package/dist/chunk-GKKJMRCL.js.map +1 -0
- package/dist/chunk-GRBBLS5Y.js +77 -0
- package/dist/chunk-GRBBLS5Y.js.map +1 -0
- package/dist/chunk-GRXFSXG5.js +124 -0
- package/dist/chunk-GRXFSXG5.js.map +1 -0
- package/dist/chunk-GUJVCKEN.js +102 -0
- package/dist/chunk-GUJVCKEN.js.map +1 -0
- package/dist/chunk-LA7MRXWR.js +77 -0
- package/dist/chunk-LA7MRXWR.js.map +1 -0
- package/dist/chunk-MRFGUSN2.js +20 -0
- package/dist/chunk-MRFGUSN2.js.map +1 -0
- package/dist/chunk-NBVPN4KL.cjs +23 -0
- package/dist/chunk-NBVPN4KL.cjs.map +1 -0
- package/dist/chunk-NGFFI4XQ.cjs +61 -0
- package/dist/chunk-NGFFI4XQ.cjs.map +1 -0
- package/dist/chunk-OKSRSOYJ.cjs +88 -0
- package/dist/chunk-OKSRSOYJ.cjs.map +1 -0
- package/dist/chunk-PPK3HQOY.cjs +134 -0
- package/dist/chunk-PPK3HQOY.cjs.map +1 -0
- package/dist/chunk-QJSOSQ7M.cjs +23 -0
- package/dist/chunk-QJSOSQ7M.cjs.map +1 -0
- package/dist/chunk-R37QQTQS.cjs +64 -0
- package/dist/chunk-R37QQTQS.cjs.map +1 -0
- package/dist/chunk-R7ACSDOA.cjs +114 -0
- package/dist/chunk-R7ACSDOA.cjs.map +1 -0
- package/dist/chunk-S6QFHKCE.js +99 -0
- package/dist/chunk-S6QFHKCE.js.map +1 -0
- package/dist/chunk-TSLEYQKD.cjs +92 -0
- package/dist/chunk-TSLEYQKD.cjs.map +1 -0
- package/dist/chunk-WF63F6RJ.cjs +4 -0
- package/dist/chunk-WF63F6RJ.cjs.map +1 -0
- package/dist/chunk-XU5UEIBL.js +43 -0
- package/dist/chunk-XU5UEIBL.js.map +1 -0
- package/dist/chunk-XVG5Z6B5.cjs +79 -0
- package/dist/chunk-XVG5Z6B5.cjs.map +1 -0
- package/dist/chunk-YA2KONBB.js +20 -0
- package/dist/chunk-YA2KONBB.js.map +1 -0
- package/dist/chunk-YK7QFPBF.js +55 -0
- package/dist/chunk-YK7QFPBF.js.map +1 -0
- package/dist/chunk-YTF4Z7I4.js +26 -0
- package/dist/chunk-YTF4Z7I4.js.map +1 -0
- package/dist/client/index.cjs +62 -0
- package/dist/client/index.cjs.map +1 -0
- package/dist/client/index.d.cts +28 -0
- package/dist/client/index.d.ts +28 -0
- package/dist/client/index.js +5 -0
- package/dist/client/index.js.map +1 -0
- package/dist/index.cjs +620 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +39 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/keys/index.cjs +56 -0
- package/dist/keys/index.cjs.map +1 -0
- package/dist/keys/index.d.cts +64 -0
- package/dist/keys/index.d.ts +64 -0
- package/dist/keys/index.js +3 -0
- package/dist/keys/index.js.map +1 -0
- package/dist/modules/academic/index.cjs +44 -0
- package/dist/modules/academic/index.cjs.map +1 -0
- package/dist/modules/academic/index.d.cts +54 -0
- package/dist/modules/academic/index.d.ts +54 -0
- package/dist/modules/academic/index.js +7 -0
- package/dist/modules/academic/index.js.map +1 -0
- package/dist/modules/attendance/index.cjs +68 -0
- package/dist/modules/attendance/index.cjs.map +1 -0
- package/dist/modules/attendance/index.d.cts +135 -0
- package/dist/modules/attendance/index.d.ts +135 -0
- package/dist/modules/attendance/index.js +7 -0
- package/dist/modules/attendance/index.js.map +1 -0
- package/dist/modules/auth/index.cjs +52 -0
- package/dist/modules/auth/index.cjs.map +1 -0
- package/dist/modules/auth/index.d.cts +44 -0
- package/dist/modules/auth/index.d.ts +44 -0
- package/dist/modules/auth/index.js +7 -0
- package/dist/modules/auth/index.js.map +1 -0
- package/dist/modules/classroom/index.cjs +60 -0
- package/dist/modules/classroom/index.cjs.map +1 -0
- package/dist/modules/classroom/index.d.cts +84 -0
- package/dist/modules/classroom/index.d.ts +84 -0
- package/dist/modules/classroom/index.js +7 -0
- package/dist/modules/classroom/index.js.map +1 -0
- package/dist/modules/lead/index.cjs +44 -0
- package/dist/modules/lead/index.cjs.map +1 -0
- package/dist/modules/lead/index.d.cts +104 -0
- package/dist/modules/lead/index.d.ts +104 -0
- package/dist/modules/lead/index.js +7 -0
- package/dist/modules/lead/index.js.map +1 -0
- package/dist/modules/student/index.cjs +76 -0
- package/dist/modules/student/index.cjs.map +1 -0
- package/dist/modules/student/index.d.cts +125 -0
- package/dist/modules/student/index.d.ts +125 -0
- package/dist/modules/student/index.js +7 -0
- package/dist/modules/student/index.js.map +1 -0
- package/dist/modules/subject/index.cjs +36 -0
- package/dist/modules/subject/index.cjs.map +1 -0
- package/dist/modules/subject/index.d.cts +40 -0
- package/dist/modules/subject/index.d.ts +40 -0
- package/dist/modules/subject/index.js +7 -0
- package/dist/modules/subject/index.js.map +1 -0
- package/dist/modules/system/index.cjs +20 -0
- package/dist/modules/system/index.cjs.map +1 -0
- package/dist/modules/system/index.d.cts +14 -0
- package/dist/modules/system/index.d.ts +14 -0
- package/dist/modules/system/index.js +7 -0
- package/dist/modules/system/index.js.map +1 -0
- package/dist/modules/teaching-schedule/index.cjs +60 -0
- package/dist/modules/teaching-schedule/index.cjs.map +1 -0
- package/dist/modules/teaching-schedule/index.d.cts +97 -0
- package/dist/modules/teaching-schedule/index.d.ts +97 -0
- package/dist/modules/teaching-schedule/index.js +7 -0
- package/dist/modules/teaching-schedule/index.js.map +1 -0
- package/dist/modules/tenant/index.cjs +68 -0
- package/dist/modules/tenant/index.cjs.map +1 -0
- package/dist/modules/tenant/index.d.cts +113 -0
- package/dist/modules/tenant/index.d.ts +113 -0
- package/dist/modules/tenant/index.js +7 -0
- package/dist/modules/tenant/index.js.map +1 -0
- package/dist/modules/upload/index.cjs +27 -0
- package/dist/modules/upload/index.cjs.map +1 -0
- package/dist/modules/upload/index.d.cts +18 -0
- package/dist/modules/upload/index.d.ts +18 -0
- package/dist/modules/upload/index.js +6 -0
- package/dist/modules/upload/index.js.map +1 -0
- package/dist/modules/user/index.cjs +60 -0
- package/dist/modules/user/index.cjs.map +1 -0
- package/dist/modules/user/index.d.cts +117 -0
- package/dist/modules/user/index.d.ts +117 -0
- package/dist/modules/user/index.js +7 -0
- package/dist/modules/user/index.js.map +1 -0
- package/dist/provider.cjs +17 -0
- package/dist/provider.cjs.map +1 -0
- package/dist/provider.d.cts +15 -0
- package/dist/provider.d.ts +15 -0
- package/dist/provider.js +4 -0
- package/dist/provider.js.map +1 -0
- package/dist/types-BxV0BtVp.d.cts +89 -0
- package/dist/types-BxV0BtVp.d.ts +89 -0
- package/package.json +138 -6
- package/README.md +0 -3
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkQJSOSQ7M_cjs = require('./chunk-QJSOSQ7M.cjs');
|
|
4
|
+
var chunkNGFFI4XQ_cjs = require('./chunk-NGFFI4XQ.cjs');
|
|
5
|
+
var chunkXVG5Z6B5_cjs = require('./chunk-XVG5Z6B5.cjs');
|
|
6
|
+
var reactQuery = require('@tanstack/react-query');
|
|
7
|
+
|
|
8
|
+
var ENDPOINT = chunkQJSOSQ7M_cjs.API_ENDPOINTS.classrooms;
|
|
9
|
+
async function listClassrooms(params) {
|
|
10
|
+
return chunkNGFFI4XQ_cjs.getData(ENDPOINT, { params });
|
|
11
|
+
}
|
|
12
|
+
async function getClassroom(id) {
|
|
13
|
+
return chunkNGFFI4XQ_cjs.getData(`${ENDPOINT}/${id}`);
|
|
14
|
+
}
|
|
15
|
+
async function createClassroom(payload) {
|
|
16
|
+
return chunkNGFFI4XQ_cjs.postData(ENDPOINT, payload);
|
|
17
|
+
}
|
|
18
|
+
async function updateClassroom(id, payload) {
|
|
19
|
+
return chunkNGFFI4XQ_cjs.putData(`${ENDPOINT}/${id}`, payload);
|
|
20
|
+
}
|
|
21
|
+
async function getClassroomStudents(id) {
|
|
22
|
+
return chunkNGFFI4XQ_cjs.getData(`${ENDPOINT}/${id}/students`);
|
|
23
|
+
}
|
|
24
|
+
async function promoteClassStudents(payload) {
|
|
25
|
+
await chunkNGFFI4XQ_cjs.postData(`${ENDPOINT}/promote`, payload);
|
|
26
|
+
}
|
|
27
|
+
function useClassrooms(params) {
|
|
28
|
+
return reactQuery.useQuery({
|
|
29
|
+
queryKey: chunkXVG5Z6B5_cjs.classroomKeys.list(params),
|
|
30
|
+
queryFn: () => listClassrooms(params)
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function useClassroom(id, options) {
|
|
34
|
+
return reactQuery.useQuery({
|
|
35
|
+
queryKey: chunkXVG5Z6B5_cjs.classroomKeys.detail(id),
|
|
36
|
+
queryFn: () => getClassroom(id),
|
|
37
|
+
enabled: options?.enabled ?? Boolean(id)
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function useClassroomStudents(id, options) {
|
|
41
|
+
return reactQuery.useQuery({
|
|
42
|
+
queryKey: chunkXVG5Z6B5_cjs.classroomKeys.students(id),
|
|
43
|
+
queryFn: () => getClassroomStudents(id),
|
|
44
|
+
enabled: options?.enabled ?? Boolean(id)
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function useCreateClassroom() {
|
|
48
|
+
const queryClient = reactQuery.useQueryClient();
|
|
49
|
+
return reactQuery.useMutation({
|
|
50
|
+
mutationFn: createClassroom,
|
|
51
|
+
onSuccess: async () => {
|
|
52
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.classroomKeys.all });
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function useUpdateClassroom() {
|
|
57
|
+
const queryClient = reactQuery.useQueryClient();
|
|
58
|
+
return reactQuery.useMutation({
|
|
59
|
+
mutationFn: ({ id, payload }) => updateClassroom(id, payload),
|
|
60
|
+
onSuccess: async (_data, variables) => {
|
|
61
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.classroomKeys.detail(variables.id) });
|
|
62
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.classroomKeys.all });
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function usePromoteClassStudents() {
|
|
67
|
+
const queryClient = reactQuery.useQueryClient();
|
|
68
|
+
return reactQuery.useMutation({
|
|
69
|
+
mutationFn: (payload) => promoteClassStudents(payload),
|
|
70
|
+
onSuccess: async () => {
|
|
71
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.classroomKeys.all });
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
exports.createClassroom = createClassroom;
|
|
77
|
+
exports.getClassroom = getClassroom;
|
|
78
|
+
exports.getClassroomStudents = getClassroomStudents;
|
|
79
|
+
exports.listClassrooms = listClassrooms;
|
|
80
|
+
exports.promoteClassStudents = promoteClassStudents;
|
|
81
|
+
exports.updateClassroom = updateClassroom;
|
|
82
|
+
exports.useClassroom = useClassroom;
|
|
83
|
+
exports.useClassroomStudents = useClassroomStudents;
|
|
84
|
+
exports.useClassrooms = useClassrooms;
|
|
85
|
+
exports.useCreateClassroom = useCreateClassroom;
|
|
86
|
+
exports.usePromoteClassStudents = usePromoteClassStudents;
|
|
87
|
+
exports.useUpdateClassroom = useUpdateClassroom;
|
|
88
|
+
//# sourceMappingURL=chunk-AOBHBJ2G.cjs.map
|
|
89
|
+
//# sourceMappingURL=chunk-AOBHBJ2G.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modules/classroom/classroom.api.ts"],"names":["API_ENDPOINTS","getData","postData","putData","useQuery","classroomKeys","useQueryClient","useMutation"],"mappings":"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","file":"chunk-AOBHBJ2G.cjs","sourcesContent":["import type {\r\n ClassRoom,\r\n ClassroomListQuery,\r\n CreateClassroomInput,\r\n PromoteClassStudentsInput,\r\n Student,\r\n UpdateClassroomInput,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport { classroomKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.classrooms;\r\n\r\nexport async function listClassrooms(params?: Partial<ClassroomListQuery>): Promise<ClassRoom[]> {\r\n return getData<ClassRoom[]>(ENDPOINT, { params });\r\n}\r\n\r\nexport async function getClassroom(id: string): Promise<ClassRoom> {\r\n return getData<ClassRoom>(`${ENDPOINT}/${id}`);\r\n}\r\n\r\nexport async function createClassroom(payload: CreateClassroomInput): Promise<ClassRoom> {\r\n return postData<ClassRoom, CreateClassroomInput>(ENDPOINT, payload);\r\n}\r\n\r\nexport async function updateClassroom(\r\n id: string,\r\n payload: UpdateClassroomInput\r\n): Promise<ClassRoom> {\r\n return putData<ClassRoom, UpdateClassroomInput>(`${ENDPOINT}/${id}`, payload);\r\n}\r\n\r\nexport async function getClassroomStudents(id: string): Promise<Student[]> {\r\n return getData<Student[]>(`${ENDPOINT}/${id}/students`);\r\n}\r\n\r\nexport async function promoteClassStudents(\r\n payload: PromoteClassStudentsInput\r\n): Promise<void> {\r\n await postData<void, PromoteClassStudentsInput>(`${ENDPOINT}/promote`, payload);\r\n}\r\n\r\nexport function useClassrooms(params?: Partial<ClassroomListQuery>) {\r\n return useQuery({\r\n queryKey: classroomKeys.list(params as Record<string, unknown> | undefined),\r\n queryFn: () => listClassrooms(params),\r\n });\r\n}\r\n\r\nexport function useClassroom(id: string, options?: { enabled?: boolean }) {\r\n return useQuery({\r\n queryKey: classroomKeys.detail(id),\r\n queryFn: () => getClassroom(id),\r\n enabled: options?.enabled ?? Boolean(id),\r\n });\r\n}\r\n\r\nexport function useClassroomStudents(id: string, options?: { enabled?: boolean }) {\r\n return useQuery({\r\n queryKey: classroomKeys.students(id),\r\n queryFn: () => getClassroomStudents(id),\r\n enabled: options?.enabled ?? Boolean(id),\r\n });\r\n}\r\n\r\nexport function useCreateClassroom() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createClassroom,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: classroomKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateClassroom() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({ id, payload }: { id: string; payload: UpdateClassroomInput }) =>\r\n updateClassroom(id, payload),\r\n onSuccess: async (_data, variables) => {\r\n await queryClient.invalidateQueries({ queryKey: classroomKeys.detail(variables.id) });\r\n await queryClient.invalidateQueries({ queryKey: classroomKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function usePromoteClassStudents() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: (payload: PromoteClassStudentsInput) => promoteClassStudents(payload),\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: classroomKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport type {\r\n ClassRoom,\r\n ClassroomListQuery,\r\n CreateClassroomInput,\r\n PromoteClassStudentsInput,\r\n Student,\r\n UpdateClassroomInput,\r\n};\r\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkQJSOSQ7M_cjs = require('./chunk-QJSOSQ7M.cjs');
|
|
4
|
+
var chunkNGFFI4XQ_cjs = require('./chunk-NGFFI4XQ.cjs');
|
|
5
|
+
var reactQuery = require('@tanstack/react-query');
|
|
6
|
+
|
|
7
|
+
var ENDPOINT = chunkQJSOSQ7M_cjs.API_ENDPOINTS.uploads;
|
|
8
|
+
async function uploadTenantLogo(file) {
|
|
9
|
+
return uploadSingle(`${ENDPOINT}/tenant-logo`, file);
|
|
10
|
+
}
|
|
11
|
+
async function uploadStudentPhoto(file) {
|
|
12
|
+
return uploadSingle(`${ENDPOINT}/student-photo`, file);
|
|
13
|
+
}
|
|
14
|
+
async function uploadSingle(url, file) {
|
|
15
|
+
const formData = new FormData();
|
|
16
|
+
formData.append("file", file);
|
|
17
|
+
return chunkNGFFI4XQ_cjs.uploadData(url, formData);
|
|
18
|
+
}
|
|
19
|
+
function useUploadTenantLogo() {
|
|
20
|
+
return reactQuery.useMutation({ mutationFn: uploadTenantLogo });
|
|
21
|
+
}
|
|
22
|
+
function useUploadStudentPhoto() {
|
|
23
|
+
return reactQuery.useMutation({ mutationFn: uploadStudentPhoto });
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
exports.uploadStudentPhoto = uploadStudentPhoto;
|
|
27
|
+
exports.uploadTenantLogo = uploadTenantLogo;
|
|
28
|
+
exports.useUploadStudentPhoto = useUploadStudentPhoto;
|
|
29
|
+
exports.useUploadTenantLogo = useUploadTenantLogo;
|
|
30
|
+
//# sourceMappingURL=chunk-BOASJ3VG.cjs.map
|
|
31
|
+
//# sourceMappingURL=chunk-BOASJ3VG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modules/upload/upload.api.ts"],"names":["API_ENDPOINTS","uploadData","useMutation"],"mappings":";;;;;;AAIA,IAAM,WAAWA,+BAAA,CAAc,OAAA;AAG/B,eAAsB,iBAAiB,IAAA,EAA0C;AAC/E,EAAA,OAAO,YAAA,CAAkC,CAAA,EAAG,QAAQ,CAAA,YAAA,CAAA,EAAgB,IAAI,CAAA;AAC1E;AAGA,eAAsB,mBAAmB,IAAA,EAA2C;AAClF,EAAA,OAAO,YAAA,CAAmC,CAAA,EAAG,QAAQ,CAAA,cAAA,CAAA,EAAkB,IAAI,CAAA;AAC7E;AAEA,eAAe,YAAA,CAAwB,KAAa,IAAA,EAAgC;AAClF,EAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,EAAA,QAAA,CAAS,MAAA,CAAO,QAAQ,IAAI,CAAA;AAC5B,EAAA,OAAOC,4BAAA,CAAsB,KAAK,QAAQ,CAAA;AAC5C;AAEO,SAAS,mBAAA,GAAsB;AACpC,EAAA,OAAOC,sBAAA,CAAY,EAAE,UAAA,EAAY,gBAAA,EAAkB,CAAA;AACrD;AAEO,SAAS,qBAAA,GAAwB;AACtC,EAAA,OAAOA,sBAAA,CAAY,EAAE,UAAA,EAAY,kBAAA,EAAoB,CAAA;AACvD","file":"chunk-BOASJ3VG.cjs","sourcesContent":["import { useMutation } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { uploadData } from \"../../client/http\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.uploads;\r\n\r\n/** `POST /uploads/tenant-logo` — butuh permission `tenant:update`. Maks. 2 MB (JPEG/PNG/WEBP). */\r\nexport async function uploadTenantLogo(file: File): Promise<{ logoUrl: string }> {\r\n return uploadSingle<{ logoUrl: string }>(`${ENDPOINT}/tenant-logo`, file);\r\n}\r\n\r\n/** `POST /uploads/student-photo` — butuh permission `student:update`. Maks. 2 MB (JPEG/PNG/WEBP). */\r\nexport async function uploadStudentPhoto(file: File): Promise<{ photoUrl: string }> {\r\n return uploadSingle<{ photoUrl: string }>(`${ENDPOINT}/student-photo`, file);\r\n}\r\n\r\nasync function uploadSingle<TResponse>(url: string, file: File): Promise<TResponse> {\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n return uploadData<TResponse>(url, formData);\r\n}\r\n\r\nexport function useUploadTenantLogo() {\r\n return useMutation({ mutationFn: uploadTenantLogo });\r\n}\r\n\r\nexport function useUploadStudentPhoto() {\r\n return useMutation({ mutationFn: uploadStudentPhoto });\r\n}\r\n\r\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { configureApiClient } from './chunk-GRXFSXG5.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
function createDefaultQueryClient() {
|
|
7
|
+
return new QueryClient({
|
|
8
|
+
defaultOptions: {
|
|
9
|
+
queries: {
|
|
10
|
+
retry: 1,
|
|
11
|
+
refetchOnWindowFocus: false,
|
|
12
|
+
staleTime: 60 * 1e3
|
|
13
|
+
},
|
|
14
|
+
mutations: {
|
|
15
|
+
retry: 0
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
var defaultQueryClientInstance = null;
|
|
21
|
+
function SekolaosQueryProvider({
|
|
22
|
+
children,
|
|
23
|
+
clientConfig,
|
|
24
|
+
queryClient
|
|
25
|
+
}) {
|
|
26
|
+
React.useEffect(() => {
|
|
27
|
+
if (clientConfig) {
|
|
28
|
+
configureApiClient(clientConfig);
|
|
29
|
+
}
|
|
30
|
+
}, [clientConfig]);
|
|
31
|
+
const activeQueryClient = React.useMemo(() => {
|
|
32
|
+
if (queryClient) return queryClient;
|
|
33
|
+
if (!defaultQueryClientInstance) {
|
|
34
|
+
defaultQueryClientInstance = createDefaultQueryClient();
|
|
35
|
+
}
|
|
36
|
+
return defaultQueryClientInstance;
|
|
37
|
+
}, [queryClient]);
|
|
38
|
+
return /* @__PURE__ */ jsx(QueryClientProvider, { client: activeQueryClient, children });
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export { SekolaosQueryProvider, createDefaultQueryClient };
|
|
42
|
+
//# sourceMappingURL=chunk-CBTITLRR.js.map
|
|
43
|
+
//# sourceMappingURL=chunk-CBTITLRR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/provider.tsx"],"names":[],"mappings":";;;;;AAWO,SAAS,wBAAA,GAAwC;AACtD,EAAA,OAAO,IAAI,WAAA,CAAY;AAAA,IACrB,cAAA,EAAgB;AAAA,MACd,OAAA,EAAS;AAAA,QACP,KAAA,EAAO,CAAA;AAAA,QACP,oBAAA,EAAsB,KAAA;AAAA,QACtB,WAAW,EAAA,GAAK;AAAA,OAClB;AAAA,MACA,SAAA,EAAW;AAAA,QACT,KAAA,EAAO;AAAA;AACT;AACF,GACD,CAAA;AACH;AAEA,IAAI,0BAAA,GAAiD,IAAA;AAE9C,SAAS,qBAAA,CAAsB;AAAA,EACpC,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAA+B;AAC7B,EAAM,gBAAU,MAAM;AACpB,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,kBAAA,CAAmB,YAAY,CAAA;AAAA,IACjC;AAAA,EACF,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,iBAAA,GAA0B,cAAQ,MAAM;AAC5C,IAAA,IAAI,aAAa,OAAO,WAAA;AACxB,IAAA,IAAI,CAAC,0BAAA,EAA4B;AAC/B,MAAA,0BAAA,GAA6B,wBAAA,EAAyB;AAAA,IACxD;AACA,IAAA,OAAO,0BAAA;AAAA,EACT,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,uBAAO,GAAA,CAAC,mBAAA,EAAA,EAAoB,MAAA,EAAQ,iBAAA,EAAoB,QAAA,EAAS,CAAA;AACnE","file":"chunk-CBTITLRR.js","sourcesContent":["import * as React from \"react\";\r\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\r\nimport { configureApiClient } from \"./client/axios-instance\";\r\nimport type { ClientConfig } from \"./client/types\";\r\n\r\nexport interface SekolaosQueryProviderProps {\r\n children: React.ReactNode;\r\n clientConfig?: Partial<ClientConfig>;\r\n queryClient?: QueryClient;\r\n}\r\n\r\nexport function createDefaultQueryClient(): QueryClient {\r\n return new QueryClient({\r\n defaultOptions: {\r\n queries: {\r\n retry: 1,\r\n refetchOnWindowFocus: false,\r\n staleTime: 60 * 1000,\r\n },\r\n mutations: {\r\n retry: 0,\r\n },\r\n },\r\n });\r\n}\r\n\r\nlet defaultQueryClientInstance: QueryClient | null = null;\r\n\r\nexport function SekolaosQueryProvider({\r\n children,\r\n clientConfig,\r\n queryClient,\r\n}: SekolaosQueryProviderProps) {\r\n React.useEffect(() => {\r\n if (clientConfig) {\r\n configureApiClient(clientConfig);\r\n }\r\n }, [clientConfig]);\r\n\r\n const activeQueryClient = React.useMemo(() => {\r\n if (queryClient) return queryClient;\r\n if (!defaultQueryClientInstance) {\r\n defaultQueryClientInstance = createDefaultQueryClient();\r\n }\r\n return defaultQueryClientInstance;\r\n }, [queryClient]);\r\n\r\n return <QueryClientProvider client={activeQueryClient}>{children}</QueryClientProvider>;\r\n}\r\n"]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkQJSOSQ7M_cjs = require('./chunk-QJSOSQ7M.cjs');
|
|
4
|
+
var chunkNGFFI4XQ_cjs = require('./chunk-NGFFI4XQ.cjs');
|
|
5
|
+
var chunkXVG5Z6B5_cjs = require('./chunk-XVG5Z6B5.cjs');
|
|
6
|
+
var reactQuery = require('@tanstack/react-query');
|
|
7
|
+
|
|
8
|
+
var ENDPOINT = chunkQJSOSQ7M_cjs.API_ENDPOINTS.auth;
|
|
9
|
+
async function login(payload) {
|
|
10
|
+
return chunkNGFFI4XQ_cjs.postData(`${ENDPOINT}/login`, payload);
|
|
11
|
+
}
|
|
12
|
+
async function switchRole(payload) {
|
|
13
|
+
return chunkNGFFI4XQ_cjs.postData(`${ENDPOINT}/switch-role`, payload);
|
|
14
|
+
}
|
|
15
|
+
async function logout() {
|
|
16
|
+
await chunkNGFFI4XQ_cjs.postData(`${ENDPOINT}/logout`);
|
|
17
|
+
}
|
|
18
|
+
async function getMe() {
|
|
19
|
+
return chunkNGFFI4XQ_cjs.getData(`${ENDPOINT}/me`);
|
|
20
|
+
}
|
|
21
|
+
async function changePassword(payload) {
|
|
22
|
+
return chunkNGFFI4XQ_cjs.putData(`${ENDPOINT}/change-password`, payload);
|
|
23
|
+
}
|
|
24
|
+
function useMe(options) {
|
|
25
|
+
return reactQuery.useQuery({
|
|
26
|
+
queryKey: chunkXVG5Z6B5_cjs.authKeys.me(),
|
|
27
|
+
queryFn: getMe,
|
|
28
|
+
enabled: options?.enabled ?? true,
|
|
29
|
+
staleTime: 6e4
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function useLogin() {
|
|
33
|
+
const queryClient = reactQuery.useQueryClient();
|
|
34
|
+
return reactQuery.useMutation({
|
|
35
|
+
mutationFn: login,
|
|
36
|
+
onSuccess: async () => {
|
|
37
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.authKeys.all });
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function useSwitchRole() {
|
|
42
|
+
const queryClient = reactQuery.useQueryClient();
|
|
43
|
+
return reactQuery.useMutation({
|
|
44
|
+
mutationFn: switchRole,
|
|
45
|
+
onSuccess: async () => {
|
|
46
|
+
await queryClient.invalidateQueries();
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function useLogout() {
|
|
51
|
+
const queryClient = reactQuery.useQueryClient();
|
|
52
|
+
return reactQuery.useMutation({
|
|
53
|
+
mutationFn: logout,
|
|
54
|
+
onSuccess: () => {
|
|
55
|
+
queryClient.clear();
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function useChangePassword() {
|
|
60
|
+
return reactQuery.useMutation({ mutationFn: changePassword });
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
exports.changePassword = changePassword;
|
|
64
|
+
exports.getMe = getMe;
|
|
65
|
+
exports.login = login;
|
|
66
|
+
exports.logout = logout;
|
|
67
|
+
exports.switchRole = switchRole;
|
|
68
|
+
exports.useChangePassword = useChangePassword;
|
|
69
|
+
exports.useLogin = useLogin;
|
|
70
|
+
exports.useLogout = useLogout;
|
|
71
|
+
exports.useMe = useMe;
|
|
72
|
+
exports.useSwitchRole = useSwitchRole;
|
|
73
|
+
//# sourceMappingURL=chunk-CP46K2UB.cjs.map
|
|
74
|
+
//# sourceMappingURL=chunk-CP46K2UB.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modules/auth/auth.api.ts"],"names":["API_ENDPOINTS","postData","getData","putData","useQuery","authKeys","useQueryClient","useMutation"],"mappings":";;;;;;;AAcA,IAAM,WAAWA,+BAAA,CAAc,IAAA;AAgB/B,eAAsB,MAAM,OAAA,EAAoD;AAC9E,EAAA,OAAOC,0BAAA,CAA2C,CAAA,EAAG,QAAQ,CAAA,MAAA,CAAA,EAAU,OAAO,CAAA;AAChF;AAEA,eAAsB,WAAW,OAAA,EAAyD;AACxF,EAAA,OAAOA,0BAAA,CAAgD,CAAA,EAAG,QAAQ,CAAA,YAAA,CAAA,EAAgB,OAAO,CAAA;AAC3F;AAEA,eAAsB,MAAA,GAAwB;AAC5C,EAAA,MAAMA,0BAAA,CAAe,CAAA,EAAG,QAAQ,CAAA,OAAA,CAAS,CAAA;AAC3C;AAEA,eAAsB,KAAA,GAAqC;AACzD,EAAA,OAAOC,yBAAA,CAA4B,CAAA,EAAG,QAAQ,CAAA,GAAA,CAAK,CAAA;AACrD;AAEA,eAAsB,eAAe,OAAA,EAA8D;AACjG,EAAA,OAAOC,yBAAA,CAAoD,CAAA,EAAG,QAAQ,CAAA,gBAAA,CAAA,EAAoB,OAAO,CAAA;AACnG;AAEO,SAAS,MAAM,OAAA,EAAiC;AACrD,EAAA,OAAOC,mBAAA,CAAS;AAAA,IACd,QAAA,EAAUC,2BAAS,EAAA,EAAG;AAAA,IACtB,OAAA,EAAS,KAAA;AAAA,IACT,OAAA,EAAS,SAAS,OAAA,IAAW,IAAA;AAAA,IAC7B,SAAA,EAAW;AAAA,GACZ,CAAA;AACH;AAEO,SAAS,QAAA,GAAW;AACzB,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,KAAA;AAAA,IACZ,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,0BAAA,CAAS,KAAK,CAAA;AAAA,IAChE;AAAA,GACD,CAAA;AACH;AAEO,SAAS,aAAA,GAAgB;AAC9B,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,UAAA;AAAA,IACZ,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,EAAkB;AAAA,IACtC;AAAA,GACD,CAAA;AACH;AAEO,SAAS,SAAA,GAAY;AAC1B,EAAA,MAAM,cAAcD,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,MAAA;AAAA,IACZ,WAAW,MAAM;AACf,MAAA,WAAA,CAAY,KAAA,EAAM;AAAA,IACpB;AAAA,GACD,CAAA;AACH;AAEO,SAAS,iBAAA,GAAoB;AAClC,EAAA,OAAOA,sBAAA,CAAY,EAAE,UAAA,EAAY,cAAA,EAAgB,CAAA;AACnD","file":"chunk-CP46K2UB.cjs","sourcesContent":["import type {\r\n AuthSession,\r\n ChangePasswordRequest,\r\n LoginRequest,\r\n Role,\r\n SwitchRoleRequest,\r\n Tenant,\r\n UserProfile,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { authKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.auth;\r\n\r\nexport interface AuthUserSummary {\r\n id: string;\r\n username: string;\r\n email: string | null;\r\n fullName: string;\r\n}\r\n\r\n/** Payload `POST /auth/login`, `POST /auth/switch-role`, dan `GET /auth/me`. */\r\nexport interface AuthSessionPayload {\r\n session: AuthSession;\r\n user: AuthUserSummary;\r\n tenant: Tenant;\r\n}\r\n\r\nexport async function login(payload: LoginRequest): Promise<AuthSessionPayload> {\r\n return postData<AuthSessionPayload, LoginRequest>(`${ENDPOINT}/login`, payload);\r\n}\r\n\r\nexport async function switchRole(payload: SwitchRoleRequest): Promise<AuthSessionPayload> {\r\n return postData<AuthSessionPayload, SwitchRoleRequest>(`${ENDPOINT}/switch-role`, payload);\r\n}\r\n\r\nexport async function logout(): Promise<void> {\r\n await postData<void>(`${ENDPOINT}/logout`);\r\n}\r\n\r\nexport async function getMe(): Promise<AuthSessionPayload> {\r\n return getData<AuthSessionPayload>(`${ENDPOINT}/me`);\r\n}\r\n\r\nexport async function changePassword(payload: ChangePasswordRequest): Promise<{ message: string }> {\r\n return putData<{ message: string }, ChangePasswordRequest>(`${ENDPOINT}/change-password`, payload);\r\n}\r\n\r\nexport function useMe(options?: { enabled?: boolean }) {\r\n return useQuery({\r\n queryKey: authKeys.me(),\r\n queryFn: getMe,\r\n enabled: options?.enabled ?? true,\r\n staleTime: 60_000,\r\n });\r\n}\r\n\r\nexport function useLogin() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: login,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: authKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useSwitchRole() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: switchRole,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries();\r\n },\r\n });\r\n}\r\n\r\nexport function useLogout() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: logout,\r\n onSuccess: () => {\r\n queryClient.clear();\r\n },\r\n });\r\n}\r\n\r\nexport function useChangePassword() {\r\n return useMutation({ mutationFn: changePassword });\r\n}\r\n\r\nexport type { AuthSession, ChangePasswordRequest, LoginRequest, Role, SwitchRoleRequest, UserProfile };\r\n"]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { API_ENDPOINTS } from './chunk-MRFGUSN2.js';
|
|
2
|
+
import { getData, postData, putData } from './chunk-6JGO2CUT.js';
|
|
3
|
+
import { classroomKeys } from './chunk-ALMSFTRM.js';
|
|
4
|
+
import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
|
|
5
|
+
|
|
6
|
+
var ENDPOINT = API_ENDPOINTS.classrooms;
|
|
7
|
+
async function listClassrooms(params) {
|
|
8
|
+
return getData(ENDPOINT, { params });
|
|
9
|
+
}
|
|
10
|
+
async function getClassroom(id) {
|
|
11
|
+
return getData(`${ENDPOINT}/${id}`);
|
|
12
|
+
}
|
|
13
|
+
async function createClassroom(payload) {
|
|
14
|
+
return postData(ENDPOINT, payload);
|
|
15
|
+
}
|
|
16
|
+
async function updateClassroom(id, payload) {
|
|
17
|
+
return putData(`${ENDPOINT}/${id}`, payload);
|
|
18
|
+
}
|
|
19
|
+
async function getClassroomStudents(id) {
|
|
20
|
+
return getData(`${ENDPOINT}/${id}/students`);
|
|
21
|
+
}
|
|
22
|
+
async function promoteClassStudents(payload) {
|
|
23
|
+
await postData(`${ENDPOINT}/promote`, payload);
|
|
24
|
+
}
|
|
25
|
+
function useClassrooms(params) {
|
|
26
|
+
return useQuery({
|
|
27
|
+
queryKey: classroomKeys.list(params),
|
|
28
|
+
queryFn: () => listClassrooms(params)
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function useClassroom(id, options) {
|
|
32
|
+
return useQuery({
|
|
33
|
+
queryKey: classroomKeys.detail(id),
|
|
34
|
+
queryFn: () => getClassroom(id),
|
|
35
|
+
enabled: options?.enabled ?? Boolean(id)
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function useClassroomStudents(id, options) {
|
|
39
|
+
return useQuery({
|
|
40
|
+
queryKey: classroomKeys.students(id),
|
|
41
|
+
queryFn: () => getClassroomStudents(id),
|
|
42
|
+
enabled: options?.enabled ?? Boolean(id)
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function useCreateClassroom() {
|
|
46
|
+
const queryClient = useQueryClient();
|
|
47
|
+
return useMutation({
|
|
48
|
+
mutationFn: createClassroom,
|
|
49
|
+
onSuccess: async () => {
|
|
50
|
+
await queryClient.invalidateQueries({ queryKey: classroomKeys.all });
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function useUpdateClassroom() {
|
|
55
|
+
const queryClient = useQueryClient();
|
|
56
|
+
return useMutation({
|
|
57
|
+
mutationFn: ({ id, payload }) => updateClassroom(id, payload),
|
|
58
|
+
onSuccess: async (_data, variables) => {
|
|
59
|
+
await queryClient.invalidateQueries({ queryKey: classroomKeys.detail(variables.id) });
|
|
60
|
+
await queryClient.invalidateQueries({ queryKey: classroomKeys.all });
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function usePromoteClassStudents() {
|
|
65
|
+
const queryClient = useQueryClient();
|
|
66
|
+
return useMutation({
|
|
67
|
+
mutationFn: (payload) => promoteClassStudents(payload),
|
|
68
|
+
onSuccess: async () => {
|
|
69
|
+
await queryClient.invalidateQueries({ queryKey: classroomKeys.all });
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export { createClassroom, getClassroom, getClassroomStudents, listClassrooms, promoteClassStudents, updateClassroom, useClassroom, useClassroomStudents, useClassrooms, useCreateClassroom, usePromoteClassStudents, useUpdateClassroom };
|
|
75
|
+
//# sourceMappingURL=chunk-DMEWJ56D.js.map
|
|
76
|
+
//# sourceMappingURL=chunk-DMEWJ56D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modules/classroom/classroom.api.ts"],"names":[],"mappings":"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","file":"chunk-DMEWJ56D.js","sourcesContent":["import type {\r\n ClassRoom,\r\n ClassroomListQuery,\r\n CreateClassroomInput,\r\n PromoteClassStudentsInput,\r\n Student,\r\n UpdateClassroomInput,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport { classroomKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.classrooms;\r\n\r\nexport async function listClassrooms(params?: Partial<ClassroomListQuery>): Promise<ClassRoom[]> {\r\n return getData<ClassRoom[]>(ENDPOINT, { params });\r\n}\r\n\r\nexport async function getClassroom(id: string): Promise<ClassRoom> {\r\n return getData<ClassRoom>(`${ENDPOINT}/${id}`);\r\n}\r\n\r\nexport async function createClassroom(payload: CreateClassroomInput): Promise<ClassRoom> {\r\n return postData<ClassRoom, CreateClassroomInput>(ENDPOINT, payload);\r\n}\r\n\r\nexport async function updateClassroom(\r\n id: string,\r\n payload: UpdateClassroomInput\r\n): Promise<ClassRoom> {\r\n return putData<ClassRoom, UpdateClassroomInput>(`${ENDPOINT}/${id}`, payload);\r\n}\r\n\r\nexport async function getClassroomStudents(id: string): Promise<Student[]> {\r\n return getData<Student[]>(`${ENDPOINT}/${id}/students`);\r\n}\r\n\r\nexport async function promoteClassStudents(\r\n payload: PromoteClassStudentsInput\r\n): Promise<void> {\r\n await postData<void, PromoteClassStudentsInput>(`${ENDPOINT}/promote`, payload);\r\n}\r\n\r\nexport function useClassrooms(params?: Partial<ClassroomListQuery>) {\r\n return useQuery({\r\n queryKey: classroomKeys.list(params as Record<string, unknown> | undefined),\r\n queryFn: () => listClassrooms(params),\r\n });\r\n}\r\n\r\nexport function useClassroom(id: string, options?: { enabled?: boolean }) {\r\n return useQuery({\r\n queryKey: classroomKeys.detail(id),\r\n queryFn: () => getClassroom(id),\r\n enabled: options?.enabled ?? Boolean(id),\r\n });\r\n}\r\n\r\nexport function useClassroomStudents(id: string, options?: { enabled?: boolean }) {\r\n return useQuery({\r\n queryKey: classroomKeys.students(id),\r\n queryFn: () => getClassroomStudents(id),\r\n enabled: options?.enabled ?? Boolean(id),\r\n });\r\n}\r\n\r\nexport function useCreateClassroom() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createClassroom,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: classroomKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateClassroom() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({ id, payload }: { id: string; payload: UpdateClassroomInput }) =>\r\n updateClassroom(id, payload),\r\n onSuccess: async (_data, variables) => {\r\n await queryClient.invalidateQueries({ queryKey: classroomKeys.detail(variables.id) });\r\n await queryClient.invalidateQueries({ queryKey: classroomKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function usePromoteClassStudents() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: (payload: PromoteClassStudentsInput) => promoteClassStudents(payload),\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: classroomKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport type {\r\n ClassRoom,\r\n ClassroomListQuery,\r\n CreateClassroomInput,\r\n PromoteClassStudentsInput,\r\n Student,\r\n UpdateClassroomInput,\r\n};\r\n"]}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkQJSOSQ7M_cjs = require('./chunk-QJSOSQ7M.cjs');
|
|
4
|
+
var chunkNGFFI4XQ_cjs = require('./chunk-NGFFI4XQ.cjs');
|
|
5
|
+
var chunkXVG5Z6B5_cjs = require('./chunk-XVG5Z6B5.cjs');
|
|
6
|
+
var reactQuery = require('@tanstack/react-query');
|
|
7
|
+
|
|
8
|
+
var ENDPOINT = chunkQJSOSQ7M_cjs.API_ENDPOINTS.students;
|
|
9
|
+
async function listStudents(params) {
|
|
10
|
+
return chunkNGFFI4XQ_cjs.getData(ENDPOINT, { params });
|
|
11
|
+
}
|
|
12
|
+
async function getStudent(id) {
|
|
13
|
+
return chunkNGFFI4XQ_cjs.getData(`${ENDPOINT}/${id}`);
|
|
14
|
+
}
|
|
15
|
+
async function createStudent(payload) {
|
|
16
|
+
return chunkNGFFI4XQ_cjs.postData(ENDPOINT, payload);
|
|
17
|
+
}
|
|
18
|
+
async function updateStudent(id, payload) {
|
|
19
|
+
return chunkNGFFI4XQ_cjs.putData(`${ENDPOINT}/${id}`, payload);
|
|
20
|
+
}
|
|
21
|
+
async function deleteStudent(id) {
|
|
22
|
+
await chunkNGFFI4XQ_cjs.deleteData(`${ENDPOINT}/${id}`);
|
|
23
|
+
}
|
|
24
|
+
async function getStudentKioskCache() {
|
|
25
|
+
return chunkNGFFI4XQ_cjs.getData(`${ENDPOINT}/kiosk-cache`);
|
|
26
|
+
}
|
|
27
|
+
async function getStudentQrPayload(id) {
|
|
28
|
+
return chunkNGFFI4XQ_cjs.getData(`${ENDPOINT}/${id}/qr-code`);
|
|
29
|
+
}
|
|
30
|
+
async function bulkImportStudents(payload) {
|
|
31
|
+
return chunkNGFFI4XQ_cjs.postData(
|
|
32
|
+
`${ENDPOINT}/bulk-import`,
|
|
33
|
+
payload
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
function useStudents(params) {
|
|
37
|
+
return reactQuery.useQuery({
|
|
38
|
+
queryKey: chunkXVG5Z6B5_cjs.studentKeys.list(params),
|
|
39
|
+
queryFn: () => listStudents(params)
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
function useStudent(id, options) {
|
|
43
|
+
return reactQuery.useQuery({
|
|
44
|
+
queryKey: chunkXVG5Z6B5_cjs.studentKeys.detail(id),
|
|
45
|
+
queryFn: () => getStudent(id),
|
|
46
|
+
enabled: options?.enabled ?? Boolean(id)
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function useStudentKioskCache(options) {
|
|
50
|
+
return reactQuery.useQuery({
|
|
51
|
+
queryKey: chunkXVG5Z6B5_cjs.studentKeys.kioskCache(),
|
|
52
|
+
queryFn: getStudentKioskCache,
|
|
53
|
+
enabled: options?.enabled ?? true,
|
|
54
|
+
staleTime: 5 * 6e4
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function useStudentQrCode(id, options) {
|
|
58
|
+
return reactQuery.useQuery({
|
|
59
|
+
queryKey: chunkXVG5Z6B5_cjs.studentKeys.qrCode(id),
|
|
60
|
+
queryFn: () => getStudentQrPayload(id),
|
|
61
|
+
enabled: options?.enabled ?? Boolean(id)
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function useCreateStudent() {
|
|
65
|
+
const queryClient = reactQuery.useQueryClient();
|
|
66
|
+
return reactQuery.useMutation({
|
|
67
|
+
mutationFn: createStudent,
|
|
68
|
+
onSuccess: async () => {
|
|
69
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.studentKeys.all });
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function useUpdateStudent() {
|
|
74
|
+
const queryClient = reactQuery.useQueryClient();
|
|
75
|
+
return reactQuery.useMutation({
|
|
76
|
+
mutationFn: ({ id, payload }) => updateStudent(id, payload),
|
|
77
|
+
onSuccess: async (_data, variables) => {
|
|
78
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.studentKeys.detail(variables.id) });
|
|
79
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.studentKeys.all });
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function useDeleteStudent() {
|
|
84
|
+
const queryClient = reactQuery.useQueryClient();
|
|
85
|
+
return reactQuery.useMutation({
|
|
86
|
+
mutationFn: deleteStudent,
|
|
87
|
+
onSuccess: async () => {
|
|
88
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.studentKeys.all });
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
function useBulkImportStudents() {
|
|
93
|
+
const queryClient = reactQuery.useQueryClient();
|
|
94
|
+
return reactQuery.useMutation({
|
|
95
|
+
mutationFn: bulkImportStudents,
|
|
96
|
+
onSuccess: async () => {
|
|
97
|
+
await queryClient.invalidateQueries({ queryKey: chunkXVG5Z6B5_cjs.studentKeys.all });
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
exports.bulkImportStudents = bulkImportStudents;
|
|
103
|
+
exports.createStudent = createStudent;
|
|
104
|
+
exports.deleteStudent = deleteStudent;
|
|
105
|
+
exports.getStudent = getStudent;
|
|
106
|
+
exports.getStudentKioskCache = getStudentKioskCache;
|
|
107
|
+
exports.getStudentQrPayload = getStudentQrPayload;
|
|
108
|
+
exports.listStudents = listStudents;
|
|
109
|
+
exports.updateStudent = updateStudent;
|
|
110
|
+
exports.useBulkImportStudents = useBulkImportStudents;
|
|
111
|
+
exports.useCreateStudent = useCreateStudent;
|
|
112
|
+
exports.useDeleteStudent = useDeleteStudent;
|
|
113
|
+
exports.useStudent = useStudent;
|
|
114
|
+
exports.useStudentKioskCache = useStudentKioskCache;
|
|
115
|
+
exports.useStudentQrCode = useStudentQrCode;
|
|
116
|
+
exports.useStudents = useStudents;
|
|
117
|
+
exports.useUpdateStudent = useUpdateStudent;
|
|
118
|
+
//# sourceMappingURL=chunk-DNNK2DMM.cjs.map
|
|
119
|
+
//# sourceMappingURL=chunk-DNNK2DMM.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modules/student/student.api.ts"],"names":["API_ENDPOINTS","getData","postData","putData","deleteData","useQuery","studentKeys","useQueryClient","useMutation"],"mappings":"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","file":"chunk-DNNK2DMM.cjs","sourcesContent":["import type {\r\n BulkImportStudentRequest,\r\n BulkImportStudentResponse,\r\n CreateStudentInput,\r\n Student,\r\n StudentListQuery,\r\n StudentOfflineCache,\r\n StudentQrPayload,\r\n UpdateStudentInput,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { deleteData, getData, postData, putData } from \"../../client/http\";\r\nimport { studentKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.students;\r\n\r\nexport async function listStudents(params?: Partial<StudentListQuery>): Promise<Student[]> {\r\n return getData<Student[]>(ENDPOINT, { params });\r\n}\r\n\r\nexport async function getStudent(id: string): Promise<Student> {\r\n return getData<Student>(`${ENDPOINT}/${id}`);\r\n}\r\n\r\nexport async function createStudent(payload: CreateStudentInput): Promise<Student> {\r\n return postData<Student, CreateStudentInput>(ENDPOINT, payload);\r\n}\r\n\r\nexport async function updateStudent(id: string, payload: UpdateStudentInput): Promise<Student> {\r\n return putData<Student, UpdateStudentInput>(`${ENDPOINT}/${id}`, payload);\r\n}\r\n\r\nexport async function deleteStudent(id: string): Promise<void> {\r\n await deleteData<void>(`${ENDPOINT}/${id}`);\r\n}\r\n\r\n/** Cache siswa ringkas untuk mode offline kiosk absensi. */\r\nexport async function getStudentKioskCache(): Promise<StudentOfflineCache[]> {\r\n return getData<StudentOfflineCache[]>(`${ENDPOINT}/kiosk-cache`);\r\n}\r\n\r\nexport async function getStudentQrPayload(id: string): Promise<StudentQrPayload> {\r\n return getData<StudentQrPayload>(`${ENDPOINT}/${id}/qr-code`);\r\n}\r\n\r\nexport async function bulkImportStudents(\r\n payload: BulkImportStudentRequest\r\n): Promise<BulkImportStudentResponse> {\r\n return postData<BulkImportStudentResponse, BulkImportStudentRequest>(\r\n `${ENDPOINT}/bulk-import`,\r\n payload\r\n );\r\n}\r\n\r\nexport function useStudents(params?: Partial<StudentListQuery>) {\r\n return useQuery({\r\n queryKey: studentKeys.list(params as Record<string, unknown> | undefined),\r\n queryFn: () => listStudents(params),\r\n });\r\n}\r\n\r\nexport function useStudent(id: string, options?: { enabled?: boolean }) {\r\n return useQuery({\r\n queryKey: studentKeys.detail(id),\r\n queryFn: () => getStudent(id),\r\n enabled: options?.enabled ?? Boolean(id),\r\n });\r\n}\r\n\r\nexport function useStudentKioskCache(options?: { enabled?: boolean }) {\r\n return useQuery({\r\n queryKey: studentKeys.kioskCache(),\r\n queryFn: getStudentKioskCache,\r\n enabled: options?.enabled ?? true,\r\n staleTime: 5 * 60_000,\r\n });\r\n}\r\n\r\nexport function useStudentQrCode(id: string, options?: { enabled?: boolean }) {\r\n return useQuery({\r\n queryKey: studentKeys.qrCode(id),\r\n queryFn: () => getStudentQrPayload(id),\r\n enabled: options?.enabled ?? Boolean(id),\r\n });\r\n}\r\n\r\nexport function useCreateStudent() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createStudent,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: studentKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateStudent() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({ id, payload }: { id: string; payload: UpdateStudentInput }) =>\r\n updateStudent(id, payload),\r\n onSuccess: async (_data, variables) => {\r\n await queryClient.invalidateQueries({ queryKey: studentKeys.detail(variables.id) });\r\n await queryClient.invalidateQueries({ queryKey: studentKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useDeleteStudent() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: deleteStudent,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: studentKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useBulkImportStudents() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: bulkImportStudents,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: studentKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport type {\r\n BulkImportStudentRequest,\r\n BulkImportStudentResponse,\r\n CreateStudentInput,\r\n Student,\r\n StudentListQuery,\r\n StudentOfflineCache,\r\n StudentQrPayload,\r\n UpdateStudentInput,\r\n};\r\n"]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { API_ENDPOINTS } from './chunk-MRFGUSN2.js';
|
|
2
|
+
import { getData, postData, putData } from './chunk-6JGO2CUT.js';
|
|
3
|
+
import { userKeys } from './chunk-ALMSFTRM.js';
|
|
4
|
+
import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
|
|
5
|
+
|
|
6
|
+
var ENDPOINT = API_ENDPOINTS.users;
|
|
7
|
+
async function listRoles() {
|
|
8
|
+
return getData(`${ENDPOINT}/roles`);
|
|
9
|
+
}
|
|
10
|
+
async function listTeachers(params) {
|
|
11
|
+
return getData(`${ENDPOINT}/teachers`, { params });
|
|
12
|
+
}
|
|
13
|
+
async function getTeacher(id) {
|
|
14
|
+
return getData(`${ENDPOINT}/teachers/${id}`);
|
|
15
|
+
}
|
|
16
|
+
async function createTeacher(payload) {
|
|
17
|
+
return postData(`${ENDPOINT}/teachers`, payload);
|
|
18
|
+
}
|
|
19
|
+
async function updateTeacher(id, payload) {
|
|
20
|
+
return putData(`${ENDPOINT}/teachers/${id}`, payload);
|
|
21
|
+
}
|
|
22
|
+
async function assignUserRoles(payload) {
|
|
23
|
+
return postData(
|
|
24
|
+
`${ENDPOINT}/teachers/assign-roles`,
|
|
25
|
+
payload
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
function useRoles() {
|
|
29
|
+
return useQuery({ queryKey: userKeys.roles(), queryFn: listRoles, staleTime: 5 * 6e4 });
|
|
30
|
+
}
|
|
31
|
+
function useTeachers(params) {
|
|
32
|
+
return useQuery({
|
|
33
|
+
queryKey: userKeys.teachers(params),
|
|
34
|
+
queryFn: () => listTeachers(params)
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function useTeacher(id, options) {
|
|
38
|
+
return useQuery({
|
|
39
|
+
queryKey: userKeys.teacherDetail(id),
|
|
40
|
+
queryFn: () => getTeacher(id),
|
|
41
|
+
enabled: options?.enabled ?? Boolean(id)
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function useCreateTeacher() {
|
|
45
|
+
const queryClient = useQueryClient();
|
|
46
|
+
return useMutation({
|
|
47
|
+
mutationFn: createTeacher,
|
|
48
|
+
onSuccess: async () => {
|
|
49
|
+
await queryClient.invalidateQueries({ queryKey: userKeys.all });
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function useUpdateTeacher() {
|
|
54
|
+
const queryClient = useQueryClient();
|
|
55
|
+
return useMutation({
|
|
56
|
+
mutationFn: ({ id, payload }) => updateTeacher(id, payload),
|
|
57
|
+
onSuccess: async (_data, variables) => {
|
|
58
|
+
await queryClient.invalidateQueries({ queryKey: userKeys.teacherDetail(variables.id) });
|
|
59
|
+
await queryClient.invalidateQueries({ queryKey: userKeys.all });
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function useAssignUserRoles() {
|
|
64
|
+
const queryClient = useQueryClient();
|
|
65
|
+
return useMutation({
|
|
66
|
+
mutationFn: assignUserRoles,
|
|
67
|
+
onSuccess: async () => {
|
|
68
|
+
await queryClient.invalidateQueries();
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export { assignUserRoles, createTeacher, getTeacher, listRoles, listTeachers, updateTeacher, useAssignUserRoles, useCreateTeacher, useRoles, useTeacher, useTeachers, useUpdateTeacher };
|
|
74
|
+
//# sourceMappingURL=chunk-GKKJMRCL.js.map
|
|
75
|
+
//# sourceMappingURL=chunk-GKKJMRCL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modules/user/user.api.ts"],"names":[],"mappings":"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","file":"chunk-GKKJMRCL.js","sourcesContent":["import type {\r\n AssignUserRolesRequest,\r\n CreateTeacherInput,\r\n Role,\r\n TeacherListQuery,\r\n UpdateTeacherInput,\r\n User,\r\n UserProfile,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport { userKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.users;\r\n\r\nexport async function listRoles(): Promise<Role[]> {\r\n return getData<Role[]>(`${ENDPOINT}/roles`);\r\n}\r\n\r\nexport async function listTeachers(params?: Partial<TeacherListQuery>): Promise<User[]> {\r\n return getData<User[]>(`${ENDPOINT}/teachers`, { params });\r\n}\r\n\r\nexport async function getTeacher(id: string): Promise<UserProfile> {\r\n return getData<UserProfile>(`${ENDPOINT}/teachers/${id}`);\r\n}\r\n\r\nexport async function createTeacher(payload: CreateTeacherInput): Promise<UserProfile> {\r\n return postData<UserProfile, CreateTeacherInput>(`${ENDPOINT}/teachers`, payload);\r\n}\r\n\r\nexport async function updateTeacher(\r\n id: string,\r\n payload: UpdateTeacherInput\r\n): Promise<UserProfile> {\r\n return putData<UserProfile, UpdateTeacherInput>(`${ENDPOINT}/teachers/${id}`, payload);\r\n}\r\n\r\nexport async function assignUserRoles(payload: AssignUserRolesRequest): Promise<UserProfile> {\r\n return postData<UserProfile, AssignUserRolesRequest>(\r\n `${ENDPOINT}/teachers/assign-roles`,\r\n payload\r\n );\r\n}\r\n\r\nexport function useRoles() {\r\n return useQuery({ queryKey: userKeys.roles(), queryFn: listRoles, staleTime: 5 * 60_000 });\r\n}\r\n\r\nexport function useTeachers(params?: Partial<TeacherListQuery>) {\r\n return useQuery({\r\n queryKey: userKeys.teachers(params as Record<string, unknown> | undefined),\r\n queryFn: () => listTeachers(params),\r\n });\r\n}\r\n\r\nexport function useTeacher(id: string, options?: { enabled?: boolean }) {\r\n return useQuery({\r\n queryKey: userKeys.teacherDetail(id),\r\n queryFn: () => getTeacher(id),\r\n enabled: options?.enabled ?? Boolean(id),\r\n });\r\n}\r\n\r\nexport function useCreateTeacher() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createTeacher,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: userKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateTeacher() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({ id, payload }: { id: string; payload: UpdateTeacherInput }) =>\r\n updateTeacher(id, payload),\r\n onSuccess: async (_data, variables) => {\r\n await queryClient.invalidateQueries({ queryKey: userKeys.teacherDetail(variables.id) });\r\n await queryClient.invalidateQueries({ queryKey: userKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useAssignUserRoles() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: assignUserRoles,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries();\r\n },\r\n });\r\n}\r\n\r\nexport type {\r\n AssignUserRolesRequest,\r\n CreateTeacherInput,\r\n Role,\r\n TeacherListQuery,\r\n UpdateTeacherInput,\r\n User,\r\n UserProfile,\r\n};\r\n"]}
|