timetable-app

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

commit 8c940a826d8e25663163279dc383429dd1180cca
parent a64a5c5890d71e80b61841f0e089f84068e5d4b9
Author: Yuukin256 <52195426+Yuukin256@users.noreply.github.com>
Date:   Wed,  9 Apr 2025 22:14:40 +0900

superjsonを使わないように変更 (#93)

* #92 superjson関係の設定をコメントアウト

* #92 Date等のやりとりを無くすように修正
Diffstat:
Mnext.config.js | 2+-
Msrc/client/features/daily/components/Lessons/index.tsx | 2+-
Msrc/client/features/daily/types.ts | 2+-
Msrc/client/utils/trpc.ts | 6+++---
Msrc/pages/[class]/index.tsx | 40++++++++++++++--------------------------
Msrc/server/context.ts | 3+--
Msrc/server/routers/dayPeriodSchedule.ts | 10++++------
Msrc/server/trpc.ts | 4++--
8 files changed, 27 insertions(+), 42 deletions(-)

diff --git a/next.config.js b/next.config.js @@ -10,7 +10,7 @@ const nextConfig = withPWA({ reactStrictMode: true, trailingSlash: false, experimental: { - swcPlugins: [['superjson-next', { router: 'APP' }]], + // swcPlugins: [['superjson-next', { router: 'PAGE' }]], }, redirects: async () => { const startClassRedirects = [1, 2, 3].flatMap((g) => diff --git a/src/client/features/daily/components/Lessons/index.tsx b/src/client/features/daily/components/Lessons/index.tsx @@ -38,7 +38,7 @@ function Lessons({ timetable }: Props) { {SCHOOL_TIMES.map((st) => { return ( <Lesson - date={timetable.date} + date={new Date(timetable.date)} period={st} courses={timetable[`period${st}`]?.courses ?? []} basis={timetable[`period${st}`]?.basis ?? null} diff --git a/src/client/features/daily/types.ts b/src/client/features/daily/types.ts @@ -7,6 +7,6 @@ export type Basis = export type OnePeriod = { courses: Course[]; basis: Basis }; export type DayTimetable = { - date: Date; + date: string; event?: string; } & Partial<Record<SchoolPeriod, OnePeriod>>; diff --git a/src/client/utils/trpc.ts b/src/client/utils/trpc.ts @@ -1,6 +1,6 @@ import { httpBatchLink } from '@trpc/client'; import { createTRPCNext } from '@trpc/next'; -import superjson from 'superjson'; +// import superjson from 'superjson'; import type { AppRouter } from 'server/routers/_app'; @@ -28,7 +28,7 @@ export const trpc = createTRPCNext<AppRouter>({ * @link https://trpc.io/docs/ssr **/ url: `${getBaseUrl()}/api/trpc`, - transformer: superjson, + // transformer: superjson, }), ], /** @@ -46,5 +46,5 @@ export const trpc = createTRPCNext<AppRouter>({ * @link https://trpc.io/docs/ssr **/ ssr: false, - transformer: superjson, + // transformer: superjson, }); diff --git a/src/pages/[class]/index.tsx b/src/pages/[class]/index.tsx @@ -10,8 +10,8 @@ import formatDate from 'common/utils/formatDate'; import { zodClass, zodGrade } from 'common/utils/zod'; import { caller } from 'server/routers/_app'; -import type { DayTimetable, OnePeriod } from 'client/features/daily/types'; -import type { Class, DayPeriodJa, Grade } from 'common/types'; +import type { DayTimetable } from 'client/features/daily/types'; +import type { Class, Grade } from 'common/types'; import type { GetStaticPaths, GetStaticProps, NextPage } from 'next'; type UrlQuery = { @@ -78,35 +78,23 @@ export const getStaticProps: GetStaticProps<PageProps, UrlQuery> = async ({ // クラスの臨時変更を取得 // 現在、臨時変更は扱っていない - /** 曜日時限からクラスの科目データを返す */ - const makeOnePeriodData = ( - dayPeriod?: DayPeriodJa, - ): OnePeriod | undefined => { - if (dayPeriod) { - return { - courses: standardTimetable[dayPeriod], - basis: { type: 'dayPeriod', dayPeriod }, - }; - } else { - return void 0; - } - }; - // 曜日時限時間割表にクラスの科目データを当てはめていく const dayTimetableCalendar = dayPeriodCalendar.map( - ([date, sch]): [string, DayTimetable] => { + ([date, { event, ...sch }]): [string, DayTimetable] => { + const periods = Object.entries(sch).map(([key, value]) => [ + key, + { + // 曜日時限からクラスの科目データを返す + courses: standardTimetable[value], + basis: { type: 'dayPeriod', dayPeriod: value }, + }, + ]); return [ date, { - date: sch.date, - event: sch.event, - period1: makeOnePeriodData(sch.period1), - period2: makeOnePeriodData(sch.period2), - period3: makeOnePeriodData(sch.period3), - period4: makeOnePeriodData(sch.period4), - period5: makeOnePeriodData(sch.period5), - period6: makeOnePeriodData(sch.period6), - period7: makeOnePeriodData(sch.period7), + date, + event, + ...Object.fromEntries(periods), }, ]; }, diff --git a/src/server/context.ts b/src/server/context.ts @@ -1,6 +1,5 @@ // import { prisma } from 'server/utils/prisma'; -import type * as trpc from '@trpc/server'; import type * as trpcNext from '@trpc/server/adapters/next'; // create context based of incoming request @@ -13,4 +12,4 @@ export const createContext = async ( // prisma, }; }; -export type Context = trpc.inferAsyncReturnType<typeof createContext>; +export type Context = Awaited<ReturnType<typeof createContext>>; diff --git a/src/server/routers/dayPeriodSchedule.ts b/src/server/routers/dayPeriodSchedule.ts @@ -8,8 +8,6 @@ import { procedure, router } from '../trpc'; import type { DaySchedule } from 'common/types'; -type DayScheduleWithDate = DaySchedule & { date: Date }; - export const dayPeriodScheduleRouter = router({ byGradeAndPeriod: procedure .input( @@ -19,18 +17,18 @@ export const dayPeriodScheduleRouter = router({ endDate: z.string(), }), ) - .query<[string, DayScheduleWithDate][]>(async ({ input }) => { + .query<[string, DaySchedule][]>(async ({ input }) => { const schedules = Object.entries(dayPeriodSchedules) .filter( ([date]) => isAfter(date, input.startDate) && isBefore(date, input.endDate), ) - .map(([date, allGradesSchedule]): [string, DayScheduleWithDate] => { + .map(([date, allGradesSchedule]): [string, DaySchedule] => { const schedule = { ...allGradesSchedule[`grade${input.grade}`] }; - return [date, { date: new Date(date), ...schedule }]; + return [date, schedule]; }) // 日付以外のデータがある日のみ - .filter(([, schedule]) => Object.values(schedule).length > 1); + .filter(([, schedule]) => Object.values(schedule).length > 0); return schedules; }), diff --git a/src/server/trpc.ts b/src/server/trpc.ts @@ -1,5 +1,5 @@ import { initTRPC } from '@trpc/server'; -import superjson from 'superjson'; +// import superjson from 'superjson'; import type { Context } from './context'; @@ -8,7 +8,7 @@ import type { Context } from './context'; // For instance, the use of a t variable // is common in i18n libraries. const t = initTRPC.context<Context>().create({ - transformer: superjson, + // transformer: superjson, }); // Base router and procedure helpers