mirror of
https://github.com/cfngc4594/monaco-editor-lsp-next.git
synced 2025-05-18 15:26:36 +00:00
feat(problem-store): add testcases to store state and provider
This commit is contained in:
parent
e6614a0aa2
commit
a02335b255
@ -18,7 +18,14 @@ export default async function ProblemLayout({
|
|||||||
await Promise.all([
|
await Promise.all([
|
||||||
prisma.problem.findUnique({
|
prisma.problem.findUnique({
|
||||||
where: { id },
|
where: { id },
|
||||||
include: { templates: true },
|
include: {
|
||||||
|
templates: true,
|
||||||
|
testcases: {
|
||||||
|
include: {
|
||||||
|
data: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}),
|
}),
|
||||||
prisma.editorLanguageConfig.findMany(),
|
prisma.editorLanguageConfig.findMany(),
|
||||||
prisma.languageServerConfig.findMany(),
|
prisma.languageServerConfig.findMany(),
|
||||||
@ -28,7 +35,7 @@ export default async function ProblemLayout({
|
|||||||
return notFound();
|
return notFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
const { templates, ...problemWithoutTemplates } = problemData;
|
const { templates, testcases, ...problemWithoutTemplates } = problemData;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col h-screen">
|
<div className="flex flex-col h-screen">
|
||||||
@ -36,6 +43,7 @@ export default async function ProblemLayout({
|
|||||||
problemId={id}
|
problemId={id}
|
||||||
problem={problemWithoutTemplates}
|
problem={problemWithoutTemplates}
|
||||||
templates={templates}
|
templates={templates}
|
||||||
|
testcases={testcases}
|
||||||
editorLanguageConfigs={editorLanguageConfigs}
|
editorLanguageConfigs={editorLanguageConfigs}
|
||||||
languageServerConfigs={languageServerConfigs}
|
languageServerConfigs={languageServerConfigs}
|
||||||
>
|
>
|
||||||
|
@ -8,6 +8,7 @@ import {
|
|||||||
type Template,
|
type Template,
|
||||||
} from "@/generated/client";
|
} from "@/generated/client";
|
||||||
import { useStore } from "zustand";
|
import { useStore } from "zustand";
|
||||||
|
import { TestcaseWithData } from "@/types/prisma";
|
||||||
import { type ReactNode, createContext, useRef, useContext } from "react";
|
import { type ReactNode, createContext, useRef, useContext } from "react";
|
||||||
import { type ProblemStore, createProblemStore } from "@/stores/problem-store";
|
import { type ProblemStore, createProblemStore } from "@/stores/problem-store";
|
||||||
|
|
||||||
@ -22,6 +23,7 @@ export interface ProblemStoreProviderProps {
|
|||||||
problemId: string;
|
problemId: string;
|
||||||
problem: Problem;
|
problem: Problem;
|
||||||
templates: Template[];
|
templates: Template[];
|
||||||
|
testcases: TestcaseWithData;
|
||||||
editorLanguageConfigs: EditorLanguageConfig[];
|
editorLanguageConfigs: EditorLanguageConfig[];
|
||||||
languageServerConfigs: LanguageServerConfig[];
|
languageServerConfigs: LanguageServerConfig[];
|
||||||
}
|
}
|
||||||
@ -31,6 +33,7 @@ export const ProblemStoreProvider = ({
|
|||||||
problemId,
|
problemId,
|
||||||
problem,
|
problem,
|
||||||
templates,
|
templates,
|
||||||
|
testcases,
|
||||||
editorLanguageConfigs,
|
editorLanguageConfigs,
|
||||||
languageServerConfigs,
|
languageServerConfigs,
|
||||||
}: ProblemStoreProviderProps) => {
|
}: ProblemStoreProviderProps) => {
|
||||||
@ -48,6 +51,7 @@ export const ProblemStoreProvider = ({
|
|||||||
problemId,
|
problemId,
|
||||||
problem,
|
problem,
|
||||||
templates,
|
templates,
|
||||||
|
testcases,
|
||||||
editorLanguageConfigs,
|
editorLanguageConfigs,
|
||||||
languageServerConfigs,
|
languageServerConfigs,
|
||||||
});
|
});
|
||||||
|
@ -7,6 +7,7 @@ import type {
|
|||||||
} from "@/generated/client";
|
} from "@/generated/client";
|
||||||
import type { editor } from "monaco-editor";
|
import type { editor } from "monaco-editor";
|
||||||
import { createStore } from "zustand/vanilla";
|
import { createStore } from "zustand/vanilla";
|
||||||
|
import { TestcaseWithData } from "@/types/prisma";
|
||||||
import { createJSONStorage, persist } from "zustand/middleware";
|
import { createJSONStorage, persist } from "zustand/middleware";
|
||||||
|
|
||||||
export type ProblemState = {
|
export type ProblemState = {
|
||||||
@ -20,6 +21,7 @@ export type ProblemState = {
|
|||||||
problemId: string;
|
problemId: string;
|
||||||
problem: Problem;
|
problem: Problem;
|
||||||
templates: Template[];
|
templates: Template[];
|
||||||
|
testcases: TestcaseWithData;
|
||||||
editorLanguageConfigs: EditorLanguageConfig[];
|
editorLanguageConfigs: EditorLanguageConfig[];
|
||||||
languageServerConfigs: LanguageServerConfig[];
|
languageServerConfigs: LanguageServerConfig[];
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user