classStandard.ts (1154B)
1 import { z } from 'zod'; 2 3 import { zodClass, zodGrade, zodGradeClass } from 'common/utils/zod'; 4 5 import { allClassesStandardTimetable } from '../../../data/classStandard'; 6 import { procedure, router } from '../trpc'; 7 8 import type { 9 Class, 10 ClassStandardTimetable, 11 Grade, 12 GradeClass, 13 } from 'common/types'; 14 15 export const classStandardRouter = router({ 16 byGradeAndClass: procedure 17 .input(z.object({ grade: zodGrade, class: zodClass })) 18 .query<{ 19 grade: Grade; 20 class: Class; 21 gradeClass: GradeClass; 22 standardTimetable: ClassStandardTimetable; 23 }>(({ input }) => { 24 const gradeClass = `${input.grade}-${input.class}` as const; 25 const standardTimetable = allClassesStandardTimetable[gradeClass]; 26 27 return { 28 grade: input.grade, 29 class: input.class, 30 gradeClass, 31 standardTimetable, 32 }; 33 }), 34 35 byGradeClass: procedure.input(z.object({ gradeClass: zodGradeClass })).query<{ 36 gradeClass: GradeClass; 37 standardTimetable: ClassStandardTimetable; 38 }>(({ input }) => { 39 const standardTimetable = allClassesStandardTimetable[input.gradeClass]; 40 41 return { 42 gradeClass: input.gradeClass, 43 standardTimetable, 44 }; 45 }), 46 });