From e14a468fb057fdc24e7cbc6860064f6c5a4e195b Mon Sep 17 00:00:00 2001 From: Elhamullah Hossaini Date: Wed, 19 Nov 2025 22:59:43 +0430 Subject: [PATCH 01/11] shell: added scripts for testing --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 36b21f3..1ca9ee3 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,8 @@ "typecheck": "tsc --noEmit", "format": "prettier --write .", "format:check": "prettier --check .", - "test": "cross-env SKIP_DB_SETUP=1 vitest run", - "test:watch": "cross-env SKIP_DB_SETUP=1 vitest watch", + "test": "cross-env SKIP_DB_SETUP=1 SESSION_SECRET=\"test-session-secret-change-me-1234567890\" SENSITIVE_DATA_KEY=\"test-sensitive-data-key-change-me-1234567890\" vitest run", + "test:watch": "cross-env SKIP_DB_SETUP=1 SESSION_SECRET=\"test-session-secret-change-me-1234567890\" SENSITIVE_DATA_KEY=\"test-sensitive-data-key-change-me-1234567890\" vitest watch", "prisma:generate": "prisma generate", "db:migrate:dev": "prisma migrate dev", "db:migrate:deploy": "prisma migrate deploy", From b64349c2fbefd362bd2a79fc06440a05088129a3 Mon Sep 17 00:00:00 2001 From: Elhamullah Hossaini Date: Wed, 19 Nov 2025 23:06:40 +0430 Subject: [PATCH 02/11] fix: cicd --- package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 1ca9ee3..932559f 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,9 @@ "typecheck": "tsc --noEmit", "format": "prettier --write .", "format:check": "prettier --check .", - "test": "cross-env SKIP_DB_SETUP=1 SESSION_SECRET=\"test-session-secret-change-me-1234567890\" SENSITIVE_DATA_KEY=\"test-sensitive-data-key-change-me-1234567890\" vitest run", - "test:watch": "cross-env SKIP_DB_SETUP=1 SESSION_SECRET=\"test-session-secret-change-me-1234567890\" SENSITIVE_DATA_KEY=\"test-sensitive-data-key-change-me-1234567890\" vitest watch", + "test": "cross-env SESSION_SECRET=\"test-session-secret-change-me-1234567890\" SENSITIVE_DATA_KEY=\"test-sensitive-data-key-change-me-1234567890\" vitest run", + "test:watch": "cross-env SESSION_SECRET=\"test-session-secret-change-me-1234567890\" SENSITIVE_DATA_KEY=\"test-sensitive-data-key-change-me-1234567890\" vitest watch", + "test:skip-db": "cross-env SKIP_DB_SETUP=1 SESSION_SECRET=\"test-session-secret-change-me-1234567890\" SENSITIVE_DATA_KEY=\"test-sensitive-data-key-change-me-1234567890\" vitest run", "prisma:generate": "prisma generate", "db:migrate:dev": "prisma migrate dev", "db:migrate:deploy": "prisma migrate deploy", From 2f70410638492fb0191c5bb66e3a12ed97209718 Mon Sep 17 00:00:00 2001 From: Elhamullah Hossaini Date: Wed, 19 Nov 2025 23:16:17 +0430 Subject: [PATCH 03/11] fix: ci action error --- package.json | 3 --- prisma.config.ts | 5 +++++ vitest.setup.ts | 9 ++++++--- 3 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 prisma.config.ts diff --git a/package.json b/package.json index 932559f..2ea43ec 100644 --- a/package.json +++ b/package.json @@ -148,8 +148,5 @@ "tw-animate-css": "^1.4.0", "typescript": "^5", "vitest": "^4.0.8" - }, - "prisma": { - "seed": "tsx prisma/seed.ts" } } diff --git a/prisma.config.ts b/prisma.config.ts new file mode 100644 index 0000000..c157ce5 --- /dev/null +++ b/prisma.config.ts @@ -0,0 +1,5 @@ +import { defineConfig } from "@prisma/client/config"; + +export default defineConfig({ + seed: "tsx prisma/seed.ts", +}); diff --git a/vitest.setup.ts b/vitest.setup.ts index 57ce4ac..0a790bf 100644 --- a/vitest.setup.ts +++ b/vitest.setup.ts @@ -26,7 +26,10 @@ if (skipDbSetup) { process.env.DATABASE_URL = dbUrl.toString(); process.env.TEST_DB_SCHEMA = testSchema; - execSync(`DATABASE_URL=${process.env.DATABASE_URL} npx prisma migrate deploy`, { - stdio: "inherit", - }); + execSync( + `DATABASE_URL=${process.env.DATABASE_URL} npx prisma db push --skip-generate --accept-data-loss`, + { + stdio: "inherit", + }, + ); } From 61b283134f8c54cf91eb9ec44f4753532ddd37e4 Mon Sep 17 00:00:00 2001 From: Elhamullah Hossaini Date: Wed, 19 Nov 2025 23:21:42 +0430 Subject: [PATCH 04/11] fix: prisma config --- prisma.config.ts => prisma.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename prisma.config.ts => prisma.config.js (73%) diff --git a/prisma.config.ts b/prisma.config.js similarity index 73% rename from prisma.config.ts rename to prisma.config.js index c157ce5..e771f2d 100644 --- a/prisma.config.ts +++ b/prisma.config.js @@ -1,5 +1,5 @@ import { defineConfig } from "@prisma/client/config"; -export default defineConfig({ +module.exports = defineConfig({ seed: "tsx prisma/seed.ts", }); From 041b4a8c8d88b85d19786d72ff9ec350e5c09d39 Mon Sep 17 00:00:00 2001 From: Elhamullah Hossaini Date: Wed, 19 Nov 2025 23:27:07 +0430 Subject: [PATCH 05/11] fix: prisma generate --- prisma.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prisma.config.js b/prisma.config.js index e771f2d..1b0c298 100644 --- a/prisma.config.js +++ b/prisma.config.js @@ -1,4 +1,4 @@ -import { defineConfig } from "@prisma/client/config"; +const { defineConfig } = require("prisma/config"); module.exports = defineConfig({ seed: "tsx prisma/seed.ts", From 78c8f9cba5c71fd5e15af5a73533488ea19959ff Mon Sep 17 00:00:00 2001 From: Elhamullah Hossaini Date: Wed, 19 Nov 2025 23:35:17 +0430 Subject: [PATCH 06/11] fix: prisma linter --- prisma.config.js | 5 ----- prisma.config.mjs | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 prisma.config.js create mode 100644 prisma.config.mjs diff --git a/prisma.config.js b/prisma.config.js deleted file mode 100644 index 1b0c298..0000000 --- a/prisma.config.js +++ /dev/null @@ -1,5 +0,0 @@ -const { defineConfig } = require("prisma/config"); - -module.exports = defineConfig({ - seed: "tsx prisma/seed.ts", -}); diff --git a/prisma.config.mjs b/prisma.config.mjs new file mode 100644 index 0000000..7178b27 --- /dev/null +++ b/prisma.config.mjs @@ -0,0 +1,5 @@ +import { defineConfig } from "prisma/config"; + +export default defineConfig({ + seed: "tsx prisma/seed.ts", +}); From da5aab9dedb8fa80642ed8bdc9680201dddb217c Mon Sep 17 00:00:00 2001 From: Elhamullah Hossaini Date: Wed, 19 Nov 2025 23:41:51 +0430 Subject: [PATCH 07/11] fix: build ci error --- lib/env.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/env.ts b/lib/env.ts index b7c746e..8db65f5 100644 --- a/lib/env.ts +++ b/lib/env.ts @@ -25,7 +25,10 @@ export const env = createEnv({ server: { DATABASE_URL: z.string().url(), DIRECT_URL: z.string().url().optional(), - SESSION_SECRET: z.string().min(32), + SESSION_SECRET: z + .string() + .min(32) + .default("opensolve-test-session-secret-please-change-me-1234567890"), APP_URL: z.string().url(), DEPLOYMENT_ENVIRONMENT: z .enum(["development", "staging", "production", "preview"]) From 8ed47feb5641e079f6be93c37a832740e588c7e7 Mon Sep 17 00:00:00 2001 From: Elhamullah Hossaini Date: Wed, 19 Nov 2025 23:49:21 +0430 Subject: [PATCH 08/11] fix: env to emptyToUndefined --- lib/env.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/env.ts b/lib/env.ts index 8db65f5..8243947 100644 --- a/lib/env.ts +++ b/lib/env.ts @@ -25,10 +25,9 @@ export const env = createEnv({ server: { DATABASE_URL: z.string().url(), DIRECT_URL: z.string().url().optional(), - SESSION_SECRET: z - .string() - .min(32) - .default("opensolve-test-session-secret-please-change-me-1234567890"), + SESSION_SECRET: emptyToUndefined(z.string().min(32)).default( + "opensolve-test-session-secret-please-change-me-1234567890", + ), APP_URL: z.string().url(), DEPLOYMENT_ENVIRONMENT: z .enum(["development", "staging", "production", "preview"]) @@ -71,10 +70,9 @@ export const env = createEnv({ JUDGE_SANDBOX_DRIVER: z.enum(["docker", "mock"]).default("docker"), JUDGE_SANDBOX_WORKDIR: emptyToUndefined(z.string()), REALTIME_WORKER_TOKEN: emptyToUndefined(z.string()), - SENSITIVE_DATA_KEY: z - .string() - .min(32, "SENSITIVE_DATA_KEY must be at least 32 characters") - .default("opensolve-sensitive-data-key-please-change-me-123"), + SENSITIVE_DATA_KEY: emptyToUndefined( + z.string().min(32, "SENSITIVE_DATA_KEY must be at least 32 characters"), + ).default("opensolve-sensitive-data-key-please-change-me-123"), METRICS_ACCESS_TOKEN: emptyToUndefined(z.string()), }, client: { From 5d0a8ec478aa776a7ce695ca2b706544fa78f2de Mon Sep 17 00:00:00 2001 From: Elhamullah Hossaini Date: Wed, 19 Nov 2025 23:57:21 +0430 Subject: [PATCH 09/11] refactor: added session secrets to github secrets --- .github/workflows/ci-cd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 5f948c7..5200c57 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -18,13 +18,13 @@ jobs: APP_URL: "http://localhost:3000" NEXT_PUBLIC_SITE_URL: "http://localhost:3000" DEPLOYMENT_ENVIRONMENT: "staging" - SESSION_SECRET: "ci-session-secret-change-me" + SESSION_SECRET: ${{ secrets.SESSION_SECRET }} DATABASE_URL: "postgresql://postgres:postgres@localhost:5432/opensolve?schema=public" DIRECT_URL: "postgresql://postgres:postgres@localhost:5432/opensolve?schema=public" LOG_LEVEL: "info" RATE_LIMIT_WINDOW_SECONDS: "60" RATE_LIMIT_MAX_REQUESTS: "250" - SENSITIVE_DATA_KEY: "ci-sensitive-data-key-change-me" + SENSITIVE_DATA_KEY: ${{ secrets.SENSITIVE_DATA_KEY }} REALTIME_WORKER_TOKEN: "ci-realtime-token" METRICS_ACCESS_TOKEN: "ci-metrics-token" services: From b23b7c7b2eb2f5b30723f09482e0efa9bfae2342 Mon Sep 17 00:00:00 2001 From: Elhamullah Hossaini Date: Thu, 20 Nov 2025 00:02:45 +0430 Subject: [PATCH 10/11] fix: added prisma migration to cicd --- .github/workflows/ci-cd.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 5200c57..9bb7d41 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -49,6 +49,7 @@ jobs: cache: "npm" - run: npm ci - run: npm run prisma:generate + - run: npx prisma migrate deploy - run: npm run lint - run: npm run typecheck - run: npm run test From d9f65d9b74ad5962d808da122d531eca5320dc76 Mon Sep 17 00:00:00 2001 From: Elhamullah Hossaini Date: Thu, 20 Nov 2025 00:11:42 +0430 Subject: [PATCH 11/11] fix: build errors --- .github/workflows/ci-cd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 9bb7d41..5c0eecb 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -64,13 +64,13 @@ jobs: APP_URL: "http://localhost:3000" NEXT_PUBLIC_SITE_URL: "http://localhost:3000" DEPLOYMENT_ENVIRONMENT: "staging" - SESSION_SECRET: "ci-session-secret-change-me" + SESSION_SECRET: ${{ secrets.SESSION_SECRET }} DATABASE_URL: "postgresql://postgres:postgres@localhost:5432/opensolve?schema=public" DIRECT_URL: "postgresql://postgres:postgres@localhost:5432/opensolve?schema=public" LOG_LEVEL: "info" RATE_LIMIT_WINDOW_SECONDS: "60" RATE_LIMIT_MAX_REQUESTS: "250" - SENSITIVE_DATA_KEY: "ci-sensitive-data-key-change-me" + SENSITIVE_DATA_KEY: ${{ secrets.SENSITIVE_DATA_KEY }} REALTIME_WORKER_TOKEN: "ci-realtime-token" METRICS_ACCESS_TOKEN: "ci-metrics-token" services: