From 0a86c7003f4e6fde7c7ed3288168b20c71c4b590 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Tue, 12 Aug 2025 06:39:25 +1000 Subject: [PATCH 1/6] CORS fix for dev / prod --- .gitignore | 3 + .../migration.sql | 87 ++++++++++ .../20250805133600_add_upload/migration.sql | 159 ++++++++++++++++++ src/main.ts | 2 +- 4 files changed, 250 insertions(+), 1 deletion(-) create mode 100644 prisma/migrations/20250805071437_add_submission/migration.sql create mode 100644 prisma/migrations/20250805133600_add_upload/migration.sql diff --git a/.gitignore b/.gitignore index 64bd2a8..9480394 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,9 @@ /node_modules /build +# migration files +/prisma/Scorecards + # Logs logs *.log diff --git a/prisma/migrations/20250805071437_add_submission/migration.sql b/prisma/migrations/20250805071437_add_submission/migration.sql new file mode 100644 index 0000000..d5053b0 --- /dev/null +++ b/prisma/migrations/20250805071437_add_submission/migration.sql @@ -0,0 +1,87 @@ +/* + Warnings: + + - The primary key for the `review` table will be changed. If it partially fails, the table could be left without primary key constraint. + - Added the required column `typeId` to the `review` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "review" +ADD COLUMN "metadata" JSONB, +ADD COLUMN "typeId" TEXT NOT NULL, +ADD COLUMN "status" TEXT NOT NULL, +ADD COLUMN "reviewDate" TIMESTAMP(3) NOT NULL, +ALTER COLUMN "id" SET DEFAULT gen_random_uuid(), +ALTER COLUMN "id" SET DATA TYPE VARCHAR(36); + +-- CreateTable +CREATE TABLE "reviewType" ( + "id" VARCHAR(36) NOT NULL DEFAULT gen_random_uuid(), + "name" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL, + + CONSTRAINT "reviewType_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "reviewSummation" ( + "id" VARCHAR(36) NOT NULL DEFAULT gen_random_uuid(), + "submissionId" TEXT NOT NULL, + "aggregateScore" DOUBLE PRECISION NOT NULL, + "scorecardId" TEXT NOT NULL, + "isPassing" BOOLEAN NOT NULL, + "isFinal" BOOLEAN NOT NULL, + "reviewedDate" TIMESTAMP(3) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "createdBy" TEXT NOT NULL, + "updatedAt" TIMESTAMP(3) NOT NULL, + "updatedBy" TEXT NOT NULL, + + CONSTRAINT "reviewSummation_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "submission" ( + "id" VARCHAR(36) NOT NULL DEFAULT gen_random_uuid(), + "type" TEXT NOT NULL, + "url" TEXT NOT NULL, + "memberId" TEXT NOT NULL, + "challengeId" TEXT NOT NULL, + "legacySubmissionId" TEXT, + "legacyUploadId" TEXT, + "submissionPhaseId" TEXT, + "submittedDate" TIMESTAMP(3) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "createdBy" TEXT NOT NULL, + "updatedAt" TIMESTAMP(3) NOT NULL, + "updatedBy" TEXT NOT NULL, + + CONSTRAINT "submission_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "reviewType_id_idx" ON "reviewType"("id"); + +-- CreateIndex +CREATE INDEX "reviewType_name_idx" ON "reviewType"("name"); + +-- CreateIndex +CREATE INDEX "reviewType_isActive_idx" ON "reviewType"("isActive"); + +-- CreateIndex +CREATE INDEX "reviewSummation_id_idx" ON "reviewSummation"("id"); + +-- CreateIndex +CREATE INDEX "reviewSummation_submissionId_idx" ON "reviewSummation"("submissionId"); + +-- CreateIndex +CREATE INDEX "reviewSummation_scorecardId_idx" ON "reviewSummation"("scorecardId"); + +-- CreateIndex +CREATE INDEX "submission_id_idx" ON "submission"("id"); + +-- AddForeignKey +ALTER TABLE "review" ADD CONSTRAINT "review_submissionId_fkey" FOREIGN KEY ("submissionId") REFERENCES "submission"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "reviewSummation" ADD CONSTRAINT "reviewSummation_submissionId_fkey" FOREIGN KEY ("submissionId") REFERENCES "submission"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20250805133600_add_upload/migration.sql b/prisma/migrations/20250805133600_add_upload/migration.sql new file mode 100644 index 0000000..a153750 --- /dev/null +++ b/prisma/migrations/20250805133600_add_upload/migration.sql @@ -0,0 +1,159 @@ +/* + Warnings: + + - You are about to alter the column `submissionId` on the `review` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(14)`. + - You are about to alter the column `submissionId` on the `reviewSummation` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(14)`. + - The primary key for the `submission` table will be changed. If it partially fails, the table could be left without primary key constraint. + - You are about to alter the column `id` on the `submission` table. The data in that column could be lost. The data in that column will be cast from `VarChar(36)` to `VarChar(14)`. + - Added the required column `status` to the `submission` table without a default value. This is not possible if the table is not empty. + - Changed the type of `type` on the `submission` table. No cast exists, the column would be dropped and recreated, which cannot be done if there is data, since the column is required. + +*/ +-- CreateEnum +CREATE TYPE "UploadType" AS ENUM ('SUBMISSION', 'TEST_CASE', 'FINAL_FIX', 'REVIEW_DOCUMENT'); + +-- CreateEnum +CREATE TYPE "UploadStatus" AS ENUM ('ACTIVE', 'DELETED'); + +-- CreateEnum +CREATE TYPE "SubmissionType" AS ENUM ('CONTEST_SUBMISSION', 'SPECIFICATION_SUBMISSION', 'CHECKPOINT_SUBMISSION', 'STUDIO_FINAL_FIX_SUBMISSION'); + +-- CreateEnum +CREATE TYPE "SubmissionStatus" AS ENUM ('ACTIVE', 'FAILED_SCREENING', 'FAILED_REVIEW', 'COMPLETED_WITHOUT_WIN', 'DELETED', 'FAILED_CHECKPOINT_SCREENING', 'FAILED_CHECKPOINT_REVIEW'); + +-- DropForeignKey +ALTER TABLE "review" DROP CONSTRAINT "review_submissionId_fkey"; + +-- DropForeignKey +ALTER TABLE "reviewApplication" DROP CONSTRAINT "reviewApplication_opportunityId_fkey"; + +-- DropForeignKey +ALTER TABLE "reviewSummation" DROP CONSTRAINT "reviewSummation_submissionId_fkey"; + +-- DropIndex +DROP INDEX "review_id_idx"; + +-- DropIndex +DROP INDEX "reviewSummation_id_idx"; + +-- DropIndex +DROP INDEX "submission_id_idx"; + +-- AlterTable +ALTER TABLE "review" ADD COLUMN "legacySubmissionId" TEXT, +ALTER COLUMN "submissionId" DROP NOT NULL, +ALTER COLUMN "submissionId" SET DATA TYPE VARCHAR(14), +ALTER COLUMN "finalScore" DROP NOT NULL, +ALTER COLUMN "initialScore" DROP NOT NULL, +ALTER COLUMN "typeId" DROP NOT NULL, +ALTER COLUMN "status" DROP NOT NULL, +ALTER COLUMN "reviewDate" DROP NOT NULL; + +-- AlterTable +ALTER TABLE "reviewApplication" ALTER COLUMN "opportunityId" SET DATA TYPE TEXT, +ALTER COLUMN "updatedAt" DROP DEFAULT; + +-- AlterTable +ALTER TABLE "reviewOpportunity" ALTER COLUMN "updatedAt" DROP DEFAULT; + +-- AlterTable +ALTER TABLE "reviewSummation" ADD COLUMN "legacySubmissionId" TEXT, +ADD COLUMN "scorecardLegacyId" TEXT, +ALTER COLUMN "submissionId" SET DATA TYPE VARCHAR(14), +ALTER COLUMN "scorecardId" DROP NOT NULL, +ALTER COLUMN "isFinal" DROP NOT NULL, +ALTER COLUMN "reviewedDate" DROP NOT NULL; + +-- AlterTable +ALTER TABLE "submission" DROP CONSTRAINT "submission_pkey", +ADD COLUMN "esId" UUID, +ADD COLUMN "fileSize" INTEGER, +ADD COLUMN "fileType" TEXT, +ADD COLUMN "finalScore" DECIMAL(65,30), +ADD COLUMN "initialScore" DECIMAL(65,30), +ADD COLUMN "legacyChallengeId" BIGINT, +ADD COLUMN "markForPurchase" BOOLEAN, +ADD COLUMN "placement" INTEGER, +ADD COLUMN "prizeId" BIGINT, +ADD COLUMN "screeningScore" DECIMAL(65,30), +ADD COLUMN "status" "SubmissionStatus" NOT NULL, +ADD COLUMN "systemFileName" TEXT, +ADD COLUMN "thurgoodJobId" TEXT, +ADD COLUMN "uploadId" VARCHAR(14), +ADD COLUMN "userRank" INTEGER, +ADD COLUMN "viewCount" INTEGER, +ALTER COLUMN "id" SET DEFAULT nanoid(), +ALTER COLUMN "id" SET DATA TYPE VARCHAR(14), +DROP COLUMN "type", +ADD COLUMN "type" "SubmissionType" NOT NULL, +ALTER COLUMN "url" DROP NOT NULL, +ALTER COLUMN "memberId" DROP NOT NULL, +ALTER COLUMN "challengeId" DROP NOT NULL, +ALTER COLUMN "submittedDate" DROP NOT NULL, +ALTER COLUMN "updatedAt" DROP NOT NULL, +ALTER COLUMN "updatedBy" DROP NOT NULL, +ADD CONSTRAINT "submission_pkey" PRIMARY KEY ("id"); + +-- CreateTable +CREATE TABLE "upload" ( + "id" VARCHAR(14) NOT NULL DEFAULT nanoid(), + "legacyId" TEXT, + "projectId" TEXT NOT NULL, + "resourceId" TEXT NOT NULL, + "type" "UploadType" NOT NULL, + "status" "UploadStatus" NOT NULL, + "parameter" TEXT, + "url" TEXT, + "desc" TEXT, + "projectPhaseId" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "createdBy" TEXT NOT NULL, + "updatedAt" TIMESTAMP(3), + "updatedBy" TEXT, + + CONSTRAINT "upload_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "resourceSubmission" ( + "id" VARCHAR(14) NOT NULL DEFAULT nanoid(), + "resourceId" TEXT NOT NULL, + "submissionId" TEXT, + "legacySubmissionId" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "createdBy" TEXT NOT NULL, + "updatedAt" TIMESTAMP(3), + "updatedBy" TEXT, + + CONSTRAINT "resourceSubmission_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "upload_projectId_idx" ON "upload"("projectId"); + +-- CreateIndex +CREATE INDEX "upload_legacyId_idx" ON "upload"("legacyId"); + +-- CreateIndex +CREATE INDEX "submission_memberId_idx" ON "submission"("memberId"); + +-- CreateIndex +CREATE INDEX "submission_challengeId_idx" ON "submission"("challengeId"); + +-- CreateIndex +CREATE INDEX "submission_legacySubmissionId_idx" ON "submission"("legacySubmissionId"); + +-- AddForeignKey +ALTER TABLE "review" ADD CONSTRAINT "review_submissionId_fkey" FOREIGN KEY ("submissionId") REFERENCES "submission"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "reviewSummation" ADD CONSTRAINT "reviewSummation_submissionId_fkey" FOREIGN KEY ("submissionId") REFERENCES "submission"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "submission" ADD CONSTRAINT "submission_uploadId_fkey" FOREIGN KEY ("uploadId") REFERENCES "upload"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "reviewApplication" ADD CONSTRAINT "reviewApplication_opportunityId_fkey" FOREIGN KEY ("opportunityId") REFERENCES "reviewOpportunity"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "resourceSubmission" ADD CONSTRAINT "resourceSubmission_submissionId_fkey" FOREIGN KEY ("submissionId") REFERENCES "submission"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/src/main.ts b/src/main.ts index cfba064..6f41826 100644 --- a/src/main.ts +++ b/src/main.ts @@ -38,7 +38,7 @@ async function bootstrap() { credentials: true, origin: process.env.CORS_ALLOWED_ORIGIN ? new RegExp(process.env.CORS_ALLOWED_ORIGIN) - : ['http://localhost:3000', /\.localhost:3000$/], + : ['http://localhost:3000', /\.localhost:3000$/, 'https://topcoder.com', 'https://topcoder-dev.com', /\.topcoder-dev\.com$/, /\.topcoder\.com$/], methods: 'GET, POST, OPTIONS, PUT, DELETE, PATCH', }; app.use(cors(corsConfig)); From 9519eba625f6a26346beade436590bfb014b922a Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Tue, 12 Aug 2025 07:10:04 +1000 Subject: [PATCH 2/6] CORS fix --- src/main.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main.ts b/src/main.ts index 6f41826..07bf69f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -38,7 +38,14 @@ async function bootstrap() { credentials: true, origin: process.env.CORS_ALLOWED_ORIGIN ? new RegExp(process.env.CORS_ALLOWED_ORIGIN) - : ['http://localhost:3000', /\.localhost:3000$/, 'https://topcoder.com', 'https://topcoder-dev.com', /\.topcoder-dev\.com$/, /\.topcoder\.com$/], + : [ + 'http://localhost:3000', + /\.localhost:3000$/, + 'https://topcoder.com', + 'https://topcoder-dev.com', + /\.topcoder-dev\.com$/, + /\.topcoder\.com$/, + ], methods: 'GET, POST, OPTIONS, PUT, DELETE, PATCH', }; app.use(cors(corsConfig)); From 23b7705bae2d85e2714500af40a93c1ee7c41764 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Tue, 12 Aug 2025 07:21:07 +1000 Subject: [PATCH 3/6] Fix up migrations from duplicates due to merging --- .../migration.sql | 87 ---------- .../20250805133600_add_upload/migration.sql | 159 ------------------ 2 files changed, 246 deletions(-) delete mode 100644 prisma/migrations/20250805071437_add_submission/migration.sql delete mode 100644 prisma/migrations/20250805133600_add_upload/migration.sql diff --git a/prisma/migrations/20250805071437_add_submission/migration.sql b/prisma/migrations/20250805071437_add_submission/migration.sql deleted file mode 100644 index d5053b0..0000000 --- a/prisma/migrations/20250805071437_add_submission/migration.sql +++ /dev/null @@ -1,87 +0,0 @@ -/* - Warnings: - - - The primary key for the `review` table will be changed. If it partially fails, the table could be left without primary key constraint. - - Added the required column `typeId` to the `review` table without a default value. This is not possible if the table is not empty. - -*/ --- AlterTable -ALTER TABLE "review" -ADD COLUMN "metadata" JSONB, -ADD COLUMN "typeId" TEXT NOT NULL, -ADD COLUMN "status" TEXT NOT NULL, -ADD COLUMN "reviewDate" TIMESTAMP(3) NOT NULL, -ALTER COLUMN "id" SET DEFAULT gen_random_uuid(), -ALTER COLUMN "id" SET DATA TYPE VARCHAR(36); - --- CreateTable -CREATE TABLE "reviewType" ( - "id" VARCHAR(36) NOT NULL DEFAULT gen_random_uuid(), - "name" TEXT NOT NULL, - "isActive" BOOLEAN NOT NULL, - - CONSTRAINT "reviewType_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "reviewSummation" ( - "id" VARCHAR(36) NOT NULL DEFAULT gen_random_uuid(), - "submissionId" TEXT NOT NULL, - "aggregateScore" DOUBLE PRECISION NOT NULL, - "scorecardId" TEXT NOT NULL, - "isPassing" BOOLEAN NOT NULL, - "isFinal" BOOLEAN NOT NULL, - "reviewedDate" TIMESTAMP(3) NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "createdBy" TEXT NOT NULL, - "updatedAt" TIMESTAMP(3) NOT NULL, - "updatedBy" TEXT NOT NULL, - - CONSTRAINT "reviewSummation_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "submission" ( - "id" VARCHAR(36) NOT NULL DEFAULT gen_random_uuid(), - "type" TEXT NOT NULL, - "url" TEXT NOT NULL, - "memberId" TEXT NOT NULL, - "challengeId" TEXT NOT NULL, - "legacySubmissionId" TEXT, - "legacyUploadId" TEXT, - "submissionPhaseId" TEXT, - "submittedDate" TIMESTAMP(3) NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "createdBy" TEXT NOT NULL, - "updatedAt" TIMESTAMP(3) NOT NULL, - "updatedBy" TEXT NOT NULL, - - CONSTRAINT "submission_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE INDEX "reviewType_id_idx" ON "reviewType"("id"); - --- CreateIndex -CREATE INDEX "reviewType_name_idx" ON "reviewType"("name"); - --- CreateIndex -CREATE INDEX "reviewType_isActive_idx" ON "reviewType"("isActive"); - --- CreateIndex -CREATE INDEX "reviewSummation_id_idx" ON "reviewSummation"("id"); - --- CreateIndex -CREATE INDEX "reviewSummation_submissionId_idx" ON "reviewSummation"("submissionId"); - --- CreateIndex -CREATE INDEX "reviewSummation_scorecardId_idx" ON "reviewSummation"("scorecardId"); - --- CreateIndex -CREATE INDEX "submission_id_idx" ON "submission"("id"); - --- AddForeignKey -ALTER TABLE "review" ADD CONSTRAINT "review_submissionId_fkey" FOREIGN KEY ("submissionId") REFERENCES "submission"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "reviewSummation" ADD CONSTRAINT "reviewSummation_submissionId_fkey" FOREIGN KEY ("submissionId") REFERENCES "submission"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20250805133600_add_upload/migration.sql b/prisma/migrations/20250805133600_add_upload/migration.sql deleted file mode 100644 index a153750..0000000 --- a/prisma/migrations/20250805133600_add_upload/migration.sql +++ /dev/null @@ -1,159 +0,0 @@ -/* - Warnings: - - - You are about to alter the column `submissionId` on the `review` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(14)`. - - You are about to alter the column `submissionId` on the `reviewSummation` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(14)`. - - The primary key for the `submission` table will be changed. If it partially fails, the table could be left without primary key constraint. - - You are about to alter the column `id` on the `submission` table. The data in that column could be lost. The data in that column will be cast from `VarChar(36)` to `VarChar(14)`. - - Added the required column `status` to the `submission` table without a default value. This is not possible if the table is not empty. - - Changed the type of `type` on the `submission` table. No cast exists, the column would be dropped and recreated, which cannot be done if there is data, since the column is required. - -*/ --- CreateEnum -CREATE TYPE "UploadType" AS ENUM ('SUBMISSION', 'TEST_CASE', 'FINAL_FIX', 'REVIEW_DOCUMENT'); - --- CreateEnum -CREATE TYPE "UploadStatus" AS ENUM ('ACTIVE', 'DELETED'); - --- CreateEnum -CREATE TYPE "SubmissionType" AS ENUM ('CONTEST_SUBMISSION', 'SPECIFICATION_SUBMISSION', 'CHECKPOINT_SUBMISSION', 'STUDIO_FINAL_FIX_SUBMISSION'); - --- CreateEnum -CREATE TYPE "SubmissionStatus" AS ENUM ('ACTIVE', 'FAILED_SCREENING', 'FAILED_REVIEW', 'COMPLETED_WITHOUT_WIN', 'DELETED', 'FAILED_CHECKPOINT_SCREENING', 'FAILED_CHECKPOINT_REVIEW'); - --- DropForeignKey -ALTER TABLE "review" DROP CONSTRAINT "review_submissionId_fkey"; - --- DropForeignKey -ALTER TABLE "reviewApplication" DROP CONSTRAINT "reviewApplication_opportunityId_fkey"; - --- DropForeignKey -ALTER TABLE "reviewSummation" DROP CONSTRAINT "reviewSummation_submissionId_fkey"; - --- DropIndex -DROP INDEX "review_id_idx"; - --- DropIndex -DROP INDEX "reviewSummation_id_idx"; - --- DropIndex -DROP INDEX "submission_id_idx"; - --- AlterTable -ALTER TABLE "review" ADD COLUMN "legacySubmissionId" TEXT, -ALTER COLUMN "submissionId" DROP NOT NULL, -ALTER COLUMN "submissionId" SET DATA TYPE VARCHAR(14), -ALTER COLUMN "finalScore" DROP NOT NULL, -ALTER COLUMN "initialScore" DROP NOT NULL, -ALTER COLUMN "typeId" DROP NOT NULL, -ALTER COLUMN "status" DROP NOT NULL, -ALTER COLUMN "reviewDate" DROP NOT NULL; - --- AlterTable -ALTER TABLE "reviewApplication" ALTER COLUMN "opportunityId" SET DATA TYPE TEXT, -ALTER COLUMN "updatedAt" DROP DEFAULT; - --- AlterTable -ALTER TABLE "reviewOpportunity" ALTER COLUMN "updatedAt" DROP DEFAULT; - --- AlterTable -ALTER TABLE "reviewSummation" ADD COLUMN "legacySubmissionId" TEXT, -ADD COLUMN "scorecardLegacyId" TEXT, -ALTER COLUMN "submissionId" SET DATA TYPE VARCHAR(14), -ALTER COLUMN "scorecardId" DROP NOT NULL, -ALTER COLUMN "isFinal" DROP NOT NULL, -ALTER COLUMN "reviewedDate" DROP NOT NULL; - --- AlterTable -ALTER TABLE "submission" DROP CONSTRAINT "submission_pkey", -ADD COLUMN "esId" UUID, -ADD COLUMN "fileSize" INTEGER, -ADD COLUMN "fileType" TEXT, -ADD COLUMN "finalScore" DECIMAL(65,30), -ADD COLUMN "initialScore" DECIMAL(65,30), -ADD COLUMN "legacyChallengeId" BIGINT, -ADD COLUMN "markForPurchase" BOOLEAN, -ADD COLUMN "placement" INTEGER, -ADD COLUMN "prizeId" BIGINT, -ADD COLUMN "screeningScore" DECIMAL(65,30), -ADD COLUMN "status" "SubmissionStatus" NOT NULL, -ADD COLUMN "systemFileName" TEXT, -ADD COLUMN "thurgoodJobId" TEXT, -ADD COLUMN "uploadId" VARCHAR(14), -ADD COLUMN "userRank" INTEGER, -ADD COLUMN "viewCount" INTEGER, -ALTER COLUMN "id" SET DEFAULT nanoid(), -ALTER COLUMN "id" SET DATA TYPE VARCHAR(14), -DROP COLUMN "type", -ADD COLUMN "type" "SubmissionType" NOT NULL, -ALTER COLUMN "url" DROP NOT NULL, -ALTER COLUMN "memberId" DROP NOT NULL, -ALTER COLUMN "challengeId" DROP NOT NULL, -ALTER COLUMN "submittedDate" DROP NOT NULL, -ALTER COLUMN "updatedAt" DROP NOT NULL, -ALTER COLUMN "updatedBy" DROP NOT NULL, -ADD CONSTRAINT "submission_pkey" PRIMARY KEY ("id"); - --- CreateTable -CREATE TABLE "upload" ( - "id" VARCHAR(14) NOT NULL DEFAULT nanoid(), - "legacyId" TEXT, - "projectId" TEXT NOT NULL, - "resourceId" TEXT NOT NULL, - "type" "UploadType" NOT NULL, - "status" "UploadStatus" NOT NULL, - "parameter" TEXT, - "url" TEXT, - "desc" TEXT, - "projectPhaseId" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "createdBy" TEXT NOT NULL, - "updatedAt" TIMESTAMP(3), - "updatedBy" TEXT, - - CONSTRAINT "upload_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "resourceSubmission" ( - "id" VARCHAR(14) NOT NULL DEFAULT nanoid(), - "resourceId" TEXT NOT NULL, - "submissionId" TEXT, - "legacySubmissionId" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "createdBy" TEXT NOT NULL, - "updatedAt" TIMESTAMP(3), - "updatedBy" TEXT, - - CONSTRAINT "resourceSubmission_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE INDEX "upload_projectId_idx" ON "upload"("projectId"); - --- CreateIndex -CREATE INDEX "upload_legacyId_idx" ON "upload"("legacyId"); - --- CreateIndex -CREATE INDEX "submission_memberId_idx" ON "submission"("memberId"); - --- CreateIndex -CREATE INDEX "submission_challengeId_idx" ON "submission"("challengeId"); - --- CreateIndex -CREATE INDEX "submission_legacySubmissionId_idx" ON "submission"("legacySubmissionId"); - --- AddForeignKey -ALTER TABLE "review" ADD CONSTRAINT "review_submissionId_fkey" FOREIGN KEY ("submissionId") REFERENCES "submission"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "reviewSummation" ADD CONSTRAINT "reviewSummation_submissionId_fkey" FOREIGN KEY ("submissionId") REFERENCES "submission"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "submission" ADD CONSTRAINT "submission_uploadId_fkey" FOREIGN KEY ("uploadId") REFERENCES "upload"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "reviewApplication" ADD CONSTRAINT "reviewApplication_opportunityId_fkey" FOREIGN KEY ("opportunityId") REFERENCES "reviewOpportunity"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "resourceSubmission" ADD CONSTRAINT "resourceSubmission_submissionId_fkey" FOREIGN KEY ("submissionId") REFERENCES "submission"("id") ON DELETE SET NULL ON UPDATE CASCADE; From 37ea7590f58200217e5e8d6cb28de37c923bdf62 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Tue, 12 Aug 2025 12:43:14 +1000 Subject: [PATCH 4/6] Test ignoring the audience for now --- src/shared/modules/global/jwt.service.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/shared/modules/global/jwt.service.ts b/src/shared/modules/global/jwt.service.ts index dc4b5b8..25bd62a 100644 --- a/src/shared/modules/global/jwt.service.ts +++ b/src/shared/modules/global/jwt.service.ts @@ -94,10 +94,13 @@ export class JwtService implements OnModuleInit { // Get the signing key from Auth0 const signingKey = await this.getSigningKey(tokenHeader.kid); + + console.log(`Signing key: ${JSON.stringify(signingKey)}`); + // Verify options const verifyOptions: VerifyOptions = { issuer: AuthConfig.jwt.issuer, - audience: AuthConfig.jwt.audience, + //audience: AuthConfig.jwt.audience, clockTolerance: AuthConfig.jwt.clockTolerance, ignoreExpiration: AuthConfig.jwt.ignoreExpiration, }; @@ -111,12 +114,14 @@ export class JwtService implements OnModuleInit { } else { // In development, just decode the token without verification decodedToken = decode(token); + } if (!decodedToken) { throw new UnauthorizedException('Invalid token'); } + console.log(`Decoded token: ${JSON.stringify(decodedToken)}`); const user: JwtUser = { isMachine: false }; // Check for M2M token from Auth0 From 0dbf7f57e4f00b76be4e2e7a92244b9a2c34963b Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Tue, 12 Aug 2025 12:45:52 +1000 Subject: [PATCH 5/6] Lint --- src/shared/modules/global/jwt.service.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/shared/modules/global/jwt.service.ts b/src/shared/modules/global/jwt.service.ts index 25bd62a..cb5641b 100644 --- a/src/shared/modules/global/jwt.service.ts +++ b/src/shared/modules/global/jwt.service.ts @@ -94,7 +94,6 @@ export class JwtService implements OnModuleInit { // Get the signing key from Auth0 const signingKey = await this.getSigningKey(tokenHeader.kid); - console.log(`Signing key: ${JSON.stringify(signingKey)}`); // Verify options @@ -114,7 +113,6 @@ export class JwtService implements OnModuleInit { } else { // In development, just decode the token without verification decodedToken = decode(token); - } if (!decodedToken) { From b876f56dff3229ebad0512f23e634b17b9aa638e Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Tue, 12 Aug 2025 12:51:40 +1000 Subject: [PATCH 6/6] Ignore issuer validation --- src/shared/modules/global/jwt.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/modules/global/jwt.service.ts b/src/shared/modules/global/jwt.service.ts index cb5641b..c32a0e8 100644 --- a/src/shared/modules/global/jwt.service.ts +++ b/src/shared/modules/global/jwt.service.ts @@ -98,7 +98,7 @@ export class JwtService implements OnModuleInit { // Verify options const verifyOptions: VerifyOptions = { - issuer: AuthConfig.jwt.issuer, + //issuer: AuthConfig.jwt.issuer, //audience: AuthConfig.jwt.audience, clockTolerance: AuthConfig.jwt.clockTolerance, ignoreExpiration: AuthConfig.jwt.ignoreExpiration,