timetable-app

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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 });