mirror of
https://github.com/massbug/judge4c.git
synced 2025-05-17 23:12:23 +00:00
feat(problem-store): add submissions to problem store state and provider
- Added `submissions` field to `ProblemState` and `ProblemStore` type - Updated `createProblemStore` function to handle `submissions` - Modified `ProblemStoreProvider` to pass `submissions` as a prop - Updated `ProblemLayout` to fetch `submissions` from the database and pass to the provider
This commit is contained in:
parent
ad43eb9b0a
commit
82b0705bdb
@ -14,7 +14,7 @@ export default async function ProblemLayout({
|
|||||||
}: ProblemProps) {
|
}: ProblemProps) {
|
||||||
const { id } = await params;
|
const { id } = await params;
|
||||||
|
|
||||||
const [problem, editorLanguageConfigs, languageServerConfigs] = await Promise.all([
|
const [problem, editorLanguageConfigs, languageServerConfigs, submissions] = await Promise.all([
|
||||||
prisma.problem.findUnique({
|
prisma.problem.findUnique({
|
||||||
where: { id },
|
where: { id },
|
||||||
include: {
|
include: {
|
||||||
@ -28,6 +28,9 @@ export default async function ProblemLayout({
|
|||||||
}),
|
}),
|
||||||
prisma.editorLanguageConfig.findMany(),
|
prisma.editorLanguageConfig.findMany(),
|
||||||
prisma.languageServerConfig.findMany(),
|
prisma.languageServerConfig.findMany(),
|
||||||
|
prisma.submission.findMany({
|
||||||
|
where: { problemId: id },
|
||||||
|
})
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (!problem) {
|
if (!problem) {
|
||||||
@ -41,6 +44,7 @@ export default async function ProblemLayout({
|
|||||||
problem={problem}
|
problem={problem}
|
||||||
editorLanguageConfigs={editorLanguageConfigs}
|
editorLanguageConfigs={editorLanguageConfigs}
|
||||||
languageServerConfigs={languageServerConfigs}
|
languageServerConfigs={languageServerConfigs}
|
||||||
|
submissions={submissions}
|
||||||
>
|
>
|
||||||
<PlaygroundHeader />
|
<PlaygroundHeader />
|
||||||
<main className="flex flex-grow overflow-y-hidden p-2.5 pt-0">
|
<main className="flex flex-grow overflow-y-hidden p-2.5 pt-0">
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
EditorLanguage,
|
EditorLanguage,
|
||||||
|
type Submission,
|
||||||
type EditorLanguageConfig,
|
type EditorLanguageConfig,
|
||||||
type LanguageServerConfig,
|
type LanguageServerConfig,
|
||||||
} from "@/generated/client";
|
} from "@/generated/client";
|
||||||
@ -20,6 +21,7 @@ export interface ProblemStoreProviderProps {
|
|||||||
problem: ProblemWithDetails;
|
problem: ProblemWithDetails;
|
||||||
editorLanguageConfigs: EditorLanguageConfig[];
|
editorLanguageConfigs: EditorLanguageConfig[];
|
||||||
languageServerConfigs: LanguageServerConfig[];
|
languageServerConfigs: LanguageServerConfig[];
|
||||||
|
submissions: Submission[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ProblemStoreProvider = ({
|
export const ProblemStoreProvider = ({
|
||||||
@ -28,6 +30,7 @@ export const ProblemStoreProvider = ({
|
|||||||
problem,
|
problem,
|
||||||
editorLanguageConfigs,
|
editorLanguageConfigs,
|
||||||
languageServerConfigs,
|
languageServerConfigs,
|
||||||
|
submissions,
|
||||||
}: ProblemStoreProviderProps) => {
|
}: ProblemStoreProviderProps) => {
|
||||||
const storeRef = useRef<ProblemStoreApi | null>(null);
|
const storeRef = useRef<ProblemStoreApi | null>(null);
|
||||||
|
|
||||||
@ -44,6 +47,7 @@ export const ProblemStoreProvider = ({
|
|||||||
problem,
|
problem,
|
||||||
editorLanguageConfigs,
|
editorLanguageConfigs,
|
||||||
languageServerConfigs,
|
languageServerConfigs,
|
||||||
|
submissions,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ import type {
|
|||||||
EditorLanguage,
|
EditorLanguage,
|
||||||
EditorLanguageConfig,
|
EditorLanguageConfig,
|
||||||
LanguageServerConfig,
|
LanguageServerConfig,
|
||||||
|
Submission,
|
||||||
} 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";
|
||||||
@ -20,6 +21,7 @@ export type ProblemState = {
|
|||||||
problem: ProblemWithDetails;
|
problem: ProblemWithDetails;
|
||||||
editorLanguageConfigs: EditorLanguageConfig[];
|
editorLanguageConfigs: EditorLanguageConfig[];
|
||||||
languageServerConfigs: LanguageServerConfig[];
|
languageServerConfigs: LanguageServerConfig[];
|
||||||
|
submissions: Submission[];
|
||||||
};
|
};
|
||||||
|
|
||||||
export type ProblemActions = {
|
export type ProblemActions = {
|
||||||
|
Loading…
Reference in New Issue
Block a user