From 23e5add9c833cbdd656de950705c631d3c9a9ff3 Mon Sep 17 00:00:00 2001 From: cfngc4594 Date: Mon, 16 Jun 2025 16:59:48 +0800 Subject: [PATCH] refactor(run): rename trim to isTrim and simplify output comparison - Change boolean parameter name from 'trim' to 'isTrim' for better clarity - Simplify output comparison logic by inlining ternary expression --- .../migration.sql | 9 +++++++++ prisma/schema.prisma | 5 +---- prisma/seed.ts | 6 +++--- src/app/actions/run.ts | 15 ++++++--------- 4 files changed, 19 insertions(+), 16 deletions(-) create mode 100644 prisma/migrations/20250616085459_refactor_trim_to_is_trim/migration.sql diff --git a/prisma/migrations/20250616085459_refactor_trim_to_is_trim/migration.sql b/prisma/migrations/20250616085459_refactor_trim_to_is_trim/migration.sql new file mode 100644 index 0000000..20477bf --- /dev/null +++ b/prisma/migrations/20250616085459_refactor_trim_to_is_trim/migration.sql @@ -0,0 +1,9 @@ +/* + Warnings: + + - You are about to drop the column `trim` on the `Problem` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "Problem" DROP COLUMN "trim", +ADD COLUMN "isTrim" BOOLEAN NOT NULL DEFAULT false; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 6a14175..17488cd 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -80,18 +80,15 @@ model Problem { displayId Int @unique difficulty Difficulty @default(EASY) isPublished Boolean @default(false) - trim Boolean @default(false) + isTrim Boolean @default(false) timeLimit Int @default(1000) memoryLimit Int @default(134217728) - - localizations ProblemLocalization[] templates Template[] testcases Testcase[] submissions Submission[] - userId String? user User? @relation(fields: [userId], references: [id], onDelete: SetNull) diff --git a/prisma/seed.ts b/prisma/seed.ts index 99148b4..82d24e5 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -41,7 +41,7 @@ const problemData: Prisma.ProblemCreateInput[] = [ displayId: 1000, difficulty: "EASY", isPublished: true, - trim: true, + isTrim: true, localizations: { create: [ { @@ -735,7 +735,7 @@ int main() { displayId: 1001, difficulty: "MEDIUM", isPublished: true, - trim: true, + isTrim: true, localizations: { create: [ { @@ -1263,7 +1263,7 @@ int main() { displayId: 1002, difficulty: "HARD", isPublished: true, - trim: true, + isTrim: true, localizations: { create: [ { diff --git a/src/app/actions/run.ts b/src/app/actions/run.ts index 4948d8d..4ad0061 100644 --- a/src/app/actions/run.ts +++ b/src/app/actions/run.ts @@ -29,7 +29,7 @@ const startRun = ( timeLimit: number, memoryLimit: number, expectedOutput: string, - trim: boolean, + isTrim: boolean, ): Promise => { return new Promise((resolve, reject) => { runExec.start({ hijack: true }, async (error, stream) => { @@ -72,10 +72,7 @@ const startRun = ( const exitCode = (await runExec.inspect()).ExitCode; const timeUsage = Date.now() - startTime; if (exitCode === 0) { - let isCorrect = stdout === expectedOutput; - if (trim) { - isCorrect = stdout.trim() === expectedOutput.trim(); - } + const isCorrect = isTrim ? stdout.trim() === expectedOutput.trim() : stdout === expectedOutput; await prisma.testcaseResult.create({ data: { isCorrect, @@ -136,7 +133,7 @@ const executeRun = async ( timeLimit: number, memoryLimit: number, testcases: Testcase[], - trim: boolean + isTrim: boolean ): Promise => { for (const testcase of testcases) { const inputs = await prisma.testcaseInput.findMany({ @@ -175,7 +172,7 @@ const executeRun = async ( timeLimit, memoryLimit, testcase.expectedOutput, - trim + isTrim ); if (status !== Status.RU) { @@ -234,7 +231,7 @@ export const run = async ( testcases: Testcase[] ): Promise => { const { runOutputLimit } = config; - const { timeLimit, memoryLimit, trim } = problem; + const { timeLimit, memoryLimit, isTrim } = problem; await prisma.submission.update({ where: { @@ -255,6 +252,6 @@ export const run = async ( timeLimit, memoryLimit, testcases, - trim + isTrim ); };