@sekolaos/shared-schema 1.0.0 → 1.0.2

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.
Files changed (56) hide show
  1. package/README.md +8 -4
  2. package/dist/cjs/academic/academic-year.schema.js +32 -5
  3. package/dist/cjs/academic/academic-year.schema.js.map +1 -1
  4. package/dist/cjs/academic/class-room.schema.js +20 -6
  5. package/dist/cjs/academic/class-room.schema.js.map +1 -1
  6. package/dist/cjs/academic/subject.schema.js +21 -0
  7. package/dist/cjs/academic/subject.schema.js.map +1 -0
  8. package/dist/cjs/academic/teaching-schedule.schema.js +49 -0
  9. package/dist/cjs/academic/teaching-schedule.schema.js.map +1 -0
  10. package/dist/cjs/attendance/attendance-class.schema.js +1 -1
  11. package/dist/cjs/attendance/picket-assignment.schema.js +24 -0
  12. package/dist/cjs/attendance/picket-assignment.schema.js.map +1 -0
  13. package/dist/cjs/common/common.schema.js +3 -1
  14. package/dist/cjs/common/common.schema.js.map +1 -1
  15. package/dist/cjs/index.js +4 -0
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/tenant/attendance-shift.schema.js +59 -0
  18. package/dist/cjs/tenant/attendance-shift.schema.js.map +1 -0
  19. package/dist/cjs/user/student.schema.js +48 -9
  20. package/dist/cjs/user/student.schema.js.map +1 -1
  21. package/dist/cjs/user/user.schema.js +44 -2
  22. package/dist/cjs/user/user.schema.js.map +1 -1
  23. package/dist/esm/academic/academic-year.schema.js +32 -5
  24. package/dist/esm/academic/academic-year.schema.js.map +1 -1
  25. package/dist/esm/academic/class-room.schema.js +19 -5
  26. package/dist/esm/academic/class-room.schema.js.map +1 -1
  27. package/dist/esm/academic/subject.schema.js +18 -0
  28. package/dist/esm/academic/subject.schema.js.map +1 -0
  29. package/dist/esm/academic/teaching-schedule.schema.js +46 -0
  30. package/dist/esm/academic/teaching-schedule.schema.js.map +1 -0
  31. package/dist/esm/attendance/attendance-class.schema.js +1 -1
  32. package/dist/esm/attendance/picket-assignment.schema.js +21 -0
  33. package/dist/esm/attendance/picket-assignment.schema.js.map +1 -0
  34. package/dist/esm/common/common.schema.js +2 -0
  35. package/dist/esm/common/common.schema.js.map +1 -1
  36. package/dist/esm/index.js +4 -0
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/tenant/attendance-shift.schema.js +56 -0
  39. package/dist/esm/tenant/attendance-shift.schema.js.map +1 -0
  40. package/dist/esm/user/student.schema.js +47 -8
  41. package/dist/esm/user/student.schema.js.map +1 -1
  42. package/dist/esm/user/user.schema.js +44 -2
  43. package/dist/esm/user/user.schema.js.map +1 -1
  44. package/dist/types/academic/academic-year.schema.d.ts +75 -9
  45. package/dist/types/academic/class-room.schema.d.ts +70 -11
  46. package/dist/types/academic/subject.schema.d.ts +56 -0
  47. package/dist/types/academic/teaching-schedule.schema.d.ts +147 -0
  48. package/dist/types/attendance/attendance-class.schema.d.ts +3 -3
  49. package/dist/types/attendance/barcode-rolling.schema.d.ts +2 -2
  50. package/dist/types/attendance/picket-assignment.schema.d.ts +53 -0
  51. package/dist/types/common/common.schema.d.ts +4 -0
  52. package/dist/types/index.d.ts +4 -0
  53. package/dist/types/tenant/attendance-shift.schema.d.ts +97 -0
  54. package/dist/types/user/student.schema.d.ts +184 -13
  55. package/dist/types/user/user.schema.d.ts +130 -0
  56. package/package.json +1 -1
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ import { uuidSchema } from "../common/common.schema.js";
3
+ export const subjectCodeSchema = z.string().trim().min(2).max(20);
4
+ export const subjectSchema = z.object({
5
+ id: uuidSchema,
6
+ tenantId: uuidSchema,
7
+ code: subjectCodeSchema,
8
+ name: z.string().min(2).max(100),
9
+ description: z.string().max(255).optional().nullable(),
10
+ isActive: z.boolean().default(true),
11
+ });
12
+ export const createSubjectSchema = subjectSchema.pick({
13
+ code: true,
14
+ name: true,
15
+ description: true,
16
+ });
17
+ export const updateSubjectSchema = createSubjectSchema.partial();
18
+ //# sourceMappingURL=subject.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject.schema.js","sourceRoot":"","sources":["../../../src/academic/subject.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAElE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,UAAU;IACd,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACtD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC,IAAI,CAAC;IACpD,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,EAAE,CAAC"}
@@ -0,0 +1,46 @@
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({
6
+ id: uuidSchema,
7
+ tenantId: uuidSchema,
8
+ academicYearId: uuidSchema,
9
+ classroomId: uuidSchema,
10
+ classroomName: z.string().optional(),
11
+ teacherUserId: uuidSchema,
12
+ teacherName: z.string().optional(),
13
+ subjectId: uuidSchema,
14
+ subjectName: z.string().optional(),
15
+ dayOfWeek: dayOfWeekEnum,
16
+ startTime: timeStringSchema,
17
+ endTime: timeStringSchema,
18
+ periodNumber: periodNumberSchema.optional(),
19
+ });
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",
23
+ path: ["endTime"],
24
+ });
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"],
45
+ });
46
+ //# sourceMappingURL=teaching-schedule.schema.js.map
@@ -0,0 +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"}
@@ -9,7 +9,7 @@ export const classAttendanceUpdateItemSchema = z.object({
9
9
  export const updateClassAttendanceRequestSchema = z.object({
10
10
  teachingScheduleId: uuidSchema,
11
11
  academicYearId: uuidSchema,
12
- classRoomId: uuidSchema,
12
+ classroomId: uuidSchema,
13
13
  date: z.string().date(),
14
14
  attendances: z.array(classAttendanceUpdateItemSchema).min(1),
15
15
  });
@@ -0,0 +1,21 @@
1
+ import { z } from "zod";
2
+ import { uuidSchema } from "../common/common.schema.js";
3
+ import { dayOfWeekEnum } from "../academic/teaching-schedule.schema.js";
4
+ export const picketLocationSchema = z.string().trim().min(1).max(100);
5
+ export const picketAssignmentSchema = z.object({
6
+ id: uuidSchema,
7
+ tenantId: uuidSchema,
8
+ academicYearId: uuidSchema,
9
+ teacherUserId: uuidSchema,
10
+ teacherName: z.string().optional(),
11
+ dayOfWeek: dayOfWeekEnum,
12
+ location: picketLocationSchema.default("Gerbang Utama"),
13
+ isActive: z.boolean().default(true),
14
+ });
15
+ export const createPicketAssignmentSchema = picketAssignmentSchema.pick({
16
+ academicYearId: true,
17
+ teacherUserId: true,
18
+ dayOfWeek: true,
19
+ location: true,
20
+ });
21
+ //# sourceMappingURL=picket-assignment.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picket-assignment.schema.js","sourceRoot":"","sources":["../../../src/attendance/picket-assignment.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,EAAE,EAAE,UAAU;IACd,QAAQ,EAAE,UAAU;IACpB,cAAc,EAAE,UAAU;IAC1B,aAAa,EAAE,UAAU;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,aAAa;IACxB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC,eAAe,CAAC;IACvD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,sBAAsB,CAAC,IAAI,CAAC;IACtE,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { z } from "zod";
2
2
  export const uuidSchema = z.string().uuid({ message: "Format UUID tidak valid" });
3
3
  export const timestampSchema = z.string().datetime({ message: "Format ISO datetime tidak valid" });
4
+ export const dateStringSchema = z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Format tanggal harus YYYY-MM-DD");
5
+ export const timeStringSchema = z.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Format jam harus HH:mm (contoh: 07:00)");
4
6
  export const baseResponseSchema = (dataSchema) => z.object({
5
7
  success: z.boolean(),
6
8
  message: z.string(),
@@ -1 +1 @@
1
- {"version":3,"file":"common.schema.js","sourceRoot":"","sources":["../../../src/common/common.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;AAElF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;AAEnG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAyB,UAAa,EAAE,EAAE,CAC1E,CAAC,CAAC,MAAM,CAAC;IACP,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,UAAU;CACjB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,KAAK,CACb,CAAC,CAAC,MAAM,CAAC;QACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CACH,CAAC,QAAQ,EAAE;CACb,CAAC,CAAC"}
1
+ {"version":3,"file":"common.schema.js","sourceRoot":"","sources":["../../../src/common/common.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;AAElF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;AAEnG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,iCAAiC,CAAC,CAAC;AAE3G,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,6BAA6B,EAAE,wCAAwC,CAAC,CAAC;AAE1H,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAyB,UAAa,EAAE,EAAE,CAC1E,CAAC,CAAC,MAAM,CAAC;IACP,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,UAAU;CACjB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,KAAK,CACb,CAAC,CAAC,MAAM,CAAC;QACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CACH,CAAC,QAAQ,EAAE;CACb,CAAC,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,13 +1,17 @@
1
1
  export * from "./common/common.schema.js";
2
2
  export * from "./common/pagination.schema.js";
3
3
  export * from "./tenant/tenant.schema.js";
4
+ export * from "./tenant/attendance-shift.schema.js";
4
5
  export * from "./auth/role.schema.js";
5
6
  export * from "./auth/auth.schema.js";
6
7
  export * from "./academic/academic-year.schema.js";
7
8
  export * from "./academic/class-room.schema.js";
9
+ export * from "./academic/subject.schema.js";
10
+ export * from "./academic/teaching-schedule.schema.js";
8
11
  export * from "./user/user.schema.js";
9
12
  export * from "./user/student.schema.js";
10
13
  export * from "./attendance/attendance-kiosk.schema.js";
11
14
  export * from "./attendance/attendance-class.schema.js";
15
+ export * from "./attendance/picket-assignment.schema.js";
12
16
  export * from "./attendance/barcode-rolling.schema.js";
13
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { z } from "zod";
2
+ import { timeStringSchema, uuidSchema } from "../common/common.schema.js";
3
+ export const shiftTargetTypeEnum = z.enum(["SISWA", "GURU"]);
4
+ const attendanceShiftObjectSchema = z.object({
5
+ id: uuidSchema,
6
+ tenantId: uuidSchema,
7
+ targetType: shiftTargetTypeEnum,
8
+ name: z.string().min(2).max(100),
9
+ checkInStart: timeStringSchema,
10
+ checkInEnd: timeStringSchema,
11
+ lateToleranceMinutes: z.number().int().min(0).max(1440).default(15),
12
+ checkOutStart: timeStringSchema,
13
+ checkOutEnd: timeStringSchema,
14
+ fridayCheckOutStart: timeStringSchema.optional().nullable(),
15
+ fridayCheckOutEnd: timeStringSchema.optional().nullable(),
16
+ });
17
+ /** Aturan lintas-field: rentang jam harus berurutan dan jam pulang Jumat harus lengkap. */
18
+ const addShiftWindowRules = (schema) => schema.superRefine((shift, ctx) => {
19
+ if (shift.checkInStart >= shift.checkInEnd) {
20
+ ctx.addIssue({
21
+ code: z.ZodIssueCode.custom,
22
+ path: ["checkInEnd"],
23
+ message: "Jam akhir masuk harus lebih besar dari jam mulai masuk",
24
+ });
25
+ }
26
+ if (shift.checkOutStart >= shift.checkOutEnd) {
27
+ ctx.addIssue({
28
+ code: z.ZodIssueCode.custom,
29
+ path: ["checkOutEnd"],
30
+ message: "Jam akhir pulang harus lebih besar dari jam mulai pulang",
31
+ });
32
+ }
33
+ const fridayCheckOutStart = shift.fridayCheckOutStart;
34
+ const fridayCheckOutEnd = shift.fridayCheckOutEnd;
35
+ if (Boolean(fridayCheckOutStart) !== Boolean(fridayCheckOutEnd)) {
36
+ ctx.addIssue({
37
+ code: z.ZodIssueCode.custom,
38
+ path: [fridayCheckOutStart ? "fridayCheckOutEnd" : "fridayCheckOutStart"],
39
+ message: "Jam pulang khusus Jumat harus diisi lengkap (mulai dan akhir)",
40
+ });
41
+ return;
42
+ }
43
+ if (fridayCheckOutStart && fridayCheckOutEnd && fridayCheckOutStart >= fridayCheckOutEnd) {
44
+ ctx.addIssue({
45
+ code: z.ZodIssueCode.custom,
46
+ path: ["fridayCheckOutEnd"],
47
+ message: "Jam akhir pulang Jumat harus lebih besar dari jam mulai pulang Jumat",
48
+ });
49
+ }
50
+ });
51
+ export const attendanceShiftSchema = addShiftWindowRules(attendanceShiftObjectSchema);
52
+ export const upsertAttendanceShiftSchema = addShiftWindowRules(attendanceShiftObjectSchema.omit({
53
+ id: true,
54
+ tenantId: true,
55
+ }));
56
+ //# sourceMappingURL=attendance-shift.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attendance-shift.schema.js","sourceRoot":"","sources":["../../../src/tenant/attendance-shift.schema.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,62 @@
1
1
  import { z } from "zod";
2
2
  import { uuidSchema } from "../common/common.schema.js";
3
+ export const genderEnum = z.enum(["L", "P"]);
4
+ export const nisSchema = z.string().min(3).max(30);
5
+ export const nisnSchema = z.string().regex(/^\d{10}$/, "NISN harus 10 digit angka");
6
+ export const barcodeValueSchema = z.string().min(3).max(50);
7
+ export const parentPhoneSchema = z.string().regex(/^\+?[0-9]{8,15}$/, "Nomor telepon orang tua tidak valid (8-15 digit)");
3
8
  export const studentSchema = z.object({
4
9
  id: uuidSchema,
5
10
  tenantId: uuidSchema,
6
- nis: z.string().min(3).max(30),
7
- nisn: z.string().length(10, "NISN harus 10 digit").optional().nullable(),
11
+ nis: nisSchema,
12
+ nisn: nisnSchema.optional().nullable(),
8
13
  fullName: z.string().min(2).max(255),
9
- gender: z.enum(["L", "P"]),
10
- classRoomId: uuidSchema,
11
- classRoomName: z.string(),
12
- barcodeValue: z.string().min(3).max(50),
14
+ gender: genderEnum,
15
+ classroomId: uuidSchema,
16
+ classroomName: z.string(),
17
+ parentPhone: parentPhoneSchema.optional().nullable(),
18
+ barcodeValue: barcodeValueSchema,
13
19
  isActive: z.boolean().default(true),
14
20
  });
21
+ export const createStudentSchema = z.object({
22
+ nis: nisSchema,
23
+ nisn: nisnSchema.optional().nullable(),
24
+ fullName: z.string().min(2).max(255),
25
+ gender: genderEnum,
26
+ classroomId: uuidSchema,
27
+ parentPhone: parentPhoneSchema.optional().nullable(),
28
+ barcodeValue: barcodeValueSchema.optional(),
29
+ });
30
+ export const updateStudentSchema = createStudentSchema.partial();
15
31
  export const studentOfflineSyncCacheSchema = studentSchema.pick({
16
32
  id: true,
17
33
  nis: true,
18
34
  fullName: true,
19
- classRoomId: true,
20
- classRoomName: true,
35
+ classroomId: true,
36
+ classroomName: true,
21
37
  barcodeValue: true,
22
38
  });
39
+ export const bulkImportStudentRowSchema = z.object({
40
+ nis: z.string().min(3).max(30).trim(),
41
+ nisn: z.string().trim().optional().nullable(),
42
+ fullName: z.string().min(2).max(255).trim(),
43
+ gender: genderEnum,
44
+ className: z.string().min(1).max(50).trim(),
45
+ parentPhone: z.string().trim().optional().nullable(),
46
+ });
47
+ export const bulkImportStudentRequestSchema = z.object({
48
+ academicYearId: uuidSchema,
49
+ defaultclassroomId: uuidSchema.optional(),
50
+ students: z.array(bulkImportStudentRowSchema).min(1, "Minimal harus ada 1 baris siswa"),
51
+ });
52
+ export const bulkImportStudentResponseSchema = z.object({
53
+ totalProcessed: z.number().int().nonnegative(),
54
+ totalSuccess: z.number().int().nonnegative(),
55
+ totalFailed: z.number().int().nonnegative(),
56
+ errors: z.array(z.object({
57
+ row: z.number().int().positive(),
58
+ nis: z.string().optional(),
59
+ message: z.string(),
60
+ })),
61
+ });
23
62
  //# sourceMappingURL=student.schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"student.schema.js","sourceRoot":"","sources":["../../../src/user/student.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,UAAU;IACd,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACxE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1B,WAAW,EAAE,UAAU;IACvB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACvC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,aAAa,CAAC,IAAI,CAAC;IAC9D,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,IAAI;CACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"student.schema.js","sourceRoot":"","sources":["../../../src/user/student.schema.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,53 @@
1
1
  import { z } from "zod";
2
- import { uuidSchema } from "../common/common.schema.js";
2
+ import { timestampSchema, uuidSchema } from "../common/common.schema.js";
3
+ import { authenticatedUserRoleSummarySchema } from "../auth/auth.schema.js";
4
+ export const usernameSchema = z
5
+ .string()
6
+ .min(3)
7
+ .max(50)
8
+ .regex(/^[a-zA-Z0-9._-]+$/, "Username hanya boleh berisi huruf, angka, titik, underscore, dan strip");
9
+ export const passwordSchema = z.string().min(6, "Password minimal 6 karakter").max(128);
10
+ export const nipSchema = z.string().max(30).regex(/^\d{8,18}$/, "NIP/NUPTK harus berupa 8-18 digit angka");
11
+ export const phoneNumberSchema = z.string().regex(/^\+?[0-9]{8,15}$/, "Nomor telepon tidak valid (8-15 digit)");
3
12
  export const userSchema = z.object({
4
13
  id: uuidSchema,
5
14
  tenantId: uuidSchema,
6
- username: z.string().min(3).max(50).regex(/^[a-zA-Z0-9._-]+$/, "Username hanya boleh berisi huruf, angka, titik, underscore, dan strip"),
15
+ username: usernameSchema,
7
16
  email: z.string().email().optional().nullable(),
8
17
  fullName: z.string().min(2).max(255),
9
18
  isActive: z.boolean().default(true),
10
19
  });
20
+ export const userProfileSchema = z.object({
21
+ id: uuidSchema,
22
+ tenantId: uuidSchema,
23
+ username: usernameSchema,
24
+ email: z.string().email(),
25
+ fullName: z.string().min(2).max(255),
26
+ nip: nipSchema.optional().nullable(),
27
+ phoneNumber: phoneNumberSchema.optional().nullable(),
28
+ isActive: z.boolean().default(true),
29
+ roles: z.array(authenticatedUserRoleSummarySchema).optional(),
30
+ createdAt: timestampSchema,
31
+ updatedAt: timestampSchema,
32
+ });
33
+ export const createUserSchema = z.object({
34
+ username: usernameSchema,
35
+ email: z.string().email(),
36
+ password: passwordSchema,
37
+ fullName: z.string().min(2).max(255),
38
+ nip: nipSchema.optional().nullable(),
39
+ phoneNumber: phoneNumberSchema.optional().nullable(),
40
+ roleIds: z.array(uuidSchema).min(1, "Minimal tentukan 1 role awal"),
41
+ academicYearId: uuidSchema,
42
+ });
43
+ export const updateUserSchema = createUserSchema.omit({
44
+ password: true,
45
+ roleIds: true,
46
+ academicYearId: true,
47
+ }).partial();
48
+ export const assignUserRolesRequestSchema = z.object({
49
+ userId: uuidSchema,
50
+ academicYearId: uuidSchema,
51
+ roleIds: z.array(uuidSchema).min(1, "Minimal pilih 1 peran"),
52
+ });
11
53
  //# sourceMappingURL=user.schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.schema.js","sourceRoot":"","sources":["../../../src/user/user.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,EAAE,EAAE,UAAU;IACd,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,EAAE,wEAAwE,CAAC;IACxI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACpC,CAAC,CAAC"}
1
+ {"version":3,"file":"user.schema.js","sourceRoot":"","sources":["../../../src/user/user.schema.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,23 @@
1
1
  import { z } from "zod";
2
2
  export declare const semesterEnum: z.ZodEnum<["GANJIL", "GENAP"]>;
3
- export declare const academicYearSchema: z.ZodObject<{
4
- id: z.ZodString;
5
- tenantId: z.ZodString;
6
- name: z.ZodString;
7
- semester: z.ZodEnum<["GANJIL", "GENAP"]>;
8
- isActive: z.ZodBoolean;
9
- startDate: z.ZodString;
10
- endDate: z.ZodString;
11
- }, "strip", z.ZodTypeAny, {
3
+ export declare const academicYearNameSchema: z.ZodString;
4
+ export declare const academicYearSchema: z.ZodEffects<z.ZodType<{
5
+ id: string;
6
+ name: string;
7
+ tenantId: string;
8
+ isActive: boolean;
9
+ semester: "GANJIL" | "GENAP";
10
+ startDate: string;
11
+ endDate: string;
12
+ }, z.ZodTypeDef, {
13
+ id: string;
14
+ name: string;
15
+ tenantId: string;
16
+ isActive: boolean;
17
+ semester: "GANJIL" | "GENAP";
18
+ startDate: string;
19
+ endDate: string;
20
+ }>, {
12
21
  id: string;
13
22
  name: string;
14
23
  tenantId: string;
@@ -25,5 +34,62 @@ export declare const academicYearSchema: z.ZodObject<{
25
34
  startDate: string;
26
35
  endDate: string;
27
36
  }>;
37
+ export declare const createAcademicYearSchema: z.ZodEffects<z.ZodType<{
38
+ name: string;
39
+ semester: "GANJIL" | "GENAP";
40
+ startDate: string;
41
+ endDate: string;
42
+ }, z.ZodTypeDef, {
43
+ name: string;
44
+ semester: "GANJIL" | "GENAP";
45
+ startDate: string;
46
+ endDate: string;
47
+ }>, {
48
+ name: string;
49
+ semester: "GANJIL" | "GENAP";
50
+ startDate: string;
51
+ endDate: string;
52
+ }, {
53
+ name: string;
54
+ semester: "GANJIL" | "GENAP";
55
+ startDate: string;
56
+ endDate: string;
57
+ }>;
58
+ export declare const updateAcademicYearSchema: z.ZodEffects<z.ZodObject<{
59
+ name: z.ZodOptional<z.ZodString>;
60
+ semester: z.ZodOptional<z.ZodEnum<["GANJIL", "GENAP"]>>;
61
+ startDate: z.ZodOptional<z.ZodString>;
62
+ endDate: z.ZodOptional<z.ZodString>;
63
+ }, "strip", z.ZodTypeAny, {
64
+ name?: string | undefined;
65
+ semester?: "GANJIL" | "GENAP" | undefined;
66
+ startDate?: string | undefined;
67
+ endDate?: string | undefined;
68
+ }, {
69
+ name?: string | undefined;
70
+ semester?: "GANJIL" | "GENAP" | undefined;
71
+ startDate?: string | undefined;
72
+ endDate?: string | undefined;
73
+ }>, {
74
+ name?: string | undefined;
75
+ semester?: "GANJIL" | "GENAP" | undefined;
76
+ startDate?: string | undefined;
77
+ endDate?: string | undefined;
78
+ }, {
79
+ name?: string | undefined;
80
+ semester?: "GANJIL" | "GENAP" | undefined;
81
+ startDate?: string | undefined;
82
+ endDate?: string | undefined;
83
+ }>;
84
+ export declare const activateAcademicYearSchema: z.ZodObject<{
85
+ academicYearId: z.ZodString;
86
+ }, "strip", z.ZodTypeAny, {
87
+ academicYearId: string;
88
+ }, {
89
+ academicYearId: string;
90
+ }>;
28
91
  export type Semester = z.infer<typeof semesterEnum>;
29
92
  export type AcademicYear = z.infer<typeof academicYearSchema>;
93
+ export type CreateAcademicYearInput = z.infer<typeof createAcademicYearSchema>;
94
+ export type UpdateAcademicYearInput = z.infer<typeof updateAcademicYearSchema>;
95
+ export type ActivateAcademicYearInput = z.infer<typeof activateAcademicYearSchema>;
@@ -1,27 +1,86 @@
1
1
  import { z } from "zod";
2
- export declare const classRoomSchema: z.ZodObject<{
2
+ export declare const classroomSchema: z.ZodObject<{
3
3
  id: z.ZodString;
4
4
  tenantId: z.ZodString;
5
5
  academicYearId: z.ZodString;
6
6
  name: z.ZodString;
7
- level: z.ZodString;
8
- homeroomTeacherUserId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
9
- isActive: z.ZodDefault<z.ZodBoolean>;
7
+ gradeLevel: z.ZodString;
8
+ homeroomTeacherId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
9
+ homeroomTeacherName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
10
+ totalStudents: z.ZodDefault<z.ZodNumber>;
10
11
  }, "strip", z.ZodTypeAny, {
11
12
  id: string;
12
13
  name: string;
13
14
  tenantId: string;
14
15
  academicYearId: string;
15
- isActive: boolean;
16
- level: string;
17
- homeroomTeacherUserId?: string | null | undefined;
16
+ gradeLevel: string;
17
+ totalStudents: number;
18
+ homeroomTeacherId?: string | null | undefined;
19
+ homeroomTeacherName?: string | null | undefined;
18
20
  }, {
19
21
  id: string;
20
22
  name: string;
21
23
  tenantId: string;
22
24
  academicYearId: string;
23
- level: string;
24
- isActive?: boolean | undefined;
25
- homeroomTeacherUserId?: string | null | undefined;
25
+ gradeLevel: string;
26
+ homeroomTeacherId?: string | null | undefined;
27
+ homeroomTeacherName?: string | null | undefined;
28
+ totalStudents?: number | undefined;
26
29
  }>;
27
- export type ClassRoom = z.infer<typeof classRoomSchema>;
30
+ export declare const createClassroomSchema: z.ZodObject<Pick<{
31
+ id: z.ZodString;
32
+ tenantId: z.ZodString;
33
+ academicYearId: z.ZodString;
34
+ name: z.ZodString;
35
+ gradeLevel: z.ZodString;
36
+ homeroomTeacherId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
37
+ homeroomTeacherName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
38
+ totalStudents: z.ZodDefault<z.ZodNumber>;
39
+ }, "name" | "academicYearId" | "gradeLevel" | "homeroomTeacherId">, "strip", z.ZodTypeAny, {
40
+ name: string;
41
+ academicYearId: string;
42
+ gradeLevel: string;
43
+ homeroomTeacherId?: string | null | undefined;
44
+ }, {
45
+ name: string;
46
+ academicYearId: string;
47
+ gradeLevel: string;
48
+ homeroomTeacherId?: string | null | undefined;
49
+ }>;
50
+ export declare const updateClassroomSchema: z.ZodObject<{
51
+ name: z.ZodOptional<z.ZodString>;
52
+ academicYearId: z.ZodOptional<z.ZodString>;
53
+ gradeLevel: z.ZodOptional<z.ZodString>;
54
+ homeroomTeacherId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ name?: string | undefined;
57
+ academicYearId?: string | undefined;
58
+ gradeLevel?: string | undefined;
59
+ homeroomTeacherId?: string | null | undefined;
60
+ }, {
61
+ name?: string | undefined;
62
+ academicYearId?: string | undefined;
63
+ gradeLevel?: string | undefined;
64
+ homeroomTeacherId?: string | null | undefined;
65
+ }>;
66
+ export declare const promoteClassStudentsSchema: z.ZodObject<{
67
+ sourceClassroomId: z.ZodString;
68
+ targetClassroomId: z.ZodString;
69
+ targetAcademicYearId: z.ZodString;
70
+ studentIds: z.ZodArray<z.ZodString, "many">;
71
+ }, "strip", z.ZodTypeAny, {
72
+ sourceClassroomId: string;
73
+ targetClassroomId: string;
74
+ targetAcademicYearId: string;
75
+ studentIds: string[];
76
+ }, {
77
+ sourceClassroomId: string;
78
+ targetClassroomId: string;
79
+ targetAcademicYearId: string;
80
+ studentIds: string[];
81
+ }>;
82
+ export type ClassRoom = z.infer<typeof classroomSchema>;
83
+ export type Classroom = ClassRoom;
84
+ export type CreateClassroomInput = z.infer<typeof createClassroomSchema>;
85
+ export type UpdateClassroomInput = z.infer<typeof updateClassroomSchema>;
86
+ export type PromoteClassStudentsInput = z.infer<typeof promoteClassStudentsSchema>;
@@ -0,0 +1,56 @@
1
+ import { z } from "zod";
2
+ export declare const subjectCodeSchema: z.ZodString;
3
+ export declare const subjectSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ tenantId: z.ZodString;
6
+ code: z.ZodString;
7
+ name: z.ZodString;
8
+ description: z.ZodNullable<z.ZodOptional<z.ZodString>>;
9
+ isActive: z.ZodDefault<z.ZodBoolean>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ code: string;
12
+ id: string;
13
+ name: string;
14
+ tenantId: string;
15
+ isActive: boolean;
16
+ description?: string | null | undefined;
17
+ }, {
18
+ code: string;
19
+ id: string;
20
+ name: string;
21
+ tenantId: string;
22
+ isActive?: boolean | undefined;
23
+ description?: string | null | undefined;
24
+ }>;
25
+ export declare const createSubjectSchema: z.ZodObject<Pick<{
26
+ id: z.ZodString;
27
+ tenantId: z.ZodString;
28
+ code: z.ZodString;
29
+ name: z.ZodString;
30
+ description: z.ZodNullable<z.ZodOptional<z.ZodString>>;
31
+ isActive: z.ZodDefault<z.ZodBoolean>;
32
+ }, "code" | "name" | "description">, "strip", z.ZodTypeAny, {
33
+ code: string;
34
+ name: string;
35
+ description?: string | null | undefined;
36
+ }, {
37
+ code: string;
38
+ name: string;
39
+ description?: string | null | undefined;
40
+ }>;
41
+ export declare const updateSubjectSchema: z.ZodObject<{
42
+ code: z.ZodOptional<z.ZodString>;
43
+ name: z.ZodOptional<z.ZodString>;
44
+ description: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
45
+ }, "strip", z.ZodTypeAny, {
46
+ code?: string | undefined;
47
+ name?: string | undefined;
48
+ description?: string | null | undefined;
49
+ }, {
50
+ code?: string | undefined;
51
+ name?: string | undefined;
52
+ description?: string | null | undefined;
53
+ }>;
54
+ export type Subject = z.infer<typeof subjectSchema>;
55
+ export type CreateSubjectInput = z.infer<typeof createSubjectSchema>;
56
+ export type UpdateSubjectInput = z.infer<typeof updateSubjectSchema>;