@sekolaos/shared-schema 1.2.0 → 1.3.1
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/cjs/academic/teaching-schedule.schema.js +80 -30
- package/dist/cjs/academic/teaching-schedule.schema.js.map +1 -1
- package/dist/esm/academic/teaching-schedule.schema.js +80 -30
- package/dist/esm/academic/teaching-schedule.schema.js.map +1 -1
- package/dist/types/academic/teaching-schedule.schema.d.ts +144 -41
- package/package.json +1 -1
|
@@ -1,11 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.teachingScheduleListQuerySchema = exports.teachingScheduleParamsSchema = exports.updateTeachingScheduleSchema = exports.createTeachingScheduleSchema = exports.teachingScheduleSchema = exports.
|
|
3
|
+
exports.checkScheduleConflictQuerySchema = exports.copyRosterRequestSchema = exports.batchCreateTeachingScheduleSchema = exports.teachingScheduleListQuerySchema = exports.teachingScheduleParamsSchema = exports.updateTeachingScheduleSchema = exports.createTeachingScheduleSchema = exports.teachingScheduleSchema = exports.dayOfWeekEnum = exports.scheduleTimeStringSchema = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const common_schema_js_1 = require("../common/common.schema.js");
|
|
6
|
-
|
|
7
|
-
exports.
|
|
8
|
-
|
|
6
|
+
// 1. Format Waktu Fleksibel (Mendukung HH:mm dan HH:mm:ss dari tipe TIME MySQL)
|
|
7
|
+
exports.scheduleTimeStringSchema = zod_1.z
|
|
8
|
+
.string()
|
|
9
|
+
.regex(/^([01]\d|2[0-3]):([0-5]\d)(:[0-5]\d)?$/, "Format jam harus HH:mm atau HH:mm:ss");
|
|
10
|
+
exports.dayOfWeekEnum = zod_1.z.enum([
|
|
11
|
+
"SENIN",
|
|
12
|
+
"SELASA",
|
|
13
|
+
"RABU",
|
|
14
|
+
"KAMIS",
|
|
15
|
+
"JUMAT",
|
|
16
|
+
"SABTU",
|
|
17
|
+
]);
|
|
18
|
+
// 2. Skema Entitas Utama
|
|
19
|
+
exports.teachingScheduleSchema = zod_1.z.object({
|
|
9
20
|
id: common_schema_js_1.uuidSchema,
|
|
10
21
|
tenantId: common_schema_js_1.uuidSchema,
|
|
11
22
|
academicYearId: common_schema_js_1.uuidSchema,
|
|
@@ -16,36 +27,29 @@ const teachingScheduleObjectSchema = zod_1.z.object({
|
|
|
16
27
|
subjectId: common_schema_js_1.uuidSchema,
|
|
17
28
|
subjectName: zod_1.z.string().optional(),
|
|
18
29
|
dayOfWeek: exports.dayOfWeekEnum,
|
|
19
|
-
startTime:
|
|
20
|
-
endTime:
|
|
21
|
-
periodNumber:
|
|
30
|
+
startTime: exports.scheduleTimeStringSchema,
|
|
31
|
+
endTime: exports.scheduleTimeStringSchema,
|
|
32
|
+
periodNumber: zod_1.z.number().int().min(1).max(15).optional(),
|
|
22
33
|
});
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
message: "Jam
|
|
34
|
+
// Helper Validasi Relasi Waktu Mulai < Waktu Selesai
|
|
35
|
+
const validateTimeOrder = (schema) => schema.refine((data) => !data.startTime || !data.endTime || data.startTime < data.endTime, {
|
|
36
|
+
message: "Jam mulai harus lebih awal daripada jam selesai",
|
|
26
37
|
path: ["endTime"],
|
|
27
38
|
});
|
|
28
|
-
exports.teachingScheduleSchema
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
.omit({
|
|
38
|
-
id: true,
|
|
39
|
-
tenantId: true,
|
|
40
|
-
classroomName: true,
|
|
41
|
-
teacherName: true,
|
|
42
|
-
subjectName: true,
|
|
43
|
-
})
|
|
44
|
-
.partial()
|
|
45
|
-
.refine((schedule) => !schedule.startTime || !schedule.endTime || schedule.startTime < schedule.endTime, {
|
|
46
|
-
message: "Jam selesai harus lebih besar dari jam mulai",
|
|
47
|
-
path: ["endTime"],
|
|
39
|
+
const baseCreateShape = exports.teachingScheduleSchema.pick({
|
|
40
|
+
academicYearId: true,
|
|
41
|
+
classroomId: true,
|
|
42
|
+
teacherUserId: true,
|
|
43
|
+
subjectId: true,
|
|
44
|
+
dayOfWeek: true,
|
|
45
|
+
startTime: true,
|
|
46
|
+
endTime: true,
|
|
47
|
+
periodNumber: true,
|
|
48
48
|
});
|
|
49
|
+
exports.createTeachingScheduleSchema = validateTimeOrder(baseCreateShape);
|
|
50
|
+
exports.updateTeachingScheduleSchema = validateTimeOrder(baseCreateShape.partial());
|
|
51
|
+
// 2a. Skema Helper Param & Query — dipertahankan karena digunakan oleh sekolaos-api
|
|
52
|
+
// (routes: validate params/list query, controller & service: tipe TeachingScheduleListQuery)
|
|
49
53
|
exports.teachingScheduleParamsSchema = zod_1.z.object({
|
|
50
54
|
id: common_schema_js_1.uuidSchema,
|
|
51
55
|
});
|
|
@@ -55,4 +59,50 @@ exports.teachingScheduleListQuerySchema = zod_1.z.object({
|
|
|
55
59
|
teacherUserId: common_schema_js_1.uuidSchema.optional(),
|
|
56
60
|
subjectId: common_schema_js_1.uuidSchema.optional(),
|
|
57
61
|
});
|
|
62
|
+
// 3. Skema Alokasi Multi-JP Berurutan (Batch Create)
|
|
63
|
+
exports.batchCreateTeachingScheduleSchema = zod_1.z.object({
|
|
64
|
+
academicYearId: common_schema_js_1.uuidSchema,
|
|
65
|
+
classroomId: common_schema_js_1.uuidSchema,
|
|
66
|
+
teacherUserId: common_schema_js_1.uuidSchema,
|
|
67
|
+
subjectId: common_schema_js_1.uuidSchema,
|
|
68
|
+
dayOfWeek: exports.dayOfWeekEnum,
|
|
69
|
+
schedules: zod_1.z
|
|
70
|
+
.array(zod_1.z
|
|
71
|
+
.object({
|
|
72
|
+
periodNumber: zod_1.z.number().int().min(1).max(15),
|
|
73
|
+
startTime: exports.scheduleTimeStringSchema,
|
|
74
|
+
endTime: exports.scheduleTimeStringSchema,
|
|
75
|
+
})
|
|
76
|
+
.refine((slot) => slot.startTime < slot.endTime, {
|
|
77
|
+
message: "Jam mulai slot harus lebih awal daripada jam selesai",
|
|
78
|
+
path: ["endTime"],
|
|
79
|
+
}))
|
|
80
|
+
.min(1, "Minimal harus ada 1 alokasi jam pelajaran"),
|
|
81
|
+
});
|
|
82
|
+
// 4. Skema Duplikasi Roster Antar Rombel / Semester
|
|
83
|
+
exports.copyRosterRequestSchema = zod_1.z.object({
|
|
84
|
+
sourceClassroomId: common_schema_js_1.uuidSchema,
|
|
85
|
+
targetClassroomId: common_schema_js_1.uuidSchema,
|
|
86
|
+
academicYearId: common_schema_js_1.uuidSchema,
|
|
87
|
+
copyTeachers: zod_1.z.boolean().default(true),
|
|
88
|
+
});
|
|
89
|
+
// 5. Skema Query Deteksi Bentrok Ganda (Guru & Rombel Kelas)
|
|
90
|
+
exports.checkScheduleConflictQuerySchema = zod_1.z
|
|
91
|
+
.object({
|
|
92
|
+
academicYearId: common_schema_js_1.uuidSchema,
|
|
93
|
+
dayOfWeek: exports.dayOfWeekEnum,
|
|
94
|
+
startTime: exports.scheduleTimeStringSchema,
|
|
95
|
+
endTime: exports.scheduleTimeStringSchema,
|
|
96
|
+
teacherUserId: common_schema_js_1.uuidSchema.optional(),
|
|
97
|
+
classroomId: common_schema_js_1.uuidSchema.optional(),
|
|
98
|
+
excludeScheduleId: common_schema_js_1.uuidSchema.optional(),
|
|
99
|
+
})
|
|
100
|
+
.refine((query) => query.startTime < query.endTime, {
|
|
101
|
+
message: "Rentang jam query tidak valid (startTime harus < endTime)",
|
|
102
|
+
path: ["endTime"],
|
|
103
|
+
})
|
|
104
|
+
.refine((query) => !!query.teacherUserId || !!query.classroomId, {
|
|
105
|
+
message: "Minimal tentukan salah satu dari teacherUserId atau classroomId untuk pengecekan bentrok",
|
|
106
|
+
path: ["teacherUserId"],
|
|
107
|
+
});
|
|
58
108
|
//# sourceMappingURL=teaching-schedule.schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teaching-schedule.schema.js","sourceRoot":"","sources":["../../../src/academic/teaching-schedule.schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"teaching-schedule.schema.js","sourceRoot":"","sources":["../../../src/academic/teaching-schedule.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export const
|
|
5
|
-
|
|
2
|
+
import { uuidSchema } from "../common/common.schema.js";
|
|
3
|
+
// 1. Format Waktu Fleksibel (Mendukung HH:mm dan HH:mm:ss dari tipe TIME MySQL)
|
|
4
|
+
export const scheduleTimeStringSchema = z
|
|
5
|
+
.string()
|
|
6
|
+
.regex(/^([01]\d|2[0-3]):([0-5]\d)(:[0-5]\d)?$/, "Format jam harus HH:mm atau HH:mm:ss");
|
|
7
|
+
export const dayOfWeekEnum = z.enum([
|
|
8
|
+
"SENIN",
|
|
9
|
+
"SELASA",
|
|
10
|
+
"RABU",
|
|
11
|
+
"KAMIS",
|
|
12
|
+
"JUMAT",
|
|
13
|
+
"SABTU",
|
|
14
|
+
]);
|
|
15
|
+
// 2. Skema Entitas Utama
|
|
16
|
+
export const teachingScheduleSchema = z.object({
|
|
6
17
|
id: uuidSchema,
|
|
7
18
|
tenantId: uuidSchema,
|
|
8
19
|
academicYearId: uuidSchema,
|
|
@@ -13,36 +24,29 @@ const teachingScheduleObjectSchema = z.object({
|
|
|
13
24
|
subjectId: uuidSchema,
|
|
14
25
|
subjectName: z.string().optional(),
|
|
15
26
|
dayOfWeek: dayOfWeekEnum,
|
|
16
|
-
startTime:
|
|
17
|
-
endTime:
|
|
18
|
-
periodNumber:
|
|
27
|
+
startTime: scheduleTimeStringSchema,
|
|
28
|
+
endTime: scheduleTimeStringSchema,
|
|
29
|
+
periodNumber: z.number().int().min(1).max(15).optional(),
|
|
19
30
|
});
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
message: "Jam
|
|
31
|
+
// Helper Validasi Relasi Waktu Mulai < Waktu Selesai
|
|
32
|
+
const validateTimeOrder = (schema) => schema.refine((data) => !data.startTime || !data.endTime || data.startTime < data.endTime, {
|
|
33
|
+
message: "Jam mulai harus lebih awal daripada jam selesai",
|
|
23
34
|
path: ["endTime"],
|
|
24
35
|
});
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
.omit({
|
|
35
|
-
id: true,
|
|
36
|
-
tenantId: true,
|
|
37
|
-
classroomName: true,
|
|
38
|
-
teacherName: true,
|
|
39
|
-
subjectName: true,
|
|
40
|
-
})
|
|
41
|
-
.partial()
|
|
42
|
-
.refine((schedule) => !schedule.startTime || !schedule.endTime || schedule.startTime < schedule.endTime, {
|
|
43
|
-
message: "Jam selesai harus lebih besar dari jam mulai",
|
|
44
|
-
path: ["endTime"],
|
|
36
|
+
const baseCreateShape = teachingScheduleSchema.pick({
|
|
37
|
+
academicYearId: true,
|
|
38
|
+
classroomId: true,
|
|
39
|
+
teacherUserId: true,
|
|
40
|
+
subjectId: true,
|
|
41
|
+
dayOfWeek: true,
|
|
42
|
+
startTime: true,
|
|
43
|
+
endTime: true,
|
|
44
|
+
periodNumber: true,
|
|
45
45
|
});
|
|
46
|
+
export const createTeachingScheduleSchema = validateTimeOrder(baseCreateShape);
|
|
47
|
+
export const updateTeachingScheduleSchema = validateTimeOrder(baseCreateShape.partial());
|
|
48
|
+
// 2a. Skema Helper Param & Query — dipertahankan karena digunakan oleh sekolaos-api
|
|
49
|
+
// (routes: validate params/list query, controller & service: tipe TeachingScheduleListQuery)
|
|
46
50
|
export const teachingScheduleParamsSchema = z.object({
|
|
47
51
|
id: uuidSchema,
|
|
48
52
|
});
|
|
@@ -52,4 +56,50 @@ export const teachingScheduleListQuerySchema = z.object({
|
|
|
52
56
|
teacherUserId: uuidSchema.optional(),
|
|
53
57
|
subjectId: uuidSchema.optional(),
|
|
54
58
|
});
|
|
59
|
+
// 3. Skema Alokasi Multi-JP Berurutan (Batch Create)
|
|
60
|
+
export const batchCreateTeachingScheduleSchema = z.object({
|
|
61
|
+
academicYearId: uuidSchema,
|
|
62
|
+
classroomId: uuidSchema,
|
|
63
|
+
teacherUserId: uuidSchema,
|
|
64
|
+
subjectId: uuidSchema,
|
|
65
|
+
dayOfWeek: dayOfWeekEnum,
|
|
66
|
+
schedules: z
|
|
67
|
+
.array(z
|
|
68
|
+
.object({
|
|
69
|
+
periodNumber: z.number().int().min(1).max(15),
|
|
70
|
+
startTime: scheduleTimeStringSchema,
|
|
71
|
+
endTime: scheduleTimeStringSchema,
|
|
72
|
+
})
|
|
73
|
+
.refine((slot) => slot.startTime < slot.endTime, {
|
|
74
|
+
message: "Jam mulai slot harus lebih awal daripada jam selesai",
|
|
75
|
+
path: ["endTime"],
|
|
76
|
+
}))
|
|
77
|
+
.min(1, "Minimal harus ada 1 alokasi jam pelajaran"),
|
|
78
|
+
});
|
|
79
|
+
// 4. Skema Duplikasi Roster Antar Rombel / Semester
|
|
80
|
+
export const copyRosterRequestSchema = z.object({
|
|
81
|
+
sourceClassroomId: uuidSchema,
|
|
82
|
+
targetClassroomId: uuidSchema,
|
|
83
|
+
academicYearId: uuidSchema,
|
|
84
|
+
copyTeachers: z.boolean().default(true),
|
|
85
|
+
});
|
|
86
|
+
// 5. Skema Query Deteksi Bentrok Ganda (Guru & Rombel Kelas)
|
|
87
|
+
export const checkScheduleConflictQuerySchema = z
|
|
88
|
+
.object({
|
|
89
|
+
academicYearId: uuidSchema,
|
|
90
|
+
dayOfWeek: dayOfWeekEnum,
|
|
91
|
+
startTime: scheduleTimeStringSchema,
|
|
92
|
+
endTime: scheduleTimeStringSchema,
|
|
93
|
+
teacherUserId: uuidSchema.optional(),
|
|
94
|
+
classroomId: uuidSchema.optional(),
|
|
95
|
+
excludeScheduleId: uuidSchema.optional(),
|
|
96
|
+
})
|
|
97
|
+
.refine((query) => query.startTime < query.endTime, {
|
|
98
|
+
message: "Rentang jam query tidak valid (startTime harus < endTime)",
|
|
99
|
+
path: ["endTime"],
|
|
100
|
+
})
|
|
101
|
+
.refine((query) => !!query.teacherUserId || !!query.classroomId, {
|
|
102
|
+
message: "Minimal tentukan salah satu dari teacherUserId atau classroomId untuk pengecekan bentrok",
|
|
103
|
+
path: ["teacherUserId"],
|
|
104
|
+
});
|
|
55
105
|
//# sourceMappingURL=teaching-schedule.schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teaching-schedule.schema.js","sourceRoot":"","sources":["../../../src/academic/teaching-schedule.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"teaching-schedule.schema.js","sourceRoot":"","sources":["../../../src/academic/teaching-schedule.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +1,21 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
export declare const scheduleTimeStringSchema: z.ZodString;
|
|
2
3
|
export declare const dayOfWeekEnum: z.ZodEnum<["SENIN", "SELASA", "RABU", "KAMIS", "JUMAT", "SABTU"]>;
|
|
3
|
-
export declare const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
teacherUserId:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}, z.ZodTypeDef, {
|
|
19
|
-
id: string;
|
|
20
|
-
tenantId: string;
|
|
21
|
-
academicYearId: string;
|
|
22
|
-
classroomId: string;
|
|
23
|
-
teacherUserId: string;
|
|
24
|
-
subjectId: string;
|
|
25
|
-
dayOfWeek: "SENIN" | "SELASA" | "RABU" | "KAMIS" | "JUMAT" | "SABTU";
|
|
26
|
-
startTime: string;
|
|
27
|
-
endTime: string;
|
|
28
|
-
classroomName?: string | undefined;
|
|
29
|
-
teacherName?: string | undefined;
|
|
30
|
-
subjectName?: string | undefined;
|
|
31
|
-
periodNumber?: number | undefined;
|
|
32
|
-
}>, {
|
|
4
|
+
export declare const teachingScheduleSchema: z.ZodObject<{
|
|
5
|
+
id: z.ZodString;
|
|
6
|
+
tenantId: z.ZodString;
|
|
7
|
+
academicYearId: z.ZodString;
|
|
8
|
+
classroomId: z.ZodString;
|
|
9
|
+
classroomName: z.ZodOptional<z.ZodString>;
|
|
10
|
+
teacherUserId: z.ZodString;
|
|
11
|
+
teacherName: z.ZodOptional<z.ZodString>;
|
|
12
|
+
subjectId: z.ZodString;
|
|
13
|
+
subjectName: z.ZodOptional<z.ZodString>;
|
|
14
|
+
dayOfWeek: z.ZodEnum<["SENIN", "SELASA", "RABU", "KAMIS", "JUMAT", "SABTU"]>;
|
|
15
|
+
startTime: z.ZodString;
|
|
16
|
+
endTime: z.ZodString;
|
|
17
|
+
periodNumber: z.ZodOptional<z.ZodNumber>;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
33
19
|
id: string;
|
|
34
20
|
tenantId: string;
|
|
35
21
|
academicYearId: string;
|
|
@@ -95,16 +81,7 @@ export declare const createTeachingScheduleSchema: z.ZodEffects<z.ZodType<{
|
|
|
95
81
|
endTime: string;
|
|
96
82
|
periodNumber?: number | undefined;
|
|
97
83
|
}>;
|
|
98
|
-
export declare const updateTeachingScheduleSchema: z.ZodEffects<z.
|
|
99
|
-
academicYearId: z.ZodOptional<z.ZodString>;
|
|
100
|
-
classroomId: z.ZodOptional<z.ZodString>;
|
|
101
|
-
teacherUserId: z.ZodOptional<z.ZodString>;
|
|
102
|
-
subjectId: z.ZodOptional<z.ZodString>;
|
|
103
|
-
dayOfWeek: z.ZodOptional<z.ZodEnum<["SENIN", "SELASA", "RABU", "KAMIS", "JUMAT", "SABTU"]>>;
|
|
104
|
-
startTime: z.ZodOptional<z.ZodString>;
|
|
105
|
-
endTime: z.ZodOptional<z.ZodString>;
|
|
106
|
-
periodNumber: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
|
|
107
|
-
}, "strip", z.ZodTypeAny, {
|
|
84
|
+
export declare const updateTeachingScheduleSchema: z.ZodEffects<z.ZodType<{
|
|
108
85
|
academicYearId?: string | undefined;
|
|
109
86
|
classroomId?: string | undefined;
|
|
110
87
|
teacherUserId?: string | undefined;
|
|
@@ -113,7 +90,7 @@ export declare const updateTeachingScheduleSchema: z.ZodEffects<z.ZodObject<{
|
|
|
113
90
|
startTime?: string | undefined;
|
|
114
91
|
endTime?: string | undefined;
|
|
115
92
|
periodNumber?: number | undefined;
|
|
116
|
-
}, {
|
|
93
|
+
}, z.ZodTypeDef, {
|
|
117
94
|
academicYearId?: string | undefined;
|
|
118
95
|
classroomId?: string | undefined;
|
|
119
96
|
teacherUserId?: string | undefined;
|
|
@@ -164,9 +141,135 @@ export declare const teachingScheduleListQuerySchema: z.ZodObject<{
|
|
|
164
141
|
teacherUserId?: string | undefined;
|
|
165
142
|
subjectId?: string | undefined;
|
|
166
143
|
}>;
|
|
144
|
+
export declare const batchCreateTeachingScheduleSchema: z.ZodObject<{
|
|
145
|
+
academicYearId: z.ZodString;
|
|
146
|
+
classroomId: z.ZodString;
|
|
147
|
+
teacherUserId: z.ZodString;
|
|
148
|
+
subjectId: z.ZodString;
|
|
149
|
+
dayOfWeek: z.ZodEnum<["SENIN", "SELASA", "RABU", "KAMIS", "JUMAT", "SABTU"]>;
|
|
150
|
+
schedules: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
151
|
+
periodNumber: z.ZodNumber;
|
|
152
|
+
startTime: z.ZodString;
|
|
153
|
+
endTime: z.ZodString;
|
|
154
|
+
}, "strip", z.ZodTypeAny, {
|
|
155
|
+
startTime: string;
|
|
156
|
+
endTime: string;
|
|
157
|
+
periodNumber: number;
|
|
158
|
+
}, {
|
|
159
|
+
startTime: string;
|
|
160
|
+
endTime: string;
|
|
161
|
+
periodNumber: number;
|
|
162
|
+
}>, {
|
|
163
|
+
startTime: string;
|
|
164
|
+
endTime: string;
|
|
165
|
+
periodNumber: number;
|
|
166
|
+
}, {
|
|
167
|
+
startTime: string;
|
|
168
|
+
endTime: string;
|
|
169
|
+
periodNumber: number;
|
|
170
|
+
}>, "many">;
|
|
171
|
+
}, "strip", z.ZodTypeAny, {
|
|
172
|
+
academicYearId: string;
|
|
173
|
+
classroomId: string;
|
|
174
|
+
teacherUserId: string;
|
|
175
|
+
subjectId: string;
|
|
176
|
+
dayOfWeek: "SENIN" | "SELASA" | "RABU" | "KAMIS" | "JUMAT" | "SABTU";
|
|
177
|
+
schedules: {
|
|
178
|
+
startTime: string;
|
|
179
|
+
endTime: string;
|
|
180
|
+
periodNumber: number;
|
|
181
|
+
}[];
|
|
182
|
+
}, {
|
|
183
|
+
academicYearId: string;
|
|
184
|
+
classroomId: string;
|
|
185
|
+
teacherUserId: string;
|
|
186
|
+
subjectId: string;
|
|
187
|
+
dayOfWeek: "SENIN" | "SELASA" | "RABU" | "KAMIS" | "JUMAT" | "SABTU";
|
|
188
|
+
schedules: {
|
|
189
|
+
startTime: string;
|
|
190
|
+
endTime: string;
|
|
191
|
+
periodNumber: number;
|
|
192
|
+
}[];
|
|
193
|
+
}>;
|
|
194
|
+
export declare const copyRosterRequestSchema: z.ZodObject<{
|
|
195
|
+
sourceClassroomId: z.ZodString;
|
|
196
|
+
targetClassroomId: z.ZodString;
|
|
197
|
+
academicYearId: z.ZodString;
|
|
198
|
+
copyTeachers: z.ZodDefault<z.ZodBoolean>;
|
|
199
|
+
}, "strip", z.ZodTypeAny, {
|
|
200
|
+
academicYearId: string;
|
|
201
|
+
sourceClassroomId: string;
|
|
202
|
+
targetClassroomId: string;
|
|
203
|
+
copyTeachers: boolean;
|
|
204
|
+
}, {
|
|
205
|
+
academicYearId: string;
|
|
206
|
+
sourceClassroomId: string;
|
|
207
|
+
targetClassroomId: string;
|
|
208
|
+
copyTeachers?: boolean | undefined;
|
|
209
|
+
}>;
|
|
210
|
+
export declare const checkScheduleConflictQuerySchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
211
|
+
academicYearId: z.ZodString;
|
|
212
|
+
dayOfWeek: z.ZodEnum<["SENIN", "SELASA", "RABU", "KAMIS", "JUMAT", "SABTU"]>;
|
|
213
|
+
startTime: z.ZodString;
|
|
214
|
+
endTime: z.ZodString;
|
|
215
|
+
teacherUserId: z.ZodOptional<z.ZodString>;
|
|
216
|
+
classroomId: z.ZodOptional<z.ZodString>;
|
|
217
|
+
excludeScheduleId: z.ZodOptional<z.ZodString>;
|
|
218
|
+
}, "strip", z.ZodTypeAny, {
|
|
219
|
+
academicYearId: string;
|
|
220
|
+
dayOfWeek: "SENIN" | "SELASA" | "RABU" | "KAMIS" | "JUMAT" | "SABTU";
|
|
221
|
+
startTime: string;
|
|
222
|
+
endTime: string;
|
|
223
|
+
classroomId?: string | undefined;
|
|
224
|
+
teacherUserId?: string | undefined;
|
|
225
|
+
excludeScheduleId?: string | undefined;
|
|
226
|
+
}, {
|
|
227
|
+
academicYearId: string;
|
|
228
|
+
dayOfWeek: "SENIN" | "SELASA" | "RABU" | "KAMIS" | "JUMAT" | "SABTU";
|
|
229
|
+
startTime: string;
|
|
230
|
+
endTime: string;
|
|
231
|
+
classroomId?: string | undefined;
|
|
232
|
+
teacherUserId?: string | undefined;
|
|
233
|
+
excludeScheduleId?: string | undefined;
|
|
234
|
+
}>, {
|
|
235
|
+
academicYearId: string;
|
|
236
|
+
dayOfWeek: "SENIN" | "SELASA" | "RABU" | "KAMIS" | "JUMAT" | "SABTU";
|
|
237
|
+
startTime: string;
|
|
238
|
+
endTime: string;
|
|
239
|
+
classroomId?: string | undefined;
|
|
240
|
+
teacherUserId?: string | undefined;
|
|
241
|
+
excludeScheduleId?: string | undefined;
|
|
242
|
+
}, {
|
|
243
|
+
academicYearId: string;
|
|
244
|
+
dayOfWeek: "SENIN" | "SELASA" | "RABU" | "KAMIS" | "JUMAT" | "SABTU";
|
|
245
|
+
startTime: string;
|
|
246
|
+
endTime: string;
|
|
247
|
+
classroomId?: string | undefined;
|
|
248
|
+
teacherUserId?: string | undefined;
|
|
249
|
+
excludeScheduleId?: string | undefined;
|
|
250
|
+
}>, {
|
|
251
|
+
academicYearId: string;
|
|
252
|
+
dayOfWeek: "SENIN" | "SELASA" | "RABU" | "KAMIS" | "JUMAT" | "SABTU";
|
|
253
|
+
startTime: string;
|
|
254
|
+
endTime: string;
|
|
255
|
+
classroomId?: string | undefined;
|
|
256
|
+
teacherUserId?: string | undefined;
|
|
257
|
+
excludeScheduleId?: string | undefined;
|
|
258
|
+
}, {
|
|
259
|
+
academicYearId: string;
|
|
260
|
+
dayOfWeek: "SENIN" | "SELASA" | "RABU" | "KAMIS" | "JUMAT" | "SABTU";
|
|
261
|
+
startTime: string;
|
|
262
|
+
endTime: string;
|
|
263
|
+
classroomId?: string | undefined;
|
|
264
|
+
teacherUserId?: string | undefined;
|
|
265
|
+
excludeScheduleId?: string | undefined;
|
|
266
|
+
}>;
|
|
167
267
|
export type DayOfWeek = z.infer<typeof dayOfWeekEnum>;
|
|
168
268
|
export type TeachingSchedule = z.infer<typeof teachingScheduleSchema>;
|
|
169
269
|
export type CreateTeachingScheduleInput = z.infer<typeof createTeachingScheduleSchema>;
|
|
170
270
|
export type UpdateTeachingScheduleInput = z.infer<typeof updateTeachingScheduleSchema>;
|
|
171
271
|
export type TeachingScheduleParams = z.infer<typeof teachingScheduleParamsSchema>;
|
|
172
272
|
export type TeachingScheduleListQuery = z.infer<typeof teachingScheduleListQuerySchema>;
|
|
273
|
+
export type BatchCreateTeachingScheduleInput = z.infer<typeof batchCreateTeachingScheduleSchema>;
|
|
274
|
+
export type CopyRosterRequestInput = z.infer<typeof copyRosterRequestSchema>;
|
|
275
|
+
export type CheckScheduleConflictQuery = z.infer<typeof checkScheduleConflictQuerySchema>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sekolaos/shared-schema",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Single source of truth untuk validasi skema data dan inferensi tipe TypeScript pada ekosistem Sekolaos (backend Express, kiosk presensi, dan modul lainnya).",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "Sekolaos",
|