diff --git a/src/app/CourseList.tsx b/src/app/CourseList.tsx index 97785f1..e4c4963 100644 --- a/src/app/CourseList.tsx +++ b/src/app/CourseList.tsx @@ -4,7 +4,7 @@ import { getDateKey, getTermName, groupByStartDate, -} from "@/models/local/utils/timeUtils"; +} from "@/features/local/utils/timeUtils"; import { getCourseUrl } from "@/services/urlUtils"; import Link from "next/link"; diff --git a/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx b/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx index 75d6cac..5b2fbe8 100644 --- a/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx +++ b/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx @@ -18,7 +18,10 @@ import { AssignmentSubmissionType } from "@/features/local/assignments/models/as import { getCourseUrl } from "@/services/urlUtils"; import { useRouter } from "next/navigation"; import React, { Dispatch, SetStateAction, useMemo, useState } from "react"; -import { DayOfWeek, LocalCourseSettings } from "@/features/local/course/localCourseSettings"; +import { + DayOfWeek, + LocalCourseSettings, +} from "@/features/local/course/localCourseSettings"; const sampleCompose = `services: canvas_manager: diff --git a/src/app/addCourse/AddExistingCourseToGlobalSettings.tsx b/src/app/addCourse/AddExistingCourseToGlobalSettings.tsx index 68047fa..0caf043 100644 --- a/src/app/addCourse/AddExistingCourseToGlobalSettings.tsx +++ b/src/app/addCourse/AddExistingCourseToGlobalSettings.tsx @@ -6,8 +6,8 @@ import { SuspenseAndErrorHandling } from "@/components/SuspenseAndErrorHandling" import { useGlobalSettingsQuery, useUpdateGlobalSettingsMutation, -} from "@/hooks/localCourse/globalSettingsHooks"; -import { useDirectoryIsCourseQuery } from "@/hooks/localCourse/storageDirectoryHooks"; +} from "@/features/local/globalSettings/globalSettingsHooks"; +import { useDirectoryIsCourseQuery } from "@/features/local/utils/storageDirectoryHooks"; import { FC, useEffect, useRef, useState } from "react"; export const AddExistingCourseToGlobalSettings = () => { diff --git a/src/app/api/mcp/[transport]/route.ts b/src/app/api/mcp/[transport]/route.ts index a6f9809..abe9b1b 100644 --- a/src/app/api/mcp/[transport]/route.ts +++ b/src/app/api/mcp/[transport]/route.ts @@ -1,6 +1,6 @@ import { assignmentMarkdownSerializer } from "@/features/local/assignments/models/utils/assignmentMarkdownSerializer"; -import { groupByStartDate } from "@/models/local/utils/timeUtils"; -import { fileStorageService } from "@/services/fileStorage/fileStorageService"; +import { groupByStartDate } from "@/features/local/utils/timeUtils"; +import { fileStorageService } from "@/features/local/utils/fileStorageService"; import { createMcpHandler } from "mcp-handler"; import { z } from "zod"; import { githubClassroomUrlPrompt } from "./github-classroom-prompt"; diff --git a/src/app/api/trpc/[trpc]/route.ts b/src/app/api/trpc/[trpc]/route.ts index 84c8004..58f9f09 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/app"; +import { trpcAppRouter } from "@/services/serverFunctions/router/appRouter"; import { fetchRequestHandler } from "@trpc/server/adapters/fetch"; const handler = async (request: Request) => { diff --git a/src/app/course/[courseName]/calendar/CalendarMonth.tsx b/src/app/course/[courseName]/calendar/CalendarMonth.tsx index f5177ea..b9ebed3 100644 --- a/src/app/course/[courseName]/calendar/CalendarMonth.tsx +++ b/src/app/course/[courseName]/calendar/CalendarMonth.tsx @@ -3,7 +3,7 @@ import { CalendarMonthModel, getWeekNumber } from "./calendarMonthUtils"; import { Expandable } from "@/components/Expandable"; import { CalendarWeek } from "./CalendarWeek"; import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; -import { getDateFromStringOrThrow } from "@/models/local/utils/timeUtils"; +import { getDateFromStringOrThrow } from "@/features/local/utils/timeUtils"; import UpChevron from "@/components/icons/UpChevron"; import DownChevron from "@/components/icons/DownChevron"; import { DayOfWeek } from "@/features/local/course/localCourseSettings"; diff --git a/src/app/course/[courseName]/calendar/CalendarWeek.tsx b/src/app/course/[courseName]/calendar/CalendarWeek.tsx index fad7b84..9753c40 100644 --- a/src/app/course/[courseName]/calendar/CalendarWeek.tsx +++ b/src/app/course/[courseName]/calendar/CalendarWeek.tsx @@ -1,6 +1,6 @@ "use client"; import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; -import { getDateFromStringOrThrow } from "@/models/local/utils/timeUtils"; +import { getDateFromStringOrThrow } from "@/features/local/utils/timeUtils"; import { getWeekNumber } from "./calendarMonthUtils"; import Day from "./day/Day"; diff --git a/src/app/course/[courseName]/calendar/CourseCalendar.tsx b/src/app/course/[courseName]/calendar/CourseCalendar.tsx index 0892f1b..0c6e7ee 100644 --- a/src/app/course/[courseName]/calendar/CourseCalendar.tsx +++ b/src/app/course/[courseName]/calendar/CourseCalendar.tsx @@ -1,5 +1,5 @@ "use client"; -import { getDateFromStringOrThrow } from "@/models/local/utils/timeUtils"; +import { getDateFromStringOrThrow } from "@/features/local/utils/timeUtils"; import { getMonthsBetweenDates } from "./calendarMonthUtils"; import { CalendarMonth } from "./CalendarMonth"; import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; diff --git a/src/app/course/[courseName]/calendar/calendarMonthUtils.ts b/src/app/course/[courseName]/calendar/calendarMonthUtils.ts index aba9d26..67b486d 100644 --- a/src/app/course/[courseName]/calendar/calendarMonthUtils.ts +++ b/src/app/course/[courseName]/calendar/calendarMonthUtils.ts @@ -1,7 +1,7 @@ import { dateToMarkdownString, getDateFromStringOrThrow, -} from "@/models/local/utils/timeUtils"; +} from "@/features/local/utils/timeUtils"; export interface CalendarMonthModel { year: number; diff --git a/src/app/course/[courseName]/calendar/day/Day.tsx b/src/app/course/[courseName]/calendar/day/Day.tsx index 16cf6fb..5d5f0ec 100644 --- a/src/app/course/[courseName]/calendar/day/Day.tsx +++ b/src/app/course/[courseName]/calendar/day/Day.tsx @@ -2,7 +2,7 @@ import { getDateFromStringOrThrow, getDateOnlyMarkdownString, -} from "@/models/local/utils/timeUtils"; +} from "@/features/local/utils/timeUtils"; import { useDraggingContext } from "../../context/drag/draggingContext"; import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { ItemInDay } from "./ItemInDay"; diff --git a/src/app/course/[courseName]/calendar/day/DayTitle.tsx b/src/app/course/[courseName]/calendar/day/DayTitle.tsx index 961ba3b..4ddf589 100644 --- a/src/app/course/[courseName]/calendar/day/DayTitle.tsx +++ b/src/app/course/[courseName]/calendar/day/DayTitle.tsx @@ -5,7 +5,7 @@ import { useCourseContext } from "../../context/courseContext"; import NewItemForm from "../../modules/NewItemForm"; import { DraggableItem } from "../../context/drag/draggingContext"; import { useDragStyleContext } from "../../context/drag/dragStyleContext"; -import { getLectureForDay } from "@/models/local/utils/lectureUtils"; +import { getLectureForDay } from "@/features/local/utils/lectureUtils"; import { useLecturesSuspenseQuery } from "@/features/local/lectures/lectureHooks"; import ClientOnly from "@/components/ClientOnly"; import { Tooltip } from "@/components/Tooltip"; diff --git a/src/app/course/[courseName]/calendar/day/getStatus.tsx b/src/app/course/[courseName]/calendar/day/getStatus.tsx index a0f219c..5f24120 100644 --- a/src/app/course/[courseName]/calendar/day/getStatus.tsx +++ b/src/app/course/[courseName]/calendar/day/getStatus.tsx @@ -6,7 +6,7 @@ import { LocalAssignment } from "@/features/local/assignments/models/localAssign import { dateToMarkdownString, getDateFromStringOrThrow, -} from "@/models/local/utils/timeUtils"; +} from "@/features/local/utils/timeUtils"; import { markdownToHTMLSafe } from "@/services/htmlMarkdownUtils"; import { htmlIsCloseEnough } from "@/services/utils/htmlIsCloseEnough"; import { ReactNode } from "react"; diff --git a/src/app/course/[courseName]/calendar/day/useTodaysItems.tsx b/src/app/course/[courseName]/calendar/day/useTodaysItems.tsx index d6224cf..d173c03 100644 --- a/src/app/course/[courseName]/calendar/day/useTodaysItems.tsx +++ b/src/app/course/[courseName]/calendar/day/useTodaysItems.tsx @@ -6,7 +6,7 @@ import { LocalAssignment } from "@/features/local/assignments/models/localAssign import { getDateFromStringOrThrow, getDateOnlyMarkdownString, -} from "@/models/local/utils/timeUtils"; +} from "@/features/local/utils/timeUtils"; import { ReactNode } from "react"; import { useCalendarItemsContext } from "../../context/calendarItemsContext"; import { getStatus } from "./getStatus"; diff --git a/src/app/course/[courseName]/context/drag/getNewLockDate.ts b/src/app/course/[courseName]/context/drag/getNewLockDate.ts index 130f287..7f5c31f 100644 --- a/src/app/course/[courseName]/context/drag/getNewLockDate.ts +++ b/src/app/course/[courseName]/context/drag/getNewLockDate.ts @@ -1,6 +1,8 @@ "use client"; -import { getDateFromStringOrThrow, dateToMarkdownString } from "@/models/local/utils/timeUtils"; - +import { + getDateFromStringOrThrow, + dateToMarkdownString, +} from "@/features/local/utils/timeUtils"; export function getNewLockDate( originalDueDate: string, @@ -9,15 +11,18 @@ export function getNewLockDate( ): string | undefined { // todo: preserve previous due date / lock date offset const dueDate = getDateFromStringOrThrow(originalDueDate, "dueAt date"); - const lockDate = originalLockDate === undefined - ? undefined - : getDateFromStringOrThrow(originalLockDate, "lockAt date"); + const lockDate = + originalLockDate === undefined + ? undefined + : getDateFromStringOrThrow(originalLockDate, "lockAt date"); - const originalOffset = lockDate === undefined ? undefined : lockDate.getTime() - dueDate.getTime(); + const originalOffset = + lockDate === undefined ? undefined : lockDate.getTime() - dueDate.getTime(); - const newLockDate = originalOffset === undefined - ? undefined - : new Date(dayAsDate.getTime() + originalOffset); + const newLockDate = + originalOffset === undefined + ? undefined + : new Date(dayAsDate.getTime() + originalOffset); return newLockDate === undefined ? undefined diff --git a/src/app/course/[courseName]/context/drag/useItemDropOnDay.ts b/src/app/course/[courseName]/context/drag/useItemDropOnDay.ts index 4060376..b3a7877 100644 --- a/src/app/course/[courseName]/context/drag/useItemDropOnDay.ts +++ b/src/app/course/[courseName]/context/drag/useItemDropOnDay.ts @@ -7,12 +7,12 @@ import { useLocalCourseSettingsQuery } from "@/features/local/course/localCourse import { useUpdatePageMutation } from "@/features/local/pages/pageHooks"; import { LocalAssignment } from "@/features/local/assignments/models/localAssignment"; import { Lecture } from "@/features/local/lectures/lectureModel"; -import { getLectureForDay } from "@/models/local/utils/lectureUtils"; +import { getLectureForDay } from "@/features/local/utils/lectureUtils"; import { getDateFromStringOrThrow, getDateOnlyMarkdownString, dateToMarkdownString, -} from "@/models/local/utils/timeUtils"; +} from "@/features/local/utils/timeUtils"; import { Dispatch, SetStateAction, useCallback, DragEvent } from "react"; import { DraggableItem } from "./draggingContext"; import { getNewLockDate } from "./getNewLockDate"; diff --git a/src/app/course/[courseName]/lecture/[lectureDay]/EditLectureTitle.tsx b/src/app/course/[courseName]/lecture/[lectureDay]/EditLectureTitle.tsx index 955cecd..91a3a32 100644 --- a/src/app/course/[courseName]/lecture/[lectureDay]/EditLectureTitle.tsx +++ b/src/app/course/[courseName]/lecture/[lectureDay]/EditLectureTitle.tsx @@ -1,5 +1,5 @@ import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; -import { getDateFromString } from "@/models/local/utils/timeUtils"; +import { getDateFromString } from "@/features/local/utils/timeUtils"; import { getLectureWeekName } from "@/services/fileStorage/utils/lectureUtils"; import { getCourseUrl, getLecturePreviewUrl } from "@/services/urlUtils"; import { useCourseContext } from "../../context/courseContext"; diff --git a/src/app/course/[courseName]/lecture/[lectureDay]/page.tsx b/src/app/course/[courseName]/lecture/[lectureDay]/page.tsx index 0a5386b..b6fb18f 100644 --- a/src/app/course/[courseName]/lecture/[lectureDay]/page.tsx +++ b/src/app/course/[courseName]/lecture/[lectureDay]/page.tsx @@ -2,7 +2,7 @@ import EditLecture from "./EditLecture"; import { getDateFromStringOrThrow, getDateOnlyMarkdownString, -} from "@/models/local/utils/timeUtils"; +} from "@/features/local/utils/timeUtils"; export const dynamic = "force-dynamic"; export default async function page({ diff --git a/src/app/course/[courseName]/lecture/[lectureDay]/preview/page.tsx b/src/app/course/[courseName]/lecture/[lectureDay]/preview/page.tsx index b3e1c5e..f1ea505 100644 --- a/src/app/course/[courseName]/lecture/[lectureDay]/preview/page.tsx +++ b/src/app/course/[courseName]/lecture/[lectureDay]/preview/page.tsx @@ -1,7 +1,7 @@ import { getDateFromStringOrThrow, getDateOnlyMarkdownString, -} from "@/models/local/utils/timeUtils"; +} from "@/features/local/utils/timeUtils"; import LecturePreviewPage from "./LecturePreviewPage"; export const dynamic = "force-dynamic"; diff --git a/src/app/course/[courseName]/modules/ExpandableModule.tsx b/src/app/course/[courseName]/modules/ExpandableModule.tsx index cfd8594..af90c56 100644 --- a/src/app/course/[courseName]/modules/ExpandableModule.tsx +++ b/src/app/course/[courseName]/modules/ExpandableModule.tsx @@ -5,7 +5,7 @@ import { getDateFromString, getDateFromStringOrThrow, getDateOnlyMarkdownString, -} from "@/models/local/utils/timeUtils"; +} from "@/features/local/utils/timeUtils"; import { Fragment } from "react"; import Modal, { useModal } from "../../../../components/Modal"; import NewItemForm from "./NewItemForm"; diff --git a/src/app/course/[courseName]/modules/NewItemForm.tsx b/src/app/course/[courseName]/modules/NewItemForm.tsx index a720eca..4dc706f 100644 --- a/src/app/course/[courseName]/modules/NewItemForm.tsx +++ b/src/app/course/[courseName]/modules/NewItemForm.tsx @@ -15,7 +15,7 @@ import { getDateFromString, dateToMarkdownString, getDateFromStringOrThrow, -} from "@/models/local/utils/timeUtils"; +} from "@/features/local/utils/timeUtils"; import { useCreateAssignmentMutation } from "@/features/local/assignments/assignmentHooks"; export default function NewItemForm({ diff --git a/src/app/course/[courseName]/settings/HolidayConfig.tsx b/src/app/course/[courseName]/settings/HolidayConfig.tsx index 0a7a2fe..26fc411 100644 --- a/src/app/course/[courseName]/settings/HolidayConfig.tsx +++ b/src/app/course/[courseName]/settings/HolidayConfig.tsx @@ -6,12 +6,12 @@ import { useLocalCourseSettingsQuery, useUpdateLocalCourseSettingsMutation, } from "@/features/local/course/localCoursesHooks"; -import { getDateFromString } from "@/models/local/utils/timeUtils"; +import { getDateFromString } from "@/features/local/utils/timeUtils"; import { useEffect, useState } from "react"; import { holidaysToString, parseHolidays, -} from "../../../../models/local/utils/settingsUtils"; +} from "../../../../features/local/utils/settingsUtils"; import { settingsBox } from "./sharedSettings"; const exampleString = `springBreak: diff --git a/src/app/course/[courseName]/settings/StartAndEndDate.tsx b/src/app/course/[courseName]/settings/StartAndEndDate.tsx index c488818..f96d8fb 100644 --- a/src/app/course/[courseName]/settings/StartAndEndDate.tsx +++ b/src/app/course/[courseName]/settings/StartAndEndDate.tsx @@ -1,6 +1,6 @@ "use client"; import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; -import { getDateOnlyMarkdownString } from "@/models/local/utils/timeUtils"; +import { getDateOnlyMarkdownString } from "@/features/local/utils/timeUtils"; import React from "react"; import { settingsBox } from "./sharedSettings"; diff --git a/src/app/layout.tsx b/src/app/layout.tsx index bd2cdf6..4f45136 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -5,10 +5,10 @@ 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/app"; +import { trpcAppRouter } from "@/services/serverFunctions/router/appRouter"; import { createTrpcContext } from "@/services/serverFunctions/context"; import superjson from "superjson"; -import { fileStorageService } from "@/services/fileStorage/fileStorageService"; +import { fileStorageService } from "@/features/local/utils/fileStorageService"; import { ClientCacheInvalidation } from "../components/realtime/ClientCacheInvalidation"; import { getTitle } from "@/services/titleUtils"; export const dynamic = "force-dynamic"; diff --git a/src/app/todaysLectures/OneCourseLectures.tsx b/src/app/todaysLectures/OneCourseLectures.tsx index c362a89..f2aafd8 100644 --- a/src/app/todaysLectures/OneCourseLectures.tsx +++ b/src/app/todaysLectures/OneCourseLectures.tsx @@ -4,8 +4,8 @@ import { getLecturePreviewUrl } from "@/services/urlUtils"; import Link from "next/link"; import { useCourseContext } from "../course/[courseName]/context/courseContext"; import { useLecturesSuspenseQuery as useLecturesQuery } from "@/features/local/lectures/lectureHooks"; -import { getLectureForDay } from "@/models/local/utils/lectureUtils"; -import { getDateOnlyMarkdownString } from "@/models/local/utils/timeUtils"; +import { getLectureForDay } from "@/features/local/utils/lectureUtils"; +import { getDateOnlyMarkdownString } from "@/features/local/utils/timeUtils"; export default function OneCourseLectures() { const { courseName } = useCourseContext(); diff --git a/src/components/form/StoragePathSelector.tsx b/src/components/form/StoragePathSelector.tsx index 5c72ebf..73b2fb4 100644 --- a/src/components/form/StoragePathSelector.tsx +++ b/src/components/form/StoragePathSelector.tsx @@ -1,4 +1,4 @@ -import { useDirectoryContentsQuery } from "@/hooks/localCourse/storageDirectoryHooks"; +import { useDirectoryContentsQuery } from "@/features/local/utils/storageDirectoryHooks"; import { useState, useRef, useEffect } from "react"; import { createPortal } from "react-dom"; diff --git a/src/features/local/assignments/assignmentRouter.ts b/src/features/local/assignments/assignmentRouter.ts index 3c48fe1..b7a86f1 100644 --- a/src/features/local/assignments/assignmentRouter.ts +++ b/src/features/local/assignments/assignmentRouter.ts @@ -1,7 +1,7 @@ -import publicProcedure from "../../../services/serverFunctions/procedures/public"; +import publicProcedure from "../../../services/serverFunctions/publicProcedure"; import { z } from "zod"; import { router } from "../../../services/serverFunctions/trpcSetup"; -import { fileStorageService } from "@/services/fileStorage/fileStorageService"; +import { fileStorageService } from "@/features/local/utils/fileStorageService"; import { zodLocalAssignment } from "@/features/local/assignments/models/localAssignment"; export const assignmentRouter = router({ diff --git a/src/features/local/assignments/assignmentsFileStorageService.ts b/src/features/local/assignments/assignmentsFileStorageService.ts index b693da5..8fb71cc 100644 --- a/src/features/local/assignments/assignmentsFileStorageService.ts +++ b/src/features/local/assignments/assignmentsFileStorageService.ts @@ -6,7 +6,7 @@ import { assignmentMarkdownSerializer } from "@/features/local/assignments/model import path from "path"; import { promises as fs } from "fs"; import { courseItemFileStorageService } from "@/features/local/course/courseItemFileStorageService"; -import { getCoursePathByName } from "@/services/fileStorage/globalSettingsFileStorageService"; +import { getCoursePathByName } from "@/features/local/globalSettings/globalSettingsFileStorageService"; import { directoryOrFileExists } from "@/services/fileStorage/utils/fileSystemUtils"; const getAssignmentNames = async (courseName: string, moduleName: string) => { diff --git a/src/features/local/assignments/models/utils/assignmentMarkdownParser.ts b/src/features/local/assignments/models/utils/assignmentMarkdownParser.ts index 44beac1..79652fc 100644 --- a/src/features/local/assignments/models/utils/assignmentMarkdownParser.ts +++ b/src/features/local/assignments/models/utils/assignmentMarkdownParser.ts @@ -1,7 +1,7 @@ import { verifyDateOrThrow, verifyDateStringOrUndefined, -} from "../../../../../models/local/utils/timeUtils"; +} from "../../../utils/timeUtils"; import { AssignmentSubmissionType } from "../assignmentSubmissionType"; import { LocalAssignment } from "../localAssignment"; import { RubricItem } from "../rubricItem"; diff --git a/src/features/local/course/courseItemFileStorageService.ts b/src/features/local/course/courseItemFileStorageService.ts index 40d4149..6ede5f1 100644 --- a/src/features/local/course/courseItemFileStorageService.ts +++ b/src/features/local/course/courseItemFileStorageService.ts @@ -11,7 +11,7 @@ import { CourseItemType, typeToFolder, } from "@/features/local/course/courseItemTypes"; -import { getCoursePathByName } from "../../../services/fileStorage/globalSettingsFileStorageService"; +import { getCoursePathByName } from "../globalSettings/globalSettingsFileStorageService"; import { localPageMarkdownUtils, LocalCoursePage, diff --git a/src/features/local/course/settingsFileStorageService.ts b/src/features/local/course/settingsFileStorageService.ts index 0ef6525..b9f1b65 100644 --- a/src/features/local/course/settingsFileStorageService.ts +++ b/src/features/local/course/settingsFileStorageService.ts @@ -8,12 +8,12 @@ import { AssignmentSubmissionType } from "@/features/local/assignments/models/as import { getCoursePathByName, getGlobalSettings, -} from "../../../services/fileStorage/globalSettingsFileStorageService"; -import { GlobalSettingsCourse } from "@/models/local/globalSettings"; +} from "../globalSettings/globalSettingsFileStorageService"; import { LocalCourseSettings, localCourseYamlUtils, } from "@/features/local/course/localCourseSettings"; +import { GlobalSettingsCourse } from "../globalSettings/globalSettingsModels"; const getCourseSettings = async ( course: GlobalSettingsCourse diff --git a/src/services/serverFunctions/router/settingsRouter.ts b/src/features/local/course/settingsRouter.ts similarity index 92% rename from src/services/serverFunctions/router/settingsRouter.ts rename to src/features/local/course/settingsRouter.ts index 0dc04d1..94e8a8a 100644 --- a/src/services/serverFunctions/router/settingsRouter.ts +++ b/src/features/local/course/settingsRouter.ts @@ -1,18 +1,21 @@ -import publicProcedure from "../procedures/public"; +import publicProcedure from "../../../services/serverFunctions/publicProcedure"; import { z } from "zod"; -import { router } from "../trpcSetup"; -import { fileStorageService } from "@/services/fileStorage/fileStorageService"; +import { router } from "../../../services/serverFunctions/trpcSetup"; +import { fileStorageService } from "@/features/local/utils/fileStorageService"; import { prepAssignmentForNewSemester, prepLectureForNewSemester, prepPageForNewSemester, prepQuizForNewSemester, -} from "@/models/local/utils/semesterTransferUtils"; +} from "@/features/local/utils/semesterTransferUtils"; import { getGlobalSettings, updateGlobalSettings, -} from "@/services/fileStorage/globalSettingsFileStorageService"; -import { getLectures, updateLecture } from "@/features/local/lectures/lectureFileStorageService"; +} from "@/features/local/globalSettings/globalSettingsFileStorageService"; +import { + getLectures, + updateLecture, +} from "@/features/local/lectures/lectureFileStorageService"; import { zodLocalCourseSettings } from "@/features/local/course/localCourseSettings"; export const settingsRouter = router({ diff --git a/src/services/fileStorage/globalSettingsFileStorageService.ts b/src/features/local/globalSettings/globalSettingsFileStorageService.ts similarity index 87% rename from src/services/fileStorage/globalSettingsFileStorageService.ts rename to src/features/local/globalSettings/globalSettingsFileStorageService.ts index f69f9b5..68a0c84 100644 --- a/src/services/fileStorage/globalSettingsFileStorageService.ts +++ b/src/features/local/globalSettings/globalSettingsFileStorageService.ts @@ -1,14 +1,14 @@ +import { promises as fs } from "fs"; +import path from "path"; +import { basePath } from "../../../services/fileStorage/utils/fileSystemUtils"; import { GlobalSettings, zodGlobalSettings, -} from "@/models/local/globalSettings"; +} from "@/features/local/globalSettings/globalSettingsModels"; import { - globalSettingsToYaml, parseGlobalSettingsYaml, -} from "@/models/local/globalSettingsUtils"; -import { promises as fs } from "fs"; -import path from "path"; -import { basePath } from "./utils/fileSystemUtils"; + globalSettingsToYaml, +} from "@/features/local/globalSettings/globalSettingsUtils"; const SETTINGS_FILE_PATH = process.env.SETTINGS_FILE_PATH || "./globalSettings.yml"; diff --git a/src/hooks/localCourse/globalSettingsHooks.ts b/src/features/local/globalSettings/globalSettingsHooks.ts similarity index 100% rename from src/hooks/localCourse/globalSettingsHooks.ts rename to src/features/local/globalSettings/globalSettingsHooks.ts diff --git a/src/models/local/globalSettings.ts b/src/features/local/globalSettings/globalSettingsModels.ts similarity index 100% rename from src/models/local/globalSettings.ts rename to src/features/local/globalSettings/globalSettingsModels.ts diff --git a/src/services/serverFunctions/router/globalSettingsRouter.ts b/src/features/local/globalSettings/globalSettingsRouter.ts similarity index 62% rename from src/services/serverFunctions/router/globalSettingsRouter.ts rename to src/features/local/globalSettings/globalSettingsRouter.ts index e5a3d09..8baee70 100644 --- a/src/services/serverFunctions/router/globalSettingsRouter.ts +++ b/src/features/local/globalSettings/globalSettingsRouter.ts @@ -1,11 +1,11 @@ -import { zodGlobalSettings } from "@/models/local/globalSettings"; -import { router } from "../trpcSetup"; +import { router } from "../../../services/serverFunctions/trpcSetup"; import z from "zod"; -import publicProcedure from "../procedures/public"; +import publicProcedure from "../../../services/serverFunctions/publicProcedure"; import { getGlobalSettings, updateGlobalSettings, -} from "@/services/fileStorage/globalSettingsFileStorageService"; +} from "@/features/local/globalSettings/globalSettingsFileStorageService"; +import { zodGlobalSettings } from "./globalSettingsModels"; export const globalSettingsRouter = router({ getGlobalSettings: publicProcedure.query(async () => { diff --git a/src/models/local/globalSettingsUtils.ts b/src/features/local/globalSettings/globalSettingsUtils.ts similarity index 97% rename from src/models/local/globalSettingsUtils.ts rename to src/features/local/globalSettings/globalSettingsUtils.ts index 7474bfd..6c87037 100644 --- a/src/models/local/globalSettingsUtils.ts +++ b/src/features/local/globalSettings/globalSettingsUtils.ts @@ -1,4 +1,4 @@ -import { GlobalSettings, zodGlobalSettings } from "./globalSettings"; +import { GlobalSettings, zodGlobalSettings } from "./globalSettingsModels"; import { parse, stringify } from "yaml"; export const globalSettingsToYaml = (settings: GlobalSettings) => { @@ -14,4 +14,3 @@ export const parseGlobalSettingsYaml = (yaml: string): GlobalSettings => { throw new Error(`Error parsing global settings, got ${yaml}, ${e}`); } }; - diff --git a/src/features/local/lectures/lectureFileStorageService.ts b/src/features/local/lectures/lectureFileStorageService.ts index d64d625..8233234 100644 --- a/src/features/local/lectures/lectureFileStorageService.ts +++ b/src/features/local/lectures/lectureFileStorageService.ts @@ -1,15 +1,18 @@ import path from "path"; import fs from "fs/promises"; import { Lecture } from "@/features/local/lectures/lectureModel"; -import { getDateFromStringOrThrow } from "@/models/local/utils/timeUtils"; -import { getCoursePathByName } from "@/services/fileStorage/globalSettingsFileStorageService"; +import { getDateFromStringOrThrow } from "@/features/local/utils/timeUtils"; +import { getCoursePathByName } from "@/features/local/globalSettings/globalSettingsFileStorageService"; import { lectureFolderName, parseLecture, getLectureWeekName, lectureToString, } from "@/services/fileStorage/utils/lectureUtils"; -import { LocalCourseSettings, getDayOfWeek } from "../course/localCourseSettings"; +import { + LocalCourseSettings, + getDayOfWeek, +} from "../course/localCourseSettings"; export async function getLectures(courseName: string) { const courseDirectory = await getCoursePathByName(courseName); diff --git a/src/features/local/lectures/lectureRouter.ts b/src/features/local/lectures/lectureRouter.ts index 16fe9d0..11f82c7 100644 --- a/src/features/local/lectures/lectureRouter.ts +++ b/src/features/local/lectures/lectureRouter.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import publicProcedure from "../../../services/serverFunctions/procedures/public"; +import publicProcedure from "../../../services/serverFunctions/publicProcedure"; import { router } from "../../../services/serverFunctions/trpcSetup"; import { zodLecture } from "@/features/local/lectures/lectureModel"; import { diff --git a/src/features/local/modules/localCourseModuleHooks.ts b/src/features/local/modules/localCourseModuleHooks.ts index f5d7d90..626a9ef 100644 --- a/src/features/local/modules/localCourseModuleHooks.ts +++ b/src/features/local/modules/localCourseModuleHooks.ts @@ -4,7 +4,7 @@ import { CalendarItemsInterface } from "@/app/course/[courseName]/context/calend import { getDateOnlyMarkdownString, getDateFromStringOrThrow, -} from "@/models/local/utils/timeUtils"; +} from "@/features/local/utils/timeUtils"; import { useSuspenseQuery, useMutation, @@ -92,10 +92,7 @@ export const useCoursePagesByModuleByDateQuery = () => { } ); const pagesByModuleByDate = pagesAndModules.reduce( - ( - previous, - { page, moduleName } - ) => { + (previous, { page, moduleName }) => { const dueDay = getDateOnlyMarkdownString( getDateFromStringOrThrow(page.dueAt, "due at for page in items context") ); @@ -129,9 +126,7 @@ export const useCourseAssignmentsByModuleByDateQuery = () => { trpc.assignment.getAllAssignments.queryOptions({ courseName, moduleName }) ), }); - const assignments = assignmentsResults.map( - (result) => result.data - ); + const assignments = assignmentsResults.map((result) => result.data); const assignmentsAndModules = moduleNames.flatMap( (moduleName: string, index: number) => { return assignments[index].map((assignment) => ({ @@ -141,10 +136,7 @@ export const useCourseAssignmentsByModuleByDateQuery = () => { } ); const assignmentsByModuleByDate = assignmentsAndModules.reduce( - ( - previous, - { assignment, moduleName } - ) => { + (previous, { assignment, moduleName }) => { const dueDay = getDateOnlyMarkdownString( getDateFromStringOrThrow( assignment.dueAt, diff --git a/src/features/local/modules/localModules.ts b/src/features/local/modules/localModules.ts index 4e81773..23bfde1 100644 --- a/src/features/local/modules/localModules.ts +++ b/src/features/local/modules/localModules.ts @@ -1,7 +1,7 @@ import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; import { LocalAssignment } from "../assignments/models/localAssignment"; import { IModuleItem } from "./IModuleItem"; -import { getDateFromString } from "../../../models/local/utils/timeUtils"; +import { getDateFromString } from "../utils/timeUtils"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; export interface LocalModule { diff --git a/src/features/local/modules/moduleFileStorageService.ts b/src/features/local/modules/moduleFileStorageService.ts index be00619..521b1ec 100644 --- a/src/features/local/modules/moduleFileStorageService.ts +++ b/src/features/local/modules/moduleFileStorageService.ts @@ -1,6 +1,6 @@ import { promises as fs } from "fs"; import { lectureFolderName } from "../../../services/fileStorage/utils/lectureUtils"; -import { getCoursePathByName } from "../../../services/fileStorage/globalSettingsFileStorageService"; +import { getCoursePathByName } from "../globalSettings/globalSettingsFileStorageService"; export const moduleFileStorageService = { async getModuleNames(courseName: string) { diff --git a/src/features/local/modules/moduleRouter.ts b/src/features/local/modules/moduleRouter.ts index 10000e8..27eb4a9 100644 --- a/src/features/local/modules/moduleRouter.ts +++ b/src/features/local/modules/moduleRouter.ts @@ -1,7 +1,7 @@ import { z } from "zod"; -import { fileStorageService } from "@/services/fileStorage/fileStorageService"; +import { fileStorageService } from "@/features/local/utils/fileStorageService"; import { router } from "@/services/serverFunctions/trpcSetup"; -import publicProcedure from "@/services/serverFunctions/procedures/public"; +import publicProcedure from "@/services/serverFunctions/publicProcedure"; export const moduleRouter = router({ getModuleNames: publicProcedure diff --git a/src/features/local/pages/localCoursePageModels.ts b/src/features/local/pages/localCoursePageModels.ts index 395bf6f..dffa2c6 100644 --- a/src/features/local/pages/localCoursePageModels.ts +++ b/src/features/local/pages/localCoursePageModels.ts @@ -1,5 +1,5 @@ import { IModuleItem } from "@/features/local/modules/IModuleItem"; -import { verifyDateOrThrow } from "@/models/local/utils/timeUtils"; +import { verifyDateOrThrow } from "@/features/local/utils/timeUtils"; import { z } from "zod"; import { extractLabelValue } from "../assignments/models/utils/markdownUtils"; diff --git a/src/features/local/pages/pageFileStorageService.ts b/src/features/local/pages/pageFileStorageService.ts index d559417..4b2690b 100644 --- a/src/features/local/pages/pageFileStorageService.ts +++ b/src/features/local/pages/pageFileStorageService.ts @@ -1,7 +1,7 @@ import { promises as fs } from "fs"; import path from "path"; import { courseItemFileStorageService } from "../course/courseItemFileStorageService"; -import { getCoursePathByName } from "../../../services/fileStorage/globalSettingsFileStorageService"; +import { getCoursePathByName } from "../globalSettings/globalSettingsFileStorageService"; import { LocalCoursePage, localPageMarkdownUtils, diff --git a/src/features/local/pages/pageRouter.ts b/src/features/local/pages/pageRouter.ts index fed3946..06cd85f 100644 --- a/src/features/local/pages/pageRouter.ts +++ b/src/features/local/pages/pageRouter.ts @@ -1,7 +1,7 @@ -import publicProcedure from "../../../services/serverFunctions/procedures/public"; +import publicProcedure from "../../../services/serverFunctions/publicProcedure"; import { z } from "zod"; import { router } from "../../../services/serverFunctions/trpcSetup"; -import { fileStorageService } from "@/services/fileStorage/fileStorageService"; +import { fileStorageService } from "@/features/local/utils/fileStorageService"; import { zodLocalCoursePage } from "@/features/local/pages/localCoursePageModels"; export const pageRouter = router({ diff --git a/src/features/local/quizzes/models/utils/quizMarkdownUtils.ts b/src/features/local/quizzes/models/utils/quizMarkdownUtils.ts index 84b5ca9..445e25c 100644 --- a/src/features/local/quizzes/models/utils/quizMarkdownUtils.ts +++ b/src/features/local/quizzes/models/utils/quizMarkdownUtils.ts @@ -1,4 +1,7 @@ -import { verifyDateOrThrow, verifyDateStringOrUndefined } from "@/models/local/utils/timeUtils"; +import { + verifyDateOrThrow, + verifyDateStringOrUndefined, +} from "@/features/local/utils/timeUtils"; import { LocalQuiz } from "../localQuiz"; import { quizQuestionMarkdownUtils } from "./quizQuestionMarkdownUtils"; @@ -38,7 +41,6 @@ const parseNumberOrThrow = (value: string, label: string): number => { return parsed; }; const getQuizWithOnlySettings = (settings: string, name: string): LocalQuiz => { - const rawShuffleAnswers = extractLabelValue(settings, "ShuffleAnswers"); const shuffleAnswers = parseBooleanOrThrow( rawShuffleAnswers, diff --git a/src/features/local/quizzes/quizFileStorageService.ts b/src/features/local/quizzes/quizFileStorageService.ts index 1fff5a0..6189e71 100644 --- a/src/features/local/quizzes/quizFileStorageService.ts +++ b/src/features/local/quizzes/quizFileStorageService.ts @@ -1,7 +1,7 @@ import path from "path"; import { promises as fs } from "fs"; import { courseItemFileStorageService } from "../course/courseItemFileStorageService"; -import { getCoursePathByName } from "../../../services/fileStorage/globalSettingsFileStorageService"; +import { getCoursePathByName } from "../globalSettings/globalSettingsFileStorageService"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; import { quizMarkdownUtils } from "@/features/local/quizzes/models/utils/quizMarkdownUtils"; diff --git a/src/features/local/quizzes/quizRouter.ts b/src/features/local/quizzes/quizRouter.ts index 01b2129..da3ed3a 100644 --- a/src/features/local/quizzes/quizRouter.ts +++ b/src/features/local/quizzes/quizRouter.ts @@ -1,7 +1,7 @@ -import publicProcedure from "../../../services/serverFunctions/procedures/public"; +import publicProcedure from "../../../services/serverFunctions/publicProcedure"; import { z } from "zod"; import { router } from "../../../services/serverFunctions/trpcSetup"; -import { fileStorageService } from "@/services/fileStorage/fileStorageService"; +import { fileStorageService } from "@/features/local/utils/fileStorageService"; import { zodLocalQuiz } from "@/features/local/quizzes/models/localQuiz"; export const quizRouter = router({ diff --git a/src/services/serverFunctions/router/directoriesRouter.ts b/src/features/local/utils/directoriesRouter.ts similarity index 76% rename from src/services/serverFunctions/router/directoriesRouter.ts rename to src/features/local/utils/directoriesRouter.ts index 525bb7c..77b9688 100644 --- a/src/services/serverFunctions/router/directoriesRouter.ts +++ b/src/features/local/utils/directoriesRouter.ts @@ -1,7 +1,7 @@ import z from "zod"; -import publicProcedure from "../procedures/public"; -import { router } from "../trpcSetup"; -import { fileStorageService } from "@/services/fileStorage/fileStorageService"; +import publicProcedure from "../../../services/serverFunctions/publicProcedure"; +import { router } from "../../../services/serverFunctions/trpcSetup"; +import { fileStorageService } from "@/features/local/utils/fileStorageService"; export const directoriesRouter = router({ getEmptyDirectories: publicProcedure.query(async () => { diff --git a/src/services/fileStorage/fileStorageService.ts b/src/features/local/utils/fileStorageService.ts similarity index 82% rename from src/services/fileStorage/fileStorageService.ts rename to src/features/local/utils/fileStorageService.ts index 641ef26..698c8b4 100644 --- a/src/services/fileStorage/fileStorageService.ts +++ b/src/features/local/utils/fileStorageService.ts @@ -1,11 +1,14 @@ import { promises as fs } from "fs"; import path from "path"; -import { basePath, directoryOrFileExists } from "./utils/fileSystemUtils"; -import { quizFileStorageService } from "../../features/local/quizzes/quizFileStorageService"; -import { pageFileStorageService } from "../../features/local/pages/pageFileStorageService"; -import { moduleFileStorageService } from "../../features/local/modules/moduleFileStorageService"; -import { settingsFileStorageService } from "../../features/local/course/settingsFileStorageService"; -import { getCoursePathByName } from "./globalSettingsFileStorageService"; +import { + basePath, + directoryOrFileExists, +} from "../../../services/fileStorage/utils/fileSystemUtils"; +import { quizFileStorageService } from "../quizzes/quizFileStorageService"; +import { pageFileStorageService } from "../pages/pageFileStorageService"; +import { moduleFileStorageService } from "../modules/moduleFileStorageService"; +import { settingsFileStorageService } from "../course/settingsFileStorageService"; +import { getCoursePathByName } from "../globalSettings/globalSettingsFileStorageService"; import { assignmentsFileStorageService } from "@/features/local/assignments/assignmentsFileStorageService"; export const fileStorageService = { diff --git a/src/models/local/utils/lectureUtils.ts b/src/features/local/utils/lectureUtils.ts similarity index 79% rename from src/models/local/utils/lectureUtils.ts rename to src/features/local/utils/lectureUtils.ts index b7e1f4f..67854fd 100644 --- a/src/models/local/utils/lectureUtils.ts +++ b/src/features/local/utils/lectureUtils.ts @@ -1,4 +1,4 @@ -import { Lecture } from "../../../features/local/lectures/lectureModel"; +import { Lecture } from "../lectures/lectureModel"; import { getDateOnlyMarkdownString } from "./timeUtils"; export function getLectureForDay( diff --git a/src/models/local/utils/semesterTransferUtils.ts b/src/features/local/utils/semesterTransferUtils.ts similarity index 93% rename from src/models/local/utils/semesterTransferUtils.ts rename to src/features/local/utils/semesterTransferUtils.ts index 404c101..455e925 100644 --- a/src/models/local/utils/semesterTransferUtils.ts +++ b/src/features/local/utils/semesterTransferUtils.ts @@ -1,8 +1,8 @@ import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; -import { LocalAssignment } from "../../../features/local/assignments/models/localAssignment"; -import { Lecture } from "../../../features/local/lectures/lectureModel"; -import { dateToMarkdownString, getDateFromStringOrThrow } from "./timeUtils"; +import { LocalAssignment } from "../assignments/models/localAssignment"; +import { Lecture } from "../lectures/lectureModel"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; +import { getDateFromStringOrThrow, dateToMarkdownString } from "./timeUtils"; export const prepAssignmentForNewSemester = ( assignment: LocalAssignment, diff --git a/src/models/local/utils/settingsUtils.tsx b/src/features/local/utils/settingsUtils.tsx similarity index 100% rename from src/models/local/utils/settingsUtils.tsx rename to src/features/local/utils/settingsUtils.tsx diff --git a/src/hooks/localCourse/storageDirectoryHooks.ts b/src/features/local/utils/storageDirectoryHooks.ts similarity index 100% rename from src/hooks/localCourse/storageDirectoryHooks.ts rename to src/features/local/utils/storageDirectoryHooks.ts diff --git a/src/models/local/utils/timeUtils.ts b/src/features/local/utils/timeUtils.ts similarity index 100% rename from src/models/local/utils/timeUtils.ts rename to src/features/local/utils/timeUtils.ts diff --git a/src/models/local/tests/globalSettingsMarkdown.test.ts b/src/models/local/tests/globalSettingsMarkdown.test.ts index e75ec7b..593e847 100644 --- a/src/models/local/tests/globalSettingsMarkdown.test.ts +++ b/src/models/local/tests/globalSettingsMarkdown.test.ts @@ -1,9 +1,6 @@ +import { GlobalSettings } from "@/features/local/globalSettings/globalSettingsModels"; +import { globalSettingsToYaml, parseGlobalSettingsYaml } from "@/features/local/globalSettings/globalSettingsUtils"; import { describe, it, expect } from "vitest"; -import { GlobalSettings } from "../globalSettings"; -import { - globalSettingsToYaml, - parseGlobalSettingsYaml, -} from "../globalSettingsUtils"; describe("GlobalSettingsMarkdownTests", () => { it("can parse global settings", () => { diff --git a/src/models/local/tests/testHolidayParsing.test.ts b/src/models/local/tests/testHolidayParsing.test.ts index 9d2bafe..6c7126b 100644 --- a/src/models/local/tests/testHolidayParsing.test.ts +++ b/src/models/local/tests/testHolidayParsing.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect } from "vitest"; -import { parseHolidays } from "../utils/settingsUtils"; +import { parseHolidays } from "../../../features/local/utils/settingsUtils"; describe("can parse holiday string", () => { it("can parse empty list", () => { diff --git a/src/models/local/tests/testSemesterImport.test.ts b/src/models/local/tests/testSemesterImport.test.ts index 9bf540a..bf367e1 100644 --- a/src/models/local/tests/testSemesterImport.test.ts +++ b/src/models/local/tests/testSemesterImport.test.ts @@ -5,7 +5,7 @@ import { prepLectureForNewSemester, prepPageForNewSemester, prepQuizForNewSemester, -} from "../utils/semesterTransferUtils"; +} from "../../../features/local/utils/semesterTransferUtils"; import { Lecture } from "../../../features/local/lectures/lectureModel"; import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; diff --git a/src/models/local/tests/timeUtils.test.ts b/src/models/local/tests/timeUtils.test.ts index 567c7a5..4fca93c 100644 --- a/src/models/local/tests/timeUtils.test.ts +++ b/src/models/local/tests/timeUtils.test.ts @@ -1,5 +1,8 @@ import { describe, it, expect } from "vitest"; -import { dateToMarkdownString, getDateFromString } from "../utils/timeUtils"; +import { + dateToMarkdownString, + getDateFromString, +} from "../../../features/local/utils/timeUtils"; describe("Can properly handle expected date formats", () => { it("can use AM/PM dates", () => { @@ -48,25 +51,24 @@ describe("Can properly handle expected date formats", () => { const dateString = "08/27/2024 23:59:00"; const dateObject = getDateFromString(dateString); - expect(dateObject).not.toBeUndefined() - const updatedString = dateToMarkdownString(dateObject!) - expect(updatedString).toBe(dateString) + expect(dateObject).not.toBeUndefined(); + const updatedString = dateToMarkdownString(dateObject!); + expect(updatedString).toBe(dateString); }); it("can handle canvas time format", () => { const dateString = "8/29/2024, 5:00:00 PM"; const dateObject = getDateFromString(dateString); - expect(dateObject).not.toBeUndefined() - const updatedString = dateToMarkdownString(dateObject!) - expect(updatedString).toBe("08/29/2024 17:00:00") - - }) + expect(dateObject).not.toBeUndefined(); + const updatedString = dateToMarkdownString(dateObject!); + expect(updatedString).toBe("08/29/2024 17:00:00"); + }); it("can handle date without time", () => { const dateString = "8/29/2024"; const dateObject = getDateFromString(dateString); - expect(dateObject).not.toBeUndefined() - const updatedString = dateToMarkdownString(dateObject!) - expect(updatedString).toBe("08/29/2024 00:00:00") - }) + expect(dateObject).not.toBeUndefined(); + const updatedString = dateToMarkdownString(dateObject!); + expect(updatedString).toBe("08/29/2024 00:00:00"); + }); }); diff --git a/src/services/canvas/canvasAssignmentService.ts b/src/services/canvas/canvasAssignmentService.ts index 2620bdc..e5c2878 100644 --- a/src/services/canvas/canvasAssignmentService.ts +++ b/src/services/canvas/canvasAssignmentService.ts @@ -5,7 +5,7 @@ import { axiosClient } from "../axiosUtils"; import { markdownToHTMLSafe } from "../htmlMarkdownUtils"; import { CanvasRubricCreationResponse } from "@/models/canvas/assignments/canvasRubricCreationResponse"; import { assignmentPoints } from "@/features/local/assignments/models/utils/assignmentPointsUtils"; -import { getDateFromString } from "@/models/local/utils/timeUtils"; +import { getDateFromString } from "@/features/local/utils/timeUtils"; import { getRubricCriterion } from "./canvasRubricUtils"; import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; diff --git a/src/services/canvas/canvasQuizService.ts b/src/services/canvas/canvasQuizService.ts index 82c16c8..bca6766 100644 --- a/src/services/canvas/canvasQuizService.ts +++ b/src/services/canvas/canvasQuizService.ts @@ -2,12 +2,15 @@ import { CanvasQuiz } from "@/models/canvas/quizzes/canvasQuizModel"; import { axiosClient } from "../axiosUtils"; import { canvasApi, paginatedRequest } from "./canvasServiceUtils"; import { markdownToHTMLSafe } from "../htmlMarkdownUtils"; -import { getDateFromStringOrThrow } from "@/models/local/utils/timeUtils"; +import { getDateFromStringOrThrow } from "@/features/local/utils/timeUtils"; import { canvasAssignmentService } from "./canvasAssignmentService"; import { CanvasQuizQuestion } from "@/models/canvas/quizzes/canvasQuizQuestionModel"; import { escapeMatchingText } from "../utils/questionHtmlUtils"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; -import { LocalQuizQuestion, QuestionType } from "@/features/local/quizzes/models/localQuizQuestion"; +import { + LocalQuizQuestion, + QuestionType, +} from "@/features/local/quizzes/models/localQuizQuestion"; import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; export const getAnswers = ( diff --git a/src/services/fileStorage/utils/fileSystemUtils.ts b/src/services/fileStorage/utils/fileSystemUtils.ts index aa6fbb0..0ba6b89 100644 --- a/src/services/fileStorage/utils/fileSystemUtils.ts +++ b/src/services/fileStorage/utils/fileSystemUtils.ts @@ -1,5 +1,5 @@ import { promises as fs } from "fs"; -import { getGlobalSettings } from "../globalSettingsFileStorageService"; +import { getGlobalSettings } from "../../../features/local/globalSettings/globalSettingsFileStorageService"; export const directoryOrFileExists = async ( directoryPath: string diff --git a/src/services/fileStorage/utils/lectureUtils.ts b/src/services/fileStorage/utils/lectureUtils.ts index 4fa42c2..d1ca6ed 100644 --- a/src/services/fileStorage/utils/lectureUtils.ts +++ b/src/services/fileStorage/utils/lectureUtils.ts @@ -1,7 +1,7 @@ import { getWeekNumber } from "@/app/course/[courseName]/calendar/calendarMonthUtils"; import { extractLabelValue } from "@/features/local/assignments/models/utils/markdownUtils"; import { Lecture } from "@/features/local/lectures/lectureModel"; -import { getDateFromStringOrThrow } from "@/models/local/utils/timeUtils"; +import { getDateFromStringOrThrow } from "@/features/local/utils/timeUtils"; export function parseLecture(fileContent: string): Lecture { try { diff --git a/src/services/serverFunctions/procedures/public.ts b/src/services/serverFunctions/publicProcedure.ts similarity index 62% rename from src/services/serverFunctions/procedures/public.ts rename to src/services/serverFunctions/publicProcedure.ts index dccb037..f8d22d9 100644 --- a/src/services/serverFunctions/procedures/public.ts +++ b/src/services/serverFunctions/publicProcedure.ts @@ -1,4 +1,4 @@ -import { procedure } from "../trpcSetup"; +import { procedure } from "./trpcSetup"; const publicProcedure = procedure; diff --git a/src/services/serverFunctions/router/app.ts b/src/services/serverFunctions/router/appRouter.ts similarity index 80% rename from src/services/serverFunctions/router/app.ts rename to src/services/serverFunctions/router/appRouter.ts index 23a5983..b5dab65 100644 --- a/src/services/serverFunctions/router/app.ts +++ b/src/services/serverFunctions/router/appRouter.ts @@ -2,12 +2,12 @@ import { createTrpcContext } from "../context"; import { createCallerFactory, router } from "../trpcSetup"; import { assignmentRouter } from "../../../features/local/assignments/assignmentRouter"; import { canvasFileRouter } from "./canvasFileRouter"; -import { directoriesRouter } from "./directoriesRouter"; -import { globalSettingsRouter } from "./globalSettingsRouter"; +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 "./settingsRouter"; +import { settingsRouter } from "../../../features/local/course/settingsRouter"; import { moduleRouter } from "@/features/local/modules/moduleRouter"; export const trpcAppRouter = router({ diff --git a/src/services/serverFunctions/router/canvasFileRouter.ts b/src/services/serverFunctions/router/canvasFileRouter.ts index 3140a96..40be2c6 100644 --- a/src/services/serverFunctions/router/canvasFileRouter.ts +++ b/src/services/serverFunctions/router/canvasFileRouter.ts @@ -1,4 +1,4 @@ -import publicProcedure from "../procedures/public"; +import publicProcedure from "../publicProcedure"; import { z } from "zod"; import { router } from "../trpcSetup"; import { diff --git a/src/services/serverFunctions/trpcClient.ts b/src/services/serverFunctions/trpcClient.ts index 29e7dde..03c62ee 100644 --- a/src/services/serverFunctions/trpcClient.ts +++ b/src/services/serverFunctions/trpcClient.ts @@ -1,7 +1,8 @@ import { createTRPCReact } from "@trpc/react-query"; -import { createTRPCContext } from '@trpc/tanstack-react-query'; -import { AppRouter } from "./router/app"; +import { createTRPCContext } from "@trpc/tanstack-react-query"; +import { AppRouter } from "./router/appRouter"; export const trpc = createTRPCReact(); -export const { TRPCProvider, useTRPC, useTRPCClient } = createTRPCContext(); \ No newline at end of file +export const { TRPCProvider, useTRPC, useTRPCClient } = + createTRPCContext(); diff --git a/src/services/tests/fileStorage.test.ts b/src/services/tests/fileStorage.test.ts index c28fcf3..92331d4 100644 --- a/src/services/tests/fileStorage.test.ts +++ b/src/services/tests/fileStorage.test.ts @@ -1,7 +1,10 @@ import { describe, it, expect, beforeEach } from "vitest"; import { promises as fs } from "fs"; -import { fileStorageService } from "../fileStorage/fileStorageService"; -import { LocalCourseSettings, DayOfWeek } from "@/features/local/course/localCourseSettings"; +import { fileStorageService } from "../../features/local/utils/fileStorageService"; +import { + LocalCourseSettings, + DayOfWeek, +} from "@/features/local/course/localCourseSettings"; describe("FileStorageTests", () => { beforeEach(async () => { diff --git a/src/services/tests/fileStorageParsingErrors.test.ts b/src/services/tests/fileStorageParsingErrors.test.ts index 246976b..54afcc4 100644 --- a/src/services/tests/fileStorageParsingErrors.test.ts +++ b/src/services/tests/fileStorageParsingErrors.test.ts @@ -1,6 +1,6 @@ import { describe, it, expect, beforeEach } from "vitest"; import { promises as fs } from "fs"; -import { fileStorageService } from "../fileStorage/fileStorageService"; +import { fileStorageService } from "../../features/local/utils/fileStorageService"; import { basePath } from "../fileStorage/utils/fileSystemUtils"; describe("FileStorageTests", () => {