mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 07:38:33 -06:00
more refactor
This commit is contained in:
@@ -1,22 +0,0 @@
|
||||
import { promises as fs } from "fs";
|
||||
import { getGlobalSettings } from "../../../features/local/globalSettings/globalSettingsFileStorageService";
|
||||
|
||||
export const directoryOrFileExists = async (
|
||||
directoryPath: string
|
||||
): Promise<boolean> => {
|
||||
try {
|
||||
await fs.access(directoryPath);
|
||||
return true;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
export async function getCourseNames() {
|
||||
console.log("loading course ids");
|
||||
const globalSettings = await getGlobalSettings();
|
||||
return globalSettings.courses.map((course) => course.name);
|
||||
}
|
||||
|
||||
export const basePath = process.env.STORAGE_DIRECTORY ?? "./storage";
|
||||
console.log("base path", basePath);
|
||||
@@ -1,48 +0,0 @@
|
||||
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 "@/features/local/utils/timeUtils";
|
||||
|
||||
export function parseLecture(fileContent: string): Lecture {
|
||||
try {
|
||||
const settings = fileContent.split("---\n")[0];
|
||||
const name = extractLabelValue(settings, "Name");
|
||||
const date = extractLabelValue(settings, "Date");
|
||||
|
||||
const content = fileContent.split("---\n").slice(1).join("---\n").trim();
|
||||
return {
|
||||
name,
|
||||
date,
|
||||
content,
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("Error parsing lecture: ", fileContent);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
export function lectureToString(lecture: Lecture) {
|
||||
return `Name: ${lecture.name}
|
||||
Date: ${lecture.date}
|
||||
---
|
||||
${lecture.content}`;
|
||||
}
|
||||
|
||||
export const lectureFolderName = "00 - lectures";
|
||||
|
||||
export function getLectureWeekName(semesterStart: string, lectureDate: string) {
|
||||
const startDate = getDateFromStringOrThrow(
|
||||
semesterStart,
|
||||
"semester start date in update lecture"
|
||||
);
|
||||
const targetDate = getDateFromStringOrThrow(
|
||||
lectureDate,
|
||||
"lecture start date in update lecture"
|
||||
);
|
||||
const weekNumber = getWeekNumber(startDate, targetDate)
|
||||
.toString()
|
||||
.padStart(2, "0");
|
||||
|
||||
const weekName = `week-${weekNumber}`;
|
||||
return weekName;
|
||||
}
|
||||
32
src/services/serverFunctions/appRouter.ts
Normal file
32
src/services/serverFunctions/appRouter.ts
Normal file
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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<AppRouter>();
|
||||
|
||||
|
||||
@@ -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 () => {
|
||||
|
||||
@@ -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", () => {
|
||||
|
||||
Reference in New Issue
Block a user