@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.
@@ -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.periodNumberSchema = exports.dayOfWeekEnum = void 0;
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
- exports.dayOfWeekEnum = zod_1.z.enum(["SENIN", "SELASA", "RABU", "KAMIS", "JUMAT", "SABTU"]);
7
- exports.periodNumberSchema = zod_1.z.number().int().min(1).max(15);
8
- const teachingScheduleObjectSchema = zod_1.z.object({
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: common_schema_js_1.timeStringSchema,
20
- endTime: common_schema_js_1.timeStringSchema,
21
- periodNumber: exports.periodNumberSchema.optional(),
30
+ startTime: exports.scheduleTimeStringSchema,
31
+ endTime: exports.scheduleTimeStringSchema,
32
+ periodNumber: zod_1.z.number().int().min(1).max(15).optional(),
22
33
  });
23
- /** Aturan lintas-field: jam selesai harus lebih besar dari jam mulai. */
24
- const addTimeRangeRule = (schema) => schema.refine((schedule) => schedule.startTime < schedule.endTime, {
25
- message: "Jam selesai harus lebih besar dari jam mulai",
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 = addTimeRangeRule(teachingScheduleObjectSchema);
29
- exports.createTeachingScheduleSchema = addTimeRangeRule(teachingScheduleObjectSchema.omit({
30
- id: true,
31
- tenantId: true,
32
- classroomName: true,
33
- teacherName: true,
34
- subjectName: true,
35
- }));
36
- exports.updateTeachingScheduleSchema = teachingScheduleObjectSchema
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,iEAA0E;AAE7D,QAAA,aAAa,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAE/E,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAElE,MAAM,4BAA4B,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,EAAE,EAAE,6BAAU;IACd,QAAQ,EAAE,6BAAU;IACpB,cAAc,EAAE,6BAAU;IAC1B,WAAW,EAAE,6BAAU;IACvB,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,aAAa,EAAE,6BAAU;IACzB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,6BAAU;IACrB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,qBAAa;IACxB,SAAS,EAAE,mCAAgB;IAC3B,OAAO,EAAE,mCAAgB;IACzB,YAAY,EAAE,0BAAkB,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAEH,yEAAyE;AACzE,MAAM,gBAAgB,GAAG,CAAmD,MAAoB,EAAE,EAAE,CAClG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE;IACjE,OAAO,EAAE,8CAA8C;IACvD,IAAI,EAAE,CAAC,SAAS,CAAC;CAClB,CAAC,CAAC;AAEQ,QAAA,sBAAsB,GAAG,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;AAExE,QAAA,4BAA4B,GAAG,gBAAgB,CAC1D,4BAA4B,CAAC,IAAI,CAAC;IAChC,EAAE,EAAE,IAAI;IACR,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,IAAI;IACnB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;CAClB,CAAC,CACH,CAAC;AAEW,QAAA,4BAA4B,GAAG,4BAA4B;KACrE,IAAI,CAAC;IACJ,EAAE,EAAE,IAAI;IACR,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,IAAI;IACnB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;CAClB,CAAC;KACD,OAAO,EAAE;KACT,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE;IACvG,OAAO,EAAE,8CAA8C;IACvD,IAAI,EAAE,CAAC,SAAS,CAAC;CAClB,CAAC,CAAC;AAEQ,QAAA,4BAA4B,GAAG,OAAC,CAAC,MAAM,CAAC;IACnD,EAAE,EAAE,6BAAU;CACf,CAAC,CAAC;AAEU,QAAA,+BAA+B,GAAG,OAAC,CAAC,MAAM,CAAC;IACtD,cAAc,EAAE,6BAAU,CAAC,QAAQ,EAAE;IACrC,WAAW,EAAE,6BAAU,CAAC,QAAQ,EAAE;IAClC,aAAa,EAAE,6BAAU,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,6BAAU,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}
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 { timeStringSchema, uuidSchema } from "../common/common.schema.js";
3
- export const dayOfWeekEnum = z.enum(["SENIN", "SELASA", "RABU", "KAMIS", "JUMAT", "SABTU"]);
4
- export const periodNumberSchema = z.number().int().min(1).max(15);
5
- const teachingScheduleObjectSchema = z.object({
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: timeStringSchema,
17
- endTime: timeStringSchema,
18
- periodNumber: periodNumberSchema.optional(),
27
+ startTime: scheduleTimeStringSchema,
28
+ endTime: scheduleTimeStringSchema,
29
+ periodNumber: z.number().int().min(1).max(15).optional(),
19
30
  });
20
- /** Aturan lintas-field: jam selesai harus lebih besar dari jam mulai. */
21
- const addTimeRangeRule = (schema) => schema.refine((schedule) => schedule.startTime < schedule.endTime, {
22
- message: "Jam selesai harus lebih besar dari jam mulai",
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
- export const teachingScheduleSchema = addTimeRangeRule(teachingScheduleObjectSchema);
26
- export const createTeachingScheduleSchema = addTimeRangeRule(teachingScheduleObjectSchema.omit({
27
- id: true,
28
- tenantId: true,
29
- classroomName: true,
30
- teacherName: true,
31
- subjectName: true,
32
- }));
33
- export const updateTeachingScheduleSchema = teachingScheduleObjectSchema
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,gBAAgB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAElE,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,EAAE,EAAE,UAAU;IACd,QAAQ,EAAE,UAAU;IACpB,cAAc,EAAE,UAAU;IAC1B,WAAW,EAAE,UAAU;IACvB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,aAAa,EAAE,UAAU;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,gBAAgB;IAC3B,OAAO,EAAE,gBAAgB;IACzB,YAAY,EAAE,kBAAkB,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAEH,yEAAyE;AACzE,MAAM,gBAAgB,GAAG,CAAmD,MAAoB,EAAE,EAAE,CAClG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE;IACjE,OAAO,EAAE,8CAA8C;IACvD,IAAI,EAAE,CAAC,SAAS,CAAC;CAClB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,4BAA4B,GAAG,gBAAgB,CAC1D,4BAA4B,CAAC,IAAI,CAAC;IAChC,EAAE,EAAE,IAAI;IACR,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,IAAI;IACnB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;CAClB,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,4BAA4B;KACrE,IAAI,CAAC;IACJ,EAAE,EAAE,IAAI;IACR,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,IAAI;IACnB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;CAClB,CAAC;KACD,OAAO,EAAE;KACT,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE;IACvG,OAAO,EAAE,8CAA8C;IACvD,IAAI,EAAE,CAAC,SAAS,CAAC;CAClB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,EAAE,EAAE,UAAU;CACf,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,cAAc,EAAE,UAAU,CAAC,QAAQ,EAAE;IACrC,WAAW,EAAE,UAAU,CAAC,QAAQ,EAAE;IAClC,aAAa,EAAE,UAAU,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}
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 periodNumberSchema: z.ZodNumber;
4
- export declare const teachingScheduleSchema: z.ZodEffects<z.ZodType<{
5
- id: string;
6
- tenantId: string;
7
- academicYearId: string;
8
- classroomId: string;
9
- teacherUserId: string;
10
- subjectId: string;
11
- dayOfWeek: "SENIN" | "SELASA" | "RABU" | "KAMIS" | "JUMAT" | "SABTU";
12
- startTime: string;
13
- endTime: string;
14
- classroomName?: string | undefined;
15
- teacherName?: string | undefined;
16
- subjectName?: string | undefined;
17
- periodNumber?: number | undefined;
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.ZodObject<{
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.2.0",
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",