From aa15b2b335d6e6c7809eb1007b6f9f7c34bacd98 Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Wed, 23 Jul 2025 09:55:30 -0600 Subject: [PATCH] more refactor --- src/app/api/trpc/[trpc]/route.ts | 2 +- .../lecture/[lectureDay]/EditLecture.tsx | 2 +- .../lecture/[lectureDay]/EditLectureTitle.tsx | 2 +- src/app/layout.tsx | 2 +- .../assignmentsFileStorageService.ts | 2 +- .../course/courseItemFileStorageService.ts | 2 +- .../course/settingsFileStorageService.ts | 5 +-- .../globalSettingsFileStorageService.ts | 2 +- .../lectures/lectureFileStorageService.ts | 2 +- .../local/lectures}/lectureUtils.ts | 0 .../local/modules/moduleFileStorageService.ts | 2 +- .../local/utils/fileStorageService.ts | 5 +-- .../local}/utils/fileSystemUtils.ts | 2 +- .../router => canvas}/canvasFileRouter.ts | 0 src/services/serverFunctions/appRouter.ts | 32 +++++++++++++++++++ .../serverFunctions/router/appRouter.ts | 32 ------------------- src/services/serverFunctions/trpcClient.ts | 2 +- .../tests/fileStorageParsingErrors.test.ts | 2 +- src/services/tests/lectureStorage.test.ts | 4 +-- 19 files changed, 48 insertions(+), 54 deletions(-) rename src/{services/fileStorage/utils => features/local/lectures}/lectureUtils.ts (100%) rename src/{services/fileStorage => features/local}/utils/fileSystemUtils.ts (82%) rename src/services/{serverFunctions/router => canvas}/canvasFileRouter.ts (100%) create mode 100644 src/services/serverFunctions/appRouter.ts delete mode 100644 src/services/serverFunctions/router/appRouter.ts diff --git a/src/app/api/trpc/[trpc]/route.ts b/src/app/api/trpc/[trpc]/route.ts index 58f9f09..87d3d24 100644 --- a/src/app/api/trpc/[trpc]/route.ts +++ b/src/app/api/trpc/[trpc]/route.ts @@ -1,5 +1,5 @@ import { createTrpcContext } from "@/services/serverFunctions/context"; -import { trpcAppRouter } from "@/services/serverFunctions/router/appRouter"; +import { trpcAppRouter } from "@/services/serverFunctions/appRouter"; import { fetchRequestHandler } from "@trpc/server/adapters/fetch"; const handler = async (request: Request) => { diff --git a/src/app/course/[courseName]/lecture/[lectureDay]/EditLecture.tsx b/src/app/course/[courseName]/lecture/[lectureDay]/EditLecture.tsx index 0e2a4e1..1567682 100644 --- a/src/app/course/[courseName]/lecture/[lectureDay]/EditLecture.tsx +++ b/src/app/course/[courseName]/lecture/[lectureDay]/EditLecture.tsx @@ -7,7 +7,7 @@ import { import { lectureToString, parseLecture, -} from "@/services/fileStorage/utils/lectureUtils"; +} from "@/features/local/lectures/lectureUtils"; import { useEffect, useState } from "react"; import LecturePreview from "./LecturePreview"; import EditLectureTitle from "./EditLectureTitle"; diff --git a/src/app/course/[courseName]/lecture/[lectureDay]/EditLectureTitle.tsx b/src/app/course/[courseName]/lecture/[lectureDay]/EditLectureTitle.tsx index 91a3a32..f91eb23 100644 --- a/src/app/course/[courseName]/lecture/[lectureDay]/EditLectureTitle.tsx +++ b/src/app/course/[courseName]/lecture/[lectureDay]/EditLectureTitle.tsx @@ -1,6 +1,6 @@ import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { getDateFromString } from "@/features/local/utils/timeUtils"; -import { getLectureWeekName } from "@/services/fileStorage/utils/lectureUtils"; +import { getLectureWeekName } from "@/features/local/lectures/lectureUtils"; import { getCourseUrl, getLecturePreviewUrl } from "@/services/urlUtils"; import { useCourseContext } from "../../context/courseContext"; import Link from "next/link"; diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 4f45136..c29bcf8 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -5,7 +5,7 @@ import { Suspense } from "react"; import { dehydrate, HydrationBoundary } from "@tanstack/react-query"; import { MyToaster } from "./MyToaster"; import { createServerSideHelpers } from "@trpc/react-query/server"; -import { trpcAppRouter } from "@/services/serverFunctions/router/appRouter"; +import { trpcAppRouter } from "@/services/serverFunctions/appRouter"; import { createTrpcContext } from "@/services/serverFunctions/context"; import superjson from "superjson"; import { fileStorageService } from "@/features/local/utils/fileStorageService"; diff --git a/src/features/local/assignments/assignmentsFileStorageService.ts b/src/features/local/assignments/assignmentsFileStorageService.ts index 8fb71cc..b60d61e 100644 --- a/src/features/local/assignments/assignmentsFileStorageService.ts +++ b/src/features/local/assignments/assignmentsFileStorageService.ts @@ -7,7 +7,7 @@ import path from "path"; import { promises as fs } from "fs"; import { courseItemFileStorageService } from "@/features/local/course/courseItemFileStorageService"; import { getCoursePathByName } from "@/features/local/globalSettings/globalSettingsFileStorageService"; -import { directoryOrFileExists } from "@/services/fileStorage/utils/fileSystemUtils"; +import { directoryOrFileExists } from "@/features/local/utils/fileSystemUtils"; const getAssignmentNames = async (courseName: string, moduleName: string) => { const courseDirectory = await getCoursePathByName(courseName); diff --git a/src/features/local/course/courseItemFileStorageService.ts b/src/features/local/course/courseItemFileStorageService.ts index 6ede5f1..e8fb670 100644 --- a/src/features/local/course/courseItemFileStorageService.ts +++ b/src/features/local/course/courseItemFileStorageService.ts @@ -1,5 +1,5 @@ import path from "path"; -import { directoryOrFileExists } from "../../../services/fileStorage/utils/fileSystemUtils"; +import { directoryOrFileExists } from "../utils/fileSystemUtils"; import fs from "fs/promises"; import { LocalAssignment, diff --git a/src/features/local/course/settingsFileStorageService.ts b/src/features/local/course/settingsFileStorageService.ts index b9f1b65..3cba9e9 100644 --- a/src/features/local/course/settingsFileStorageService.ts +++ b/src/features/local/course/settingsFileStorageService.ts @@ -1,9 +1,6 @@ import { promises as fs } from "fs"; import path from "path"; -import { - basePath, - directoryOrFileExists, -} from "../../../services/fileStorage/utils/fileSystemUtils"; +import { basePath, directoryOrFileExists } from "../utils/fileSystemUtils"; import { AssignmentSubmissionType } from "@/features/local/assignments/models/assignmentSubmissionType"; import { getCoursePathByName, diff --git a/src/features/local/globalSettings/globalSettingsFileStorageService.ts b/src/features/local/globalSettings/globalSettingsFileStorageService.ts index 68a0c84..1aa8bca 100644 --- a/src/features/local/globalSettings/globalSettingsFileStorageService.ts +++ b/src/features/local/globalSettings/globalSettingsFileStorageService.ts @@ -1,6 +1,6 @@ import { promises as fs } from "fs"; import path from "path"; -import { basePath } from "../../../services/fileStorage/utils/fileSystemUtils"; +import { basePath } from "../utils/fileSystemUtils"; import { GlobalSettings, zodGlobalSettings, diff --git a/src/features/local/lectures/lectureFileStorageService.ts b/src/features/local/lectures/lectureFileStorageService.ts index 8233234..6da4979 100644 --- a/src/features/local/lectures/lectureFileStorageService.ts +++ b/src/features/local/lectures/lectureFileStorageService.ts @@ -8,7 +8,7 @@ import { parseLecture, getLectureWeekName, lectureToString, -} from "@/services/fileStorage/utils/lectureUtils"; +} from "@/features/local/lectures/lectureUtils"; import { LocalCourseSettings, getDayOfWeek, diff --git a/src/services/fileStorage/utils/lectureUtils.ts b/src/features/local/lectures/lectureUtils.ts similarity index 100% rename from src/services/fileStorage/utils/lectureUtils.ts rename to src/features/local/lectures/lectureUtils.ts diff --git a/src/features/local/modules/moduleFileStorageService.ts b/src/features/local/modules/moduleFileStorageService.ts index 521b1ec..55543e9 100644 --- a/src/features/local/modules/moduleFileStorageService.ts +++ b/src/features/local/modules/moduleFileStorageService.ts @@ -1,5 +1,5 @@ import { promises as fs } from "fs"; -import { lectureFolderName } from "../../../services/fileStorage/utils/lectureUtils"; +import { lectureFolderName } from "../lectures/lectureUtils"; import { getCoursePathByName } from "../globalSettings/globalSettingsFileStorageService"; export const moduleFileStorageService = { diff --git a/src/features/local/utils/fileStorageService.ts b/src/features/local/utils/fileStorageService.ts index 698c8b4..0a26462 100644 --- a/src/features/local/utils/fileStorageService.ts +++ b/src/features/local/utils/fileStorageService.ts @@ -1,9 +1,6 @@ import { promises as fs } from "fs"; import path from "path"; -import { - basePath, - directoryOrFileExists, -} from "../../../services/fileStorage/utils/fileSystemUtils"; +import { basePath, directoryOrFileExists } from "./fileSystemUtils"; import { quizFileStorageService } from "../quizzes/quizFileStorageService"; import { pageFileStorageService } from "../pages/pageFileStorageService"; import { moduleFileStorageService } from "../modules/moduleFileStorageService"; diff --git a/src/services/fileStorage/utils/fileSystemUtils.ts b/src/features/local/utils/fileSystemUtils.ts similarity index 82% rename from src/services/fileStorage/utils/fileSystemUtils.ts rename to src/features/local/utils/fileSystemUtils.ts index 0ba6b89..e8d62f7 100644 --- a/src/services/fileStorage/utils/fileSystemUtils.ts +++ b/src/features/local/utils/fileSystemUtils.ts @@ -1,5 +1,5 @@ import { promises as fs } from "fs"; -import { getGlobalSettings } from "../../../features/local/globalSettings/globalSettingsFileStorageService"; +import { getGlobalSettings } from "../globalSettings/globalSettingsFileStorageService"; export const directoryOrFileExists = async ( directoryPath: string diff --git a/src/services/serverFunctions/router/canvasFileRouter.ts b/src/services/canvas/canvasFileRouter.ts similarity index 100% rename from src/services/serverFunctions/router/canvasFileRouter.ts rename to src/services/canvas/canvasFileRouter.ts diff --git a/src/services/serverFunctions/appRouter.ts b/src/services/serverFunctions/appRouter.ts new file mode 100644 index 0000000..49b15f1 --- /dev/null +++ b/src/services/serverFunctions/appRouter.ts @@ -0,0 +1,32 @@ +import { createTrpcContext } from "./context"; +import { createCallerFactory, router } from "./trpcSetup"; +import { assignmentRouter } from "../../features/local/assignments/assignmentRouter"; +import { canvasFileRouter } from "./canvasFileRouter"; +import { directoriesRouter } from "../../features/local/utils/directoriesRouter"; +import { globalSettingsRouter } from "../../features/local/globalSettings/globalSettingsRouter"; +import { lectureRouter } from "../../features/local/lectures/lectureRouter"; +import { pageRouter } from "../../features/local/pages/pageRouter"; +import { quizRouter } from "../../features/local/quizzes/quizRouter"; +import { settingsRouter } from "../../features/local/course/settingsRouter"; +import { moduleRouter } from "@/features/local/modules/moduleRouter"; + +export const trpcAppRouter = router({ + assignment: assignmentRouter, + lectures: lectureRouter, + settings: settingsRouter, + quiz: quizRouter, + page: pageRouter, + module: moduleRouter, + directories: directoriesRouter, + canvasFile: canvasFileRouter, + globalSettings: globalSettingsRouter, +}); + +export const createCaller = createCallerFactory(trpcAppRouter); + +export const createAsyncCaller = async () => { + const context = await createTrpcContext(); + return createCaller(context); +}; + +export type AppRouter = typeof trpcAppRouter; diff --git a/src/services/serverFunctions/router/appRouter.ts b/src/services/serverFunctions/router/appRouter.ts deleted file mode 100644 index b5dab65..0000000 --- a/src/services/serverFunctions/router/appRouter.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { createTrpcContext } from "../context"; -import { createCallerFactory, router } from "../trpcSetup"; -import { assignmentRouter } from "../../../features/local/assignments/assignmentRouter"; -import { canvasFileRouter } from "./canvasFileRouter"; -import { directoriesRouter } from "../../../features/local/utils/directoriesRouter"; -import { globalSettingsRouter } from "../../../features/local/globalSettings/globalSettingsRouter"; -import { lectureRouter } from "../../../features/local/lectures/lectureRouter"; -import { pageRouter } from "../../../features/local/pages/pageRouter"; -import { quizRouter } from "../../../features/local/quizzes/quizRouter"; -import { settingsRouter } from "../../../features/local/course/settingsRouter"; -import { moduleRouter } from "@/features/local/modules/moduleRouter"; - -export const trpcAppRouter = router({ - assignment: assignmentRouter, - lectures: lectureRouter, - settings: settingsRouter, - quiz: quizRouter, - page: pageRouter, - module: moduleRouter, - directories: directoriesRouter, - canvasFile: canvasFileRouter, - globalSettings: globalSettingsRouter, -}); - -export const createCaller = createCallerFactory(trpcAppRouter); - -export const createAsyncCaller = async () => { - const context = await createTrpcContext(); - return createCaller(context); -}; - -export type AppRouter = typeof trpcAppRouter; diff --git a/src/services/serverFunctions/trpcClient.ts b/src/services/serverFunctions/trpcClient.ts index 03c62ee..6f23d22 100644 --- a/src/services/serverFunctions/trpcClient.ts +++ b/src/services/serverFunctions/trpcClient.ts @@ -1,6 +1,6 @@ import { createTRPCReact } from "@trpc/react-query"; import { createTRPCContext } from "@trpc/tanstack-react-query"; -import { AppRouter } from "./router/appRouter"; +import { AppRouter } from "./appRouter"; export const trpc = createTRPCReact(); diff --git a/src/services/tests/fileStorageParsingErrors.test.ts b/src/services/tests/fileStorageParsingErrors.test.ts index 54afcc4..2f3e443 100644 --- a/src/services/tests/fileStorageParsingErrors.test.ts +++ b/src/services/tests/fileStorageParsingErrors.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect, beforeEach } from "vitest"; import { promises as fs } from "fs"; import { fileStorageService } from "../../features/local/utils/fileStorageService"; -import { basePath } from "../fileStorage/utils/fileSystemUtils"; +import { basePath } from "../../features/local/utils/fileSystemUtils"; describe("FileStorageTests", () => { beforeEach(async () => { diff --git a/src/services/tests/lectureStorage.test.ts b/src/services/tests/lectureStorage.test.ts index 058dd3b..1fb94ef 100644 --- a/src/services/tests/lectureStorage.test.ts +++ b/src/services/tests/lectureStorage.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { lectureToString } from "../fileStorage/utils/lectureUtils"; -import { parseLecture } from "../fileStorage/utils/lectureUtils"; +import { lectureToString } from "../../features/local/lectures/lectureUtils"; +import { parseLecture } from "../../features/local/lectures/lectureUtils"; import { Lecture } from "@/features/local/lectures/lectureModel"; describe("can parse and stringify lectures", () => {