From a02335b2552ef85db7eef8e2884e718bade7709e Mon Sep 17 00:00:00 2001 From: cfngc4594 Date: Wed, 9 Apr 2025 19:41:55 +0800 Subject: [PATCH] feat(problem-store): add testcases to store state and provider --- src/app/(app)/problems/[id]/layout.tsx | 12 ++++++++++-- src/providers/problem-store-provider.tsx | 4 ++++ src/stores/problem-store.ts | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/app/(app)/problems/[id]/layout.tsx b/src/app/(app)/problems/[id]/layout.tsx index a348ce7..196c814 100644 --- a/src/app/(app)/problems/[id]/layout.tsx +++ b/src/app/(app)/problems/[id]/layout.tsx @@ -18,7 +18,14 @@ export default async function ProblemLayout({ await Promise.all([ prisma.problem.findUnique({ where: { id }, - include: { templates: true }, + include: { + templates: true, + testcases: { + include: { + data: true, + }, + }, + }, }), prisma.editorLanguageConfig.findMany(), prisma.languageServerConfig.findMany(), @@ -28,7 +35,7 @@ export default async function ProblemLayout({ return notFound(); } - const { templates, ...problemWithoutTemplates } = problemData; + const { templates, testcases, ...problemWithoutTemplates } = problemData; return (
@@ -36,6 +43,7 @@ export default async function ProblemLayout({ problemId={id} problem={problemWithoutTemplates} templates={templates} + testcases={testcases} editorLanguageConfigs={editorLanguageConfigs} languageServerConfigs={languageServerConfigs} > diff --git a/src/providers/problem-store-provider.tsx b/src/providers/problem-store-provider.tsx index 9059828..b0f2ce4 100644 --- a/src/providers/problem-store-provider.tsx +++ b/src/providers/problem-store-provider.tsx @@ -8,6 +8,7 @@ import { type Template, } from "@/generated/client"; import { useStore } from "zustand"; +import { TestcaseWithData } from "@/types/prisma"; import { type ReactNode, createContext, useRef, useContext } from "react"; import { type ProblemStore, createProblemStore } from "@/stores/problem-store"; @@ -22,6 +23,7 @@ export interface ProblemStoreProviderProps { problemId: string; problem: Problem; templates: Template[]; + testcases: TestcaseWithData; editorLanguageConfigs: EditorLanguageConfig[]; languageServerConfigs: LanguageServerConfig[]; } @@ -31,6 +33,7 @@ export const ProblemStoreProvider = ({ problemId, problem, templates, + testcases, editorLanguageConfigs, languageServerConfigs, }: ProblemStoreProviderProps) => { @@ -48,6 +51,7 @@ export const ProblemStoreProvider = ({ problemId, problem, templates, + testcases, editorLanguageConfigs, languageServerConfigs, }); diff --git a/src/stores/problem-store.ts b/src/stores/problem-store.ts index 62ac97f..a8f13c6 100644 --- a/src/stores/problem-store.ts +++ b/src/stores/problem-store.ts @@ -7,6 +7,7 @@ import type { } from "@/generated/client"; import type { editor } from "monaco-editor"; import { createStore } from "zustand/vanilla"; +import { TestcaseWithData } from "@/types/prisma"; import { createJSONStorage, persist } from "zustand/middleware"; export type ProblemState = { @@ -20,6 +21,7 @@ export type ProblemState = { problemId: string; problem: Problem; templates: Template[]; + testcases: TestcaseWithData; editorLanguageConfigs: EditorLanguageConfig[]; languageServerConfigs: LanguageServerConfig[]; };