From 2e73835e05206d1bc246862b94450a1faa42cf46 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 25 Feb 2026 13:46:10 +0200 Subject: [PATCH 01/43] temp --- .../migration.sql | 1 + prisma/schema.prisma | 2 +- src/common/challenge-helper.js | 79 +++++++++++++++++++ src/services/ChallengeService.js | 75 ++---------------- .../DefaultChallengeReviewerService.js | 10 +-- 5 files changed, 92 insertions(+), 75 deletions(-) create mode 100644 prisma/migrations/20260225100000_rename_default_ai_workflow_id/migration.sql diff --git a/prisma/migrations/20260225100000_rename_default_ai_workflow_id/migration.sql b/prisma/migrations/20260225100000_rename_default_ai_workflow_id/migration.sql new file mode 100644 index 0000000..15ee2f5 --- /dev/null +++ b/prisma/migrations/20260225100000_rename_default_ai_workflow_id/migration.sql @@ -0,0 +1 @@ +ALTER TABLE "DefaultChallengeReviewer" RENAME COLUMN "isAIReviewer" TO "aiConfigTemplateId"; \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 735f523..aa0f792 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -668,7 +668,7 @@ model DefaultChallengeReviewer { baseCoefficient Float? incrementalCoefficient Float? opportunityType ReviewOpportunityTypeEnum? - aiWorkflowId String? @db.VarChar(14) + aiConfigTemplateId String? @db.VarChar(14) shouldOpenOpportunity Boolean @default(true) // Relations diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index b3a2047..f039e46 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -212,6 +212,85 @@ class ChallengeHelper { } } + /** + * If challenge reviewers are not provided, apply default reviewers for + * the challenge type/track (timeline-template specific first, then generic fallback). + * + * @param {Object} challenge challenge payload (mutated in-place) + * @param {Object} prisma Prisma client + */ + async applyDefaultMemberReviewersForChallengeCreation(challenge, prisma, logDebugMessage) { + if (!challenge || !prisma) { + return; + } + + if (Array.isArray(challenge.reviewers) && challenge.reviewers.length > 0) { + return; + } + + if (!challenge.typeId || !challenge.trackId) { + return; + } + + logDebugMessage(`loading default member reviewers (trackId=${challenge.trackId}, typeId=${challenge.typeId})`); + const defaultReviewerWhere = { + typeId: challenge.typeId, + trackId: challenge.trackId, + }; + + let defaultReviewers = []; + if (challenge.timelineTemplateId) { + defaultReviewers = await prisma.defaultChallengeReviewer.findMany({ + where: { + ...defaultReviewerWhere, + isMemberReview: true, + timelineTemplateId: challenge.timelineTemplateId, + }, + orderBy: { createdAt: "asc" }, + }); + } + + if (_.isEmpty(defaultReviewers)) { + defaultReviewers = await prisma.defaultChallengeReviewer.findMany({ + where: { + ...defaultReviewerWhere, + isMemberReview: true, + timelineTemplateId: null, + }, + orderBy: { createdAt: "asc" }, + }); + } + logDebugMessage(`loaded ${defaultReviewerWhere.length} default member reviewers`); + + if (!defaultReviewers || defaultReviewers.length === 0) { + return; + } + + const phaseNames = _.uniq(defaultReviewers.map((r) => r.phaseName)); + const phaseMap = new Map((challenge.phases || []).map((p) => [p.name, p.phaseId])); + + const missing = phaseNames.filter((name) => !phaseMap.has(name)); + if (missing.length > 0) { + throw new errors.BadRequestError( + `Default reviewers reference unknown phaseName(s): ${missing.join(", ")}` + ); + } + + challenge.reviewers = defaultReviewers.map((reviewer) => ({ + scorecardId: reviewer.scorecardId, + isMemberReview: reviewer.isMemberReview, + memberReviewerCount: reviewer.memberReviewerCount, + phaseId: phaseMap.get(reviewer.phaseName), + fixedAmount: reviewer.fixedAmount, + baseCoefficient: reviewer.baseCoefficient, + incrementalCoefficient: reviewer.incrementalCoefficient, + type: reviewer.opportunityType, + shouldOpenOpportunity: _.isBoolean(reviewer.shouldOpenOpportunity) + ? reviewer.shouldOpenOpportunity + : true, + })); + } + async validateChallengeUpdateRequest(currentUser, challenge, data, challengeResources) { if (process.env.LOCAL != "true") { await helper.ensureUserCanModifyChallenge(currentUser, challenge, challengeResources); diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index db8c42b..aa267db 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -331,7 +331,7 @@ async function getDefaultReviewers(currentUser, criteria) { baseCoefficient: r.baseCoefficient, incrementalCoefficient: r.incrementalCoefficient, type: r.opportunityType, - aiWorkflowId: r.aiWorkflowId, + aiConfigTemplateId: r.aiConfigTemplateId, shouldOpenOpportunity: _.isBoolean(r.shouldOpenOpportunity) ? r.shouldOpenOpportunity : true, })); } @@ -368,7 +368,7 @@ async function setDefaultReviewers(currentUser, data) { then: Joi.string().valid(..._.values(ReviewOpportunityTypeEnum)).insensitive(), otherwise: Joi.forbidden(), }), - aiWorkflowId: Joi.when("isMemberReview", { + aiConfigTemplateId: Joi.when("isMemberReview", { is: false, then: Joi.string().required(), otherwise: Joi.forbidden(), @@ -433,7 +433,7 @@ async function setDefaultReviewers(currentUser, data) { timelineTemplateId: _.isNil(value.timelineTemplateId) ? null : value.timelineTemplateId, scorecardId: String(r.scorecardId), isMemberReview: !!r.isMemberReview, - aiWorkflowId:_.isNil(r.aiWorkflowId) ? null : r.aiWorkflowId, + aiConfigTemplateId:_.isNil(r.aiConfigTemplateId) ? null : r.aiConfigTemplateId, memberReviewerCount: _.isNil(r.memberReviewerCount) ? null : Number(r.memberReviewerCount), @@ -1779,72 +1779,9 @@ async function createChallenge(currentUser, challenge, userToken) { `createChallenge: final prize validation complete (prizeType=${prizeType}) ${buildLogContext()}` ); - // If reviewers not provided, apply defaults for this (typeId, trackId) - if (!challenge.reviewers || challenge.reviewers.length === 0) { - if (challenge.typeId && challenge.trackId) { - logger.debug( - `createChallenge: loading default reviewers (trackId=${challenge.trackId}, typeId=${ - challenge.typeId - }) ${buildLogContext()}` - ); - const defaultReviewerWhere = { - typeId: challenge.typeId, - trackId: challenge.trackId, - }; - let defaultReviewers = []; - if (challenge.timelineTemplateId) { - defaultReviewers = await prisma.defaultChallengeReviewer.findMany({ - where: { - ...defaultReviewerWhere, - timelineTemplateId: challenge.timelineTemplateId, - }, - orderBy: { createdAt: "asc" }, - }); - } - if (_.isEmpty(defaultReviewers)) { - defaultReviewers = await prisma.defaultChallengeReviewer.findMany({ - where: { - ...defaultReviewerWhere, - timelineTemplateId: null, - }, - orderBy: { createdAt: "asc" }, - }); - } - logger.debug( - `createChallenge: loaded ${defaultReviewers.length} default reviewers ${buildLogContext()}` - ); - if (defaultReviewers && defaultReviewers.length > 0) { - // Resolve phaseId by name - const phaseNames = _.uniq(defaultReviewers.map((r) => r.phaseName)); - // Map phase name -> Phase definition id (Phase.id), NOT ChallengePhase.id - const phaseMap = new Map(challenge.phases.map((p) => [p.name, p.phaseId])); - - // ensure all required names exist - const missing = phaseNames.filter((n) => !phaseMap.has(n)); - if (missing.length > 0) { - throw new BadRequestError( - `Default reviewers reference unknown phaseName(s): ${missing.join(", ")}` - ); - } - - challenge.reviewers = defaultReviewers.map((r) => ({ - scorecardId: r.scorecardId, - isMemberReview: r.isMemberReview, - memberReviewerCount: r.memberReviewerCount, - // connect reviewers to the Phase model via its id - phaseId: phaseMap.get(r.phaseName), - fixedAmount: r.fixedAmount, - baseCoefficient: r.baseCoefficient, - incrementalCoefficient: r.incrementalCoefficient, - type: r.opportunityType, - aiWorkflowId: r.aiWorkflowId, - shouldOpenOpportunity: _.isBoolean(r.shouldOpenOpportunity) - ? r.shouldOpenOpportunity - : true, - })); - } - } - } + // If reviewers are not provided, apply defaults for this challenge. + const debugLog = (message) => logger.debug(`createChallenge: ${message} ${buildLogContext()}`); + await challengeHelper.applyDefaultMemberReviewersForChallengeCreation(challenge, prisma, debugLog); const prismaModel = prismaHelper.convertChallengeSchemaToPrisma(currentUser, challenge); logger.info( diff --git a/src/services/DefaultChallengeReviewerService.js b/src/services/DefaultChallengeReviewerService.js index 694b2d5..cb5a0c5 100644 --- a/src/services/DefaultChallengeReviewerService.js +++ b/src/services/DefaultChallengeReviewerService.js @@ -262,8 +262,8 @@ function normalizePayload(data = {}, isPartial = false) { } else if (!isPartial && _.isNil(data.opportunityType)) { normalized.opportunityType = null; } - if (shouldAssign(data.aiWorkflowId)) { - normalized.aiWorkflowId = data.aiWorkflowId; + if (shouldAssign(data.aiConfigTemplateId)) { + normalized.aiConfigTemplateId = data.aiConfigTemplateId; } if (shouldAssign(data.shouldOpenOpportunity)) { normalized.shouldOpenOpportunity = data.shouldOpenOpportunity; @@ -338,7 +338,7 @@ createDefaultChallengeReviewer.schema = { baseCoefficient: Joi.number().min(0).max(1).allow(null), incrementalCoefficient: Joi.number().min(0).max(1).allow(null), opportunityType: Joi.string().valid(..._.values(ReviewOpportunityTypeEnum)).insensitive(), - aiWorkflowId: Joi.when("isMemberReview", { + aiConfigTemplateId: Joi.when("isMemberReview", { is: false, then: Joi.string().required(), otherwise: Joi.valid(null), @@ -421,7 +421,7 @@ fullyUpdateDefaultChallengeReviewer.schema = { baseCoefficient: Joi.number().min(0).max(1).allow(null), incrementalCoefficient: Joi.number().min(0).max(1).allow(null), opportunityType: Joi.string().valid(..._.values(ReviewOpportunityTypeEnum)).insensitive(), - aiWorkflowId: Joi.when("isMemberReview", { + aiConfigTemplateId: Joi.when("isMemberReview", { is: false, then: Joi.string().required(), otherwise: Joi.valid(null), @@ -524,7 +524,7 @@ partiallyUpdateDefaultChallengeReviewer.schema = { .valid(..._.values(ReviewOpportunityTypeEnum)) .insensitive() .allow(null), - aiWorkflowId: Joi.string(), + aiConfigTemplateId: Joi.string(), shouldOpenOpportunity: Joi.boolean(), }) .required(), From f6ebfc17490995c36c92803ccf7845eb98cd5b73 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Thu, 26 Feb 2026 08:59:51 +0200 Subject: [PATCH 02/43] PM-4062 #time 6h migrate default reviewer's aiWorkflowId to aiConfigTemplateId and attach default ai config when creating a challenge --- config/default.js | 1 + docs/dev.env | 1 + docs/prod.env | 1 + src/common/challenge-helper.js | 218 ++++++++++++++++++++++++++++- src/services/ChallengeService.js | 20 ++- test/testHelper.js | 2 +- test/unit/ChallengeService.test.js | 112 ++++++++++++++- 7 files changed, 350 insertions(+), 5 deletions(-) diff --git a/config/default.js b/config/default.js index 93e524f..51a3e43 100644 --- a/config/default.js +++ b/config/default.js @@ -45,6 +45,7 @@ module.exports = { process.env.SUBMISSIONS_API_URL || "https://api.topcoder-dev.com/v5/submissions", MEMBERS_API_URL: process.env.MEMBERS_API_URL || "https://api.topcoder-dev.com/v6/members", REVIEW_SUMMATIONS_API_URL: process.env.REVIEW_SUMMATIONS_API_URL || "https://api.topcoder-dev.com/v6/reviewSummations", + REVIEWS_API_URL: process.env.REVIEWS_API_URL || "https://api.topcoder-dev.com", RESOURCES_API_URL: process.env.RESOURCES_API_URL || "http://localhost:4000/v5/resources", // TODO: change this to localhost RESOURCE_ROLES_API_URL: diff --git a/docs/dev.env b/docs/dev.env index f2a2c88..5f68e34 100644 --- a/docs/dev.env +++ b/docs/dev.env @@ -4,5 +4,6 @@ AUTH0_URL=https://topcoder-dev.auth0.com/oauth/token AUTH0_AUDIENCE=https://m2m.topcoder-dev.com/ DATABASE_URL="postgresql://topcoder:NUDvFEZzrey2x2og2!zn_kBzcaJ.fu_njAJcD*z2q@topcoder-services.ci8xwsszszsw.us-east-1.rds.amazonaws.com:5432/topcoder-services?schema=challenges" REVIEW_DB_URL= +REVIEWS_API_URL=https://api.topcoder-dev.com # Optional: override registrant resource role ID (defaults to SUBMITTER_ROLE_ID) # REGISTRANT_ROLE_ID= diff --git a/docs/prod.env b/docs/prod.env index 06eb6cb..4097f4a 100644 --- a/docs/prod.env +++ b/docs/prod.env @@ -2,6 +2,7 @@ AUTH0_CLIENT_ID= AUTH0_CLIENT_SECRET= AUTH0_URL= AUTH0_AUDIENCE= +REVIEWS_API_URL= AUTH_SECRET= BUSAPI_URL= AWS_ACCESS_KEY_ID= diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index f039e46..6125b06 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -219,7 +219,11 @@ class ChallengeHelper { * @param {Object} challenge challenge payload (mutated in-place) * @param {Object} prisma Prisma client */ - async applyDefaultMemberReviewersForChallengeCreation(challenge, prisma, logDebugMessage) { + async applyDefaultMemberReviewersForChallengeCreation( + challenge, + prisma, + logDebugMessage, + ) { if (!challenge || !prisma) { return; } @@ -228,6 +232,10 @@ class ChallengeHelper { return; } + if (Array.isArray(challenge.reviewers) && challenge.reviewers.length > 0) { + return; + } + if (!challenge.typeId || !challenge.trackId) { return; } @@ -260,7 +268,7 @@ class ChallengeHelper { orderBy: { createdAt: "asc" }, }); } - logDebugMessage(`loaded ${defaultReviewerWhere.length} default member reviewers`); + logDebugMessage(`loaded ${defaultReviewers.length} default member reviewers`); if (!defaultReviewers || defaultReviewers.length === 0) { return; @@ -291,6 +299,212 @@ class ChallengeHelper { })); } + /** + * If challenge reviewers are not provided, apply default reviewers for + * the challenge type/track (timeline-template specific first, then generic fallback). + * + * @param {Object} challenge challenge payload (mutated in-place) + * @param {Object} prisma Prisma client + */ + async applyDefaultAIConfigForChallengeCreation(challenge, prisma, logDebugMessage) { + if (!challenge || !prisma) { + return; + } + + if (!challenge.typeId || !challenge.trackId) { + return; + } + + logDebugMessage(`loading default ai configs (trackId=${challenge.trackId}, typeId=${challenge.typeId})`); + const defaultReviewerWhere = { + typeId: challenge.typeId, + trackId: challenge.trackId, + }; + + let defaultReviewers = []; + if (challenge.timelineTemplateId) { + defaultReviewers = await prisma.defaultChallengeReviewer.findMany({ + where: { + ...defaultReviewerWhere, + isMemberReview: false, + timelineTemplateId: challenge.timelineTemplateId, + }, + orderBy: { createdAt: "asc" }, + }); + } + + if (_.isEmpty(defaultReviewers)) { + defaultReviewers = await prisma.defaultChallengeReviewer.findMany({ + where: { + ...defaultReviewerWhere, + isMemberReview: false, + timelineTemplateId: null, + }, + orderBy: { createdAt: "asc" }, + }); + } + logDebugMessage(`loaded ${defaultReviewers.length} default ai configs`); + + if (!defaultReviewers || defaultReviewers.length === 0) { + return; + } + + const phaseNames = _.uniq(defaultReviewers.map((r) => r.phaseName)); + const phaseMap = new Map((challenge.phases || []).map((p) => [p.name, p.phaseId])); + + const missing = phaseNames.filter((name) => !phaseMap.has(name)); + if (missing.length > 0) { + throw new errors.BadRequestError( + `Default reviewers reference unknown phaseName(s): ${missing.join(", ")}` + ); + } + + const aiTemplates = new Map(); + const aiConfigsByTemplateId = new Map(); + const aiReviewers = []; + + for (const reviewer of defaultReviewers) { + if (!reviewer.aiConfigTemplateId) { + throw new errors.BadRequestError( + `Default AI reviewer is missing aiConfigTemplateId for phaseName: ${reviewer.phaseName}` + ); + } + + if (!aiTemplates.has(reviewer.aiConfigTemplateId)) { + aiTemplates.set( + reviewer.aiConfigTemplateId, + await this.getAIReviewTemplateById(reviewer.aiConfigTemplateId) + ); + } + + const template = aiTemplates.get(reviewer.aiConfigTemplateId); + const workflows = _.get(template, "workflows", []); + if (!Array.isArray(workflows) || workflows.length === 0) { + throw new errors.BadRequestError( + `AI review template '${reviewer.aiConfigTemplateId}' has no workflows` + ); + } + + const workflowIds = _.uniq( + workflows.map((workflow) => workflow.workflowId).filter((workflowId) => !!workflowId) + ); + if (workflowIds.length === 0) { + throw new errors.BadRequestError( + `AI review template '${reviewer.aiConfigTemplateId}' has no valid workflowId values` + ); + } + + for (const workflowId of workflowIds) { + aiReviewers.push({ + scorecardId: reviewer.scorecardId, + isMemberReview: false, + memberReviewerCount: null, + phaseId: phaseMap.get(reviewer.phaseName), + fixedAmount: reviewer.fixedAmount, + baseCoefficient: reviewer.baseCoefficient, + incrementalCoefficient: reviewer.incrementalCoefficient, + aiWorkflowId: workflowId, + shouldOpenOpportunity: _.isBoolean(reviewer.shouldOpenOpportunity) + ? reviewer.shouldOpenOpportunity + : true, + }); + } + + if (!aiConfigsByTemplateId.has(reviewer.aiConfigTemplateId)) { + aiConfigsByTemplateId.set(reviewer.aiConfigTemplateId, { + templateId: reviewer.aiConfigTemplateId, + minPassingThreshold: template.minPassingThreshold, + mode: template.mode, + autoFinalize: template.autoFinalize, + formula: _.isNil(template.formula) ? {} : template.formula, + workflows: workflows + .filter((workflow) => !!workflow.workflowId) + .map((workflow) => ({ + workflowId: workflow.workflowId, + weightPercent: workflow.weightPercent, + isGating: !!workflow.isGating, + })), + }); + } + } + + challenge.reviewers = [...(challenge.reviewers || []), ...aiReviewers]; + return Array.from(aiConfigsByTemplateId.values()); + } + + async createAIReviewConfigsForChallengeCreation(challengeId, aiReviewConfigs, logDebugMessage) { + if (!challengeId || !Array.isArray(aiReviewConfigs) || aiReviewConfigs.length === 0) { + return; + } + + const token = await getM2MToken(); + const reviewsApiBaseUrl = _.trimEnd( + config.REVIEWS_API_URL || "https://api.topcoder-dev.com", + "/" + ); + const url = `${reviewsApiBaseUrl}/v6/ai-review/configs`; + + for (const aiReviewConfig of aiReviewConfigs) { + const payload = { + challengeId, + minPassingThreshold: aiReviewConfig.minPassingThreshold, + mode: aiReviewConfig.mode, + autoFinalize: aiReviewConfig.autoFinalize, + formula: _.isNil(aiReviewConfig.formula) ? {} : aiReviewConfig.formula, + templateId: aiReviewConfig.templateId, + workflows: aiReviewConfig.workflows, + }; + + logDebugMessage( + `creating ai review config (challengeId=${challengeId}, templateId=${aiReviewConfig.templateId}, workflowCount=${_.get( + aiReviewConfig, + "workflows.length", + 0 + )})` + ); + + try { + await axios.post(url, payload, { + headers: { Authorization: `Bearer ${token}` }, + }); + } catch (err) { + if ( + _.get(err, "response.status") === HttpStatus.NOT_FOUND || + _.get(err, "response.status") === HttpStatus.BAD_REQUEST + ) { + throw new errors.BadRequestError( + `Failed to create AI review config for templateId '${aiReviewConfig.templateId}'` + ); + } + throw err; + } + } + } + + async getAIReviewTemplateById(templateId) { + const token = await getM2MToken(); + const reviewsApiBaseUrl = _.trimEnd( + config.REVIEWS_API_URL || "https://api.topcoder-dev.com", + "/" + ); + const url = `${reviewsApiBaseUrl}/v6/ai-review/templates/${templateId}`; + + try { + const response = await axios.get(url, { + headers: { Authorization: `Bearer ${token}` }, + }); + return response.data; + } catch (err) { + if (_.get(err, "response.status") === HttpStatus.NOT_FOUND) { + throw new errors.BadRequestError( + `AI review template with id: ${templateId} doesn't exist` + ); + } + + throw err; + } + } + async validateChallengeUpdateRequest(currentUser, challenge, data, challengeResources) { if (process.env.LOCAL != "true") { await helper.ensureUserCanModifyChallenge(currentUser, challenge, challengeResources); diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index aa267db..ccabb0c 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -1758,6 +1758,7 @@ async function createChallenge(currentUser, challenge, userToken) { if (challenge.events == null) challenge.events = []; if (challenge.attachments == null) challenge.attachments = []; if (challenge.prizeSets == null) challenge.prizeSets = []; + const hasProvidedReviewers = Array.isArray(challenge.reviewers) && challenge.reviewers.length > 0; if (challenge.reviewers == null) challenge.reviewers = []; if (challenge.metadata == null) challenge.metadata = []; if (challenge.groups == null) challenge.groups = []; @@ -1781,7 +1782,16 @@ async function createChallenge(currentUser, challenge, userToken) { // If reviewers are not provided, apply defaults for this challenge. const debugLog = (message) => logger.debug(`createChallenge: ${message} ${buildLogContext()}`); - await challengeHelper.applyDefaultMemberReviewersForChallengeCreation(challenge, prisma, debugLog); + await challengeHelper.applyDefaultMemberReviewersForChallengeCreation( + challenge, + prisma, + debugLog, + ); + const aiReviewConfigsForCreation = !hasProvidedReviewers ? await challengeHelper.applyDefaultAIConfigForChallengeCreation( + challenge, + prisma, + debugLog, + ) : []; const prismaModel = prismaHelper.convertChallengeSchemaToPrisma(currentUser, challenge); logger.info( @@ -1797,6 +1807,14 @@ async function createChallenge(currentUser, challenge, userToken) { }); logger.info(`createChallenge: challenge record created (id=${ret.id}) ${buildLogContext()}`); + if (!hasProvidedReviewers) { + await challengeHelper.createAIReviewConfigsForChallengeCreation( + ret.id, + aiReviewConfigsForCreation, + debugLog, + ); + } + ret.overview = { totalPrizes: ret.overviewTotalPrizes }; // No conversion needed - values are already in dollars in the database diff --git a/test/testHelper.js b/test/testHelper.js index c480bc6..cfe77ae 100644 --- a/test/testHelper.js +++ b/test/testHelper.js @@ -58,7 +58,7 @@ async function createData () { name: `type-${new Date().getTime()}`, description: 'desc', isActive: true, - track: 'DEVELOP', + track: 'DEVELOPMENT', abbreviation: 'abbr', createdBy: testUserId, updatedBy: testUserId diff --git a/test/unit/ChallengeService.test.js b/test/unit/ChallengeService.test.js index 3bdcca6..d070454 100644 --- a/test/unit/ChallengeService.test.js +++ b/test/unit/ChallengeService.test.js @@ -14,6 +14,7 @@ const chai = require('chai') const constants = require('../../app-constants') const service = require('../../src/services/ChallengeService') const helper = require('../../src/common/helper') +const challengeHelper = require('../../src/common/challenge-helper') const projectHelper = require('../../src/common/project-helper') const testHelper = require('../testHelper') const { getClient, ChallengeStatusEnum, PrizeSetTypeEnum } = require('../../src/common/prisma') @@ -225,7 +226,7 @@ describe('challenge service unit tests', () => { const result = await service.createChallenge( { isMachine: true, sub: 'sub', userId: 'testuser' }, challengeData, - config.M2M_FULL_ACCESS_TOKEN + config.M2M_FULL_ACCESS_TOKEN || 'test-token' ) id2 = result.id should.equal(_.get(result, 'legacy.directProjectId'), 33541) @@ -234,6 +235,115 @@ describe('challenge service unit tests', () => { } }) + it('create challenge applies default ai configs when reviewers are not provided', async () => { + const challengeData = _.cloneDeep(testChallengeData) + challengeData.discussions[0].type = 'CHALLENGE' + challengeData.prizeSets[0].type = 'PLACEMENT' + challengeData.status = 'NEW' + const originalGetProject = projectHelper.getProject + const originalApplyDefaultMemberReviewers = challengeHelper.applyDefaultMemberReviewersForChallengeCreation + const originalApplyDefaultAIConfig = challengeHelper.applyDefaultAIConfigForChallengeCreation + const originalCreateAIReviewConfigs = challengeHelper.createAIReviewConfigsForChallengeCreation + const aiReviewConfigs = [{ + templateId: 'template-1', + minPassingThreshold: 80, + mode: 'aggregated', + autoFinalize: false, + formula: {}, + workflows: [{ workflowId: 'wf-1', weightPercent: 100, isGating: true }] + }] + + let applyDefaultAICallCount = 0 + let createAIConfigCallCount = 0 + let createdChallengeId + let createdConfigs + let tempChallengeId + + projectHelper.getProject = async () => ({ directProjectId: '33541' }) + challengeHelper.applyDefaultMemberReviewersForChallengeCreation = async () => {} + challengeHelper.applyDefaultAIConfigForChallengeCreation = async () => { + applyDefaultAICallCount += 1 + return aiReviewConfigs + } + challengeHelper.createAIReviewConfigsForChallengeCreation = async (challengeIdArg, aiConfigsArg) => { + createAIConfigCallCount += 1 + createdChallengeId = challengeIdArg + createdConfigs = aiConfigsArg + } + + try { + const result = await service.createChallenge( + { isMachine: true, sub: 'sub', userId: 'testuser' }, + challengeData, + config.M2M_FULL_ACCESS_TOKEN || 'test-token' + ) + tempChallengeId = result.id + + should.equal(applyDefaultAICallCount, 1) + should.equal(createAIConfigCallCount, 1) + should.equal(createdChallengeId, result.id) + createdConfigs.should.deep.equal(aiReviewConfigs) + } finally { + projectHelper.getProject = originalGetProject + challengeHelper.applyDefaultMemberReviewersForChallengeCreation = originalApplyDefaultMemberReviewers + challengeHelper.applyDefaultAIConfigForChallengeCreation = originalApplyDefaultAIConfig + challengeHelper.createAIReviewConfigsForChallengeCreation = originalCreateAIReviewConfigs + + if (tempChallengeId) { + await prisma.challenge.delete({ where: { id: tempChallengeId } }) + } + } + }).timeout(10000) + + it('create challenge skips default ai configs when reviewers are provided', async () => { + const challengeData = _.cloneDeep(testChallengeData) + challengeData.discussions[0].type = 'CHALLENGE' + challengeData.prizeSets[0].type = 'PLACEMENT' + challengeData.status = 'NEW' + const originalGetProject = projectHelper.getProject + challengeData.reviewers = [{ + scorecardId: 'provided-scorecard', + isMemberReview: false, + phaseId: data.phase.id, + aiWorkflowId: 'wf-provided' + }] + + const originalApplyDefaultAIConfig = challengeHelper.applyDefaultAIConfigForChallengeCreation + const originalCreateAIReviewConfigs = challengeHelper.createAIReviewConfigsForChallengeCreation + let applyDefaultAICalled = false + let createAIConfigCalled = false + let tempChallengeId + + projectHelper.getProject = async () => ({ directProjectId: '33541' }) + challengeHelper.applyDefaultAIConfigForChallengeCreation = async () => { + applyDefaultAICalled = true + return [] + } + challengeHelper.createAIReviewConfigsForChallengeCreation = async () => { + createAIConfigCalled = true + } + + try { + const result = await service.createChallenge( + { isMachine: true, sub: 'sub', userId: 'testuser' }, + challengeData, + config.M2M_FULL_ACCESS_TOKEN || 'test-token' + ) + tempChallengeId = result.id + + should.equal(applyDefaultAICalled, false) + should.equal(createAIConfigCalled, false) + } finally { + projectHelper.getProject = originalGetProject + challengeHelper.applyDefaultAIConfigForChallengeCreation = originalApplyDefaultAIConfig + challengeHelper.createAIReviewConfigsForChallengeCreation = originalCreateAIReviewConfigs + + if (tempChallengeId) { + await prisma.challenge.delete({ where: { id: tempChallengeId } }) + } + } + }).timeout(10000) + it('create challenge - type not found', async () => { const challengeData = _.clone(testChallengeData) challengeData.typeId = notFoundId From 10af93fab56df33491f50f5ec15c2816d934bcd2 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 2 Mar 2026 09:22:30 +0200 Subject: [PATCH 03/43] regenerate prisma --- packages/challenge-prisma-client/edge.js | 18 +- .../challenge-prisma-client/index-browser.js | 5 +- packages/challenge-prisma-client/index.d.ts | 218 +++++++++++++----- packages/challenge-prisma-client/index.js | 18 +- packages/challenge-prisma-client/package.json | 2 +- .../challenge-prisma-client/schema.prisma | 5 +- packages/challenge-prisma-client/wasm.js | 18 +- 7 files changed, 199 insertions(+), 85 deletions(-) diff --git a/packages/challenge-prisma-client/edge.js b/packages/challenge-prisma-client/edge.js index e9d85a4..fe7c6fa 100644 --- a/packages/challenge-prisma-client/edge.js +++ b/packages/challenge-prisma-client/edge.js @@ -110,6 +110,7 @@ exports.Prisma.ChallengeScalarFieldEnum = { numOfCheckpointSubmissions: 'numOfCheckpointSubmissions', currentPhaseNames: 'currentPhaseNames', wiproAllowed: 'wiproAllowed', + funChallenge: 'funChallenge', tags: 'tags', groups: 'groups', taskIsTask: 'taskIsTask', @@ -418,7 +419,7 @@ exports.Prisma.DefaultChallengeReviewerScalarFieldEnum = { baseCoefficient: 'baseCoefficient', incrementalCoefficient: 'incrementalCoefficient', opportunityType: 'opportunityType', - aiWorkflowId: 'aiWorkflowId', + aiConfigTemplateId: 'aiConfigTemplateId', shouldOpenOpportunity: 'shouldOpenOpportunity', createdAt: 'createdAt', createdBy: 'createdBy', @@ -686,7 +687,7 @@ exports.Prisma.DefaultChallengeReviewerOrderByRelevanceFieldEnum = { scorecardId: 'scorecardId', phaseName: 'phaseName', phaseId: 'phaseId', - aiWorkflowId: 'aiWorkflowId', + aiConfigTemplateId: 'aiConfigTemplateId', createdBy: 'createdBy', updatedBy: 'updatedBy' }; @@ -804,7 +805,7 @@ const config = { "value": "prisma-client-js" }, "output": { - "value": "/home/jmgasper/Documents/Git/v6/challenge-api-v6/packages/challenge-prisma-client", + "value": "/home/vasea/work/topcoder/challenge-api-v6/packages/challenge-prisma-client", "fromEnvVar": null }, "config": { @@ -826,11 +827,12 @@ const config = { "postgresqlExtensions", "views" ], - "sourceFilePath": "/home/jmgasper/Documents/Git/v6/challenge-api-v6/prisma/schema.prisma", + "sourceFilePath": "/home/vasea/work/topcoder/challenge-api-v6/prisma/schema.prisma", "isCustomOutput": true }, "relativeEnvPaths": { - "rootEnvPath": null + "rootEnvPath": null, + "schemaEnvPath": "../../.env" }, "relativePath": "../../prisma", "clientVersion": "6.19.0", @@ -848,13 +850,13 @@ const config = { } } }, - "inlineSchema": "datasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/challenge-prisma-client\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\n// Enum for allowed challenge track values (matches app-constants)\nenum ChallengeTrackEnum {\n DESIGN\n DATA_SCIENCE\n DEVELOPMENT\n QUALITY_ASSURANCE\n}\n\nenum ReviewTypeEnum {\n COMMUNITY\n INTERNAL\n SYSTEM\n PROVISIONAL\n EXAMPLE\n}\n\nenum DiscussionTypeEnum {\n CHALLENGE\n}\n\nenum ChallengeStatusEnum {\n NEW\n DRAFT\n APPROVED\n ACTIVE\n COMPLETED\n DELETED\n CANCELLED\n CANCELLED_FAILED_REVIEW\n CANCELLED_FAILED_SCREENING\n CANCELLED_ZERO_SUBMISSIONS\n CANCELLED_WINNER_UNRESPONSIVE\n CANCELLED_CLIENT_REQUEST\n CANCELLED_REQUIREMENTS_INFEASIBLE\n CANCELLED_ZERO_REGISTRATIONS\n CANCELLED_PAYMENT_FAILED\n}\n\nenum PrizeSetTypeEnum {\n PLACEMENT\n COPILOT\n REVIEWER\n PASSED_REVIEW\n CHECKPOINT\n}\n\n// Enum for review opportunity types on reviewers\nenum ReviewOpportunityTypeEnum {\n REGULAR_REVIEW\n COMPONENT_DEV_REVIEW\n SPEC_REVIEW\n ITERATIVE_REVIEW\n SCENARIOS_REVIEW\n}\n\n//////////////////////////////////////////\n// Main Challenge model\n//////////////////////////////////////////\n\nmodel Challenge {\n id String @id @default(uuid())\n name String\n description String?\n privateDescription String?\n challengeSource String?\n descriptionFormat String?\n projectId Int? // frequently queried field\n typeId String\n trackId String // FK for relation in ChallengeTrack\n timelineTemplateId String? // now used as foreign key to ChallengeTimelineTemplate\n overviewTotalPrizes Float? // stored from overview.totalPrizes\n numOfRegistrants Int @default(0)\n numOfSubmissions Int @default(0)\n numOfCheckpointSubmissions Int @default(0)\n currentPhaseNames String[] // current phase names\n\n wiproAllowed Boolean @default(false)\n\n // simple arrays for tags and groups (PostgreSQL native array type)\n tags String[]\n groups String[]\n\n // Task information (flattened from challenge.task)\n taskIsTask Boolean @default(false)\n taskIsAssigned Boolean @default(false)\n taskMemberId String?\n\n // Dates for challenge lifecycle\n submissionStartDate DateTime?\n submissionEndDate DateTime?\n registrationStartDate DateTime?\n registrationEndDate DateTime?\n startDate DateTime?\n endDate DateTime?\n\n // Normalized billing and legacy information (one-to-one)\n billingRecord ChallengeBilling?\n legacyId Int? // Legacy system ID for searching\n legacyRecord ChallengeLegacy? @relation(\"ChallengeLegacyRelation\")\n\n // Additional fields from createChallenge schema\n status ChallengeStatusEnum @default(NEW) // new challenges default to status \"New\"\n // Normalized top‑level constraints (e.g. allowedRegistrants) for a challenge\n constraintRecord ChallengeConstraint?\n\n // Additional normalized relations from createChallenge\n events ChallengeEvent[]\n discussions ChallengeDiscussion[]\n\n // Existing relations (one-to-many) for challenge metadata, phases, prize sets, winners, attachments,\n // terms and skills\n metadata ChallengeMetadata[]\n phases ChallengePhase[]\n prizeSets ChallengePrizeSet[]\n reviewers ChallengeReviewer[]\n winners ChallengeWinner[]\n attachments Attachment[]\n terms ChallengeTerm[]\n skills ChallengeSkill[]\n auditLogs AuditLog[]\n memberAccesses MemberChallengeAccess[]\n\n // Relation to ChallengeType (FK: typeId)\n type ChallengeType @relation(fields: [typeId], references: [id])\n // Relation to ChallengeTrack (FK: trackId)\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n\n // Auditing fields (present in every table)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([projectId])\n @@index([status]) // index added for optimized search by status\n @@index([createdAt])\n @@index([updatedAt])\n @@index([typeId])\n @@index([trackId])\n @@index([groups], type: Gin, map: \"challenge_groups_gin_idx\")\n @@index([submissionStartDate])\n @@index([submissionEndDate])\n @@index([registrationStartDate])\n @@index([registrationEndDate])\n @@index([startDate])\n @@index([endDate])\n @@index([status, startDate])\n @@index([trackId, typeId, status])\n @@index([status, typeId, trackId, createdAt(sort: Desc)], map: \"challenge_status_type_track_created_at_idx\")\n @@index([legacyId])\n @@index([projectId, status])\n}\n\n//////////////////////////////////////////\n// MemberChallengeAccess view – member/challenge pairs from resources schema\n//////////////////////////////////////////\n\nview MemberChallengeAccess {\n challengeId String\n memberId String\n\n challenge Challenge @relation(fields: [challengeId], references: [id])\n\n @@map(\"MemberChallengeAccess\")\n}\n\n//////////////////////////////////////////\n// ChallengeType model\n//////////////////////////////////////////\n\nmodel ChallengeType {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n isTask Boolean @default(false)\n abbreviation String\n\n challenges Challenge[]\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this type\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([abbreviation])\n}\n\n//////////////////////////////////////////\n// ChallengeTrack model\n//////////////////////////////////////////\n\nmodel ChallengeTrack {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean\n abbreviation String\n legacyId Int? // numeric legacy system id (if provided)\n track ChallengeTrackEnum? // enum value from ChallengeTrackEnum\n challenges Challenge[]\n // Opposite relation for ChallengeTimelineTemplate\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this track\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([legacyId])\n}\n\n//////////////////////////////////////////\n// ChallengeTimelineTemplate model\n//////////////////////////////////////////\n\nmodel ChallengeTimelineTemplate {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String // now required per Swagger spec\n\n // Link to the TimelineTemplate model via timelineTemplateId.\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id])\n // Link to the ChallengeTrack model via trackId.\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n // Link to the ChallengeType model via typeId.\n type ChallengeType @relation(fields: [typeId], references: [id])\n\n isDefault Boolean @default(false)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Composite index to support searches/updates by typeId, trackId and timelineTemplateId.\n @@index([typeId, trackId, timelineTemplateId])\n}\n\n//////////////////////////////////////////\n// AuditLog model – tracks field changes\n//////////////////////////////////////////\n\nmodel AuditLog {\n id String @id @default(uuid())\n challengeId String? // optional association with a challenge\n fieldName String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now())\n createdBy String\n memberId String?\n\n // Relation field to connect AuditLog to Challenge.\n challenge Challenge? @relation(fields: [challengeId], references: [id])\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Attachment model – for challenge attachments\n//////////////////////////////////////////\n\nmodel Attachment {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String\n fileSize Int\n url String\n description String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeMetadata model – key/value metadata\n//////////////////////////////////////////\n\nmodel ChallengeMetadata {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String // name of the metadata\n value String // value stored as string for flexibility\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Prize model – individual prize in a prize set\n//////////////////////////////////////////\n\nmodel Prize {\n id String @id @default(uuid())\n description String?\n prizeSet ChallengePrizeSet @relation(fields: [prizeSetId], references: [id], onDelete: Cascade)\n prizeSetId String\n type String // e.g. \"USD\", \"POINT\" (could also be converted to enum later)\n value Float\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeWinner model – record winners for a challenge\n//////////////////////////////////////////\n\nmodel ChallengeWinner {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n userId Int\n handle String\n placement Int\n type PrizeSetTypeEnum\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type, placement])\n}\n\n//////////////////////////////////////////\n// ChallengeTerm model – association of challenge and terms\n//////////////////////////////////////////\n\nmodel ChallengeTerm {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n termId String // Terms API id\n roleId String // UUID for the associated role\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeSkill model – linking challenges with skills\n//////////////////////////////////////////\n\nmodel ChallengeSkill {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n skillId String // Request provided skillId\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeBilling model – normalized billing info\n//////////////////////////////////////////\n\nmodel ChallengeBilling {\n id String @id @default(uuid())\n billingAccountId String?\n markup Float? // in range [0, 100]\n clientBillingRate Float? // in range [0, 100]. Supporting range on postgres is an open issue with prisma https://github.com/prisma/prisma/issues/3287.\n challengeId String @unique\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeLegacy model – normalized legacy info\n//////////////////////////////////////////\n\nmodel ChallengeLegacy {\n id String @id @default(uuid())\n reviewType ReviewTypeEnum @default(INTERNAL)\n confidentialityType String @default(\"public\")\n forumId Int?\n directProjectId Int?\n screeningScorecardId Int?\n reviewScorecardId Int?\n isTask Boolean @default(false)\n useSchedulingAPI Boolean @default(false)\n pureV5Task Boolean @default(false)\n pureV5 Boolean @default(false)\n selfService Boolean @default(false)\n selfServiceCopilot String?\n track String? // as provided in the legacy object\n subTrack String? // as provided in the legacy object\n legacySystemId Int? // represents the external \"legacyId\"\n challengeId String @unique\n challenge Challenge @relation(\"ChallengeLegacyRelation\", fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeEvent model – normalized challenge events\n//////////////////////////////////////////\n\nmodel ChallengeEvent {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n eventId Int\n name String?\n key String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeDiscussion and associated options – normalized discussion channels\n//////////////////////////////////////////\n\nmodel ChallengeDiscussion {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n discussionId String?\n name String\n type DiscussionTypeEnum // updated to use enum\n provider String\n url String?\n options ChallengeDiscussionOption[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\nmodel ChallengeDiscussionOption {\n id String @id @default(uuid())\n discussion ChallengeDiscussion @relation(fields: [discussionId], references: [id], onDelete: Cascade)\n discussionId String\n optionKey String\n optionValue String\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeConstraint model – top-level challenge constraints (e.g. allowed registrants)\n//////////////////////////////////////////\n\nmodel ChallengeConstraint {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String @unique\n allowedRegistrants String[] @default([])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhase – to capture per-phase info from create/update challenge operations\n// Each phase is linked with a challenge and holds a duration and any custom constraints.\n//////////////////////////////////////////\n\nmodel Phase {\n id String @id @default(uuid())\n name String\n description String?\n isOpen Boolean\n duration Int\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Inverse relation for associated challenge phases\n challengePhases ChallengePhase[]\n ChallengeReviewer ChallengeReviewer[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\nmodel ChallengePhase {\n id String @id @default(uuid())\n challengeId String\n phaseId String // foreign key to Phase\n\n name String // phase name\n description String? // description\n isOpen Boolean? @default(false) // if this phase is open\n predecessor String? // predecessor of this phase\n duration Int? // duration in seconds\n scheduledStartDate DateTime? // when the phase is scheduled to start\n scheduledEndDate DateTime?\n actualStartDate DateTime?\n actualEndDate DateTime? // when the phase actually ended\n constraints ChallengePhaseConstraint[]\n\n // Relation fields\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n phase Phase @relation(fields: [phaseId], references: [id])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, isOpen])\n @@index([challengeId, name])\n @@index([challengeId, isOpen, scheduledEndDate, actualEndDate], map: \"challenge_phase_challenge_open_end_idx\")\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhaseConstraint – to capture custom constraints for each phase\n//////////////////////////////////////////\n\nmodel ChallengePhaseConstraint {\n id String @id @default(uuid())\n challengePhaseId String\n name String // the name/key of the constraint\n value Int // numeric value of the constraint (can be changed to Float if needed)\n\n // Relation to the phase\n challengePhase ChallengePhase @relation(fields: [challengePhaseId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengePhaseId])\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePrizeSet – to group prizes for a challenge\n//////////////////////////////////////////\n\nmodel ChallengePrizeSet {\n id String @id @default(uuid())\n challengeId String\n type PrizeSetTypeEnum // using enum instead of string\n description String?\n prizes Prize[]\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type])\n}\n\n//////////////////////////////////////////\n// ChallengeReviewer model – reviewers for a challenge, both AI and member\n//////////////////////////////////////////\n\nmodel ChallengeReviewer {\n id String @id @default(uuid())\n challengeId String\n\n // Reviewer configuration\n scorecardId String\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseId String\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n type ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n // Relation to the phase\n phase Phase @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([phaseId])\n @@index([challengeId, phaseId])\n}\n\n//////////////////////////////////////////\n// DefaultChallengeReviewer model – default reviewers by type and track\n//////////////////////////////////////////\n\nmodel DefaultChallengeReviewer {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String?\n // Reviewer configuration (mirrors ChallengeReviewer)\n scorecardId String?\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseName String\n // Optional explicit link to Phase for better fidelity\n phaseId String?\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n opportunityType ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relations\n challengeType ChallengeType @relation(fields: [typeId], references: [id])\n challengeTrack ChallengeTrack @relation(fields: [trackId], references: [id])\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n // Relation to Phase (optional for backward compatibility with phaseName)\n phase Phase? @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([typeId, trackId])\n @@index([typeId, trackId, timelineTemplateId])\n @@index([phaseId])\n}\n\n//////////////////////////////////////////\n// TimelineTemplate model – defines timeline templates\n//////////////////////////////////////////\nmodel TimelineTemplate {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n phases TimelineTemplatePhase[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Opposite relation field, linking back to ChallengeTimelineTemplate.\n challengeTimelineTemplates ChallengeTimelineTemplate[]\n\n // Opposite relation field for Challenge.\n challenges Challenge[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\n//////////////////////////////////////////\n// TimelineTemplatePhase model – phases associated with a timeline template\n//////////////////////////////////////////\nmodel TimelineTemplatePhase {\n id String @id @default(uuid())\n timelineTemplateId String\n phaseId String // identifier for the phase\n predecessor String? // optional predecessor phase id\n defaultDuration Int // duration (in minutes, hours, etc.) as per business rules\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id], onDelete: Cascade)\n\n @@index([timelineTemplateId])\n @@index([timelineTemplateId, phaseId])\n}\n", - "inlineSchemaHash": "c9846a1406075bc0459c1958404f71031f4fcd9169d5a140273162524f601f84", + "inlineSchema": "datasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/challenge-prisma-client\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\n// Enum for allowed challenge track values (matches app-constants)\nenum ChallengeTrackEnum {\n DESIGN\n DATA_SCIENCE\n DEVELOPMENT\n QUALITY_ASSURANCE\n}\n\nenum ReviewTypeEnum {\n COMMUNITY\n INTERNAL\n SYSTEM\n PROVISIONAL\n EXAMPLE\n}\n\nenum DiscussionTypeEnum {\n CHALLENGE\n}\n\nenum ChallengeStatusEnum {\n NEW\n DRAFT\n APPROVED\n ACTIVE\n COMPLETED\n DELETED\n CANCELLED\n CANCELLED_FAILED_REVIEW\n CANCELLED_FAILED_SCREENING\n CANCELLED_ZERO_SUBMISSIONS\n CANCELLED_WINNER_UNRESPONSIVE\n CANCELLED_CLIENT_REQUEST\n CANCELLED_REQUIREMENTS_INFEASIBLE\n CANCELLED_ZERO_REGISTRATIONS\n CANCELLED_PAYMENT_FAILED\n}\n\nenum PrizeSetTypeEnum {\n PLACEMENT\n COPILOT\n REVIEWER\n PASSED_REVIEW\n CHECKPOINT\n}\n\n// Enum for review opportunity types on reviewers\nenum ReviewOpportunityTypeEnum {\n REGULAR_REVIEW\n COMPONENT_DEV_REVIEW\n SPEC_REVIEW\n ITERATIVE_REVIEW\n SCENARIOS_REVIEW\n}\n\n//////////////////////////////////////////\n// Main Challenge model\n//////////////////////////////////////////\n\nmodel Challenge {\n id String @id @default(uuid())\n name String\n description String?\n privateDescription String?\n challengeSource String?\n descriptionFormat String?\n projectId Int? // frequently queried field\n typeId String\n trackId String // FK for relation in ChallengeTrack\n timelineTemplateId String? // now used as foreign key to ChallengeTimelineTemplate\n overviewTotalPrizes Float? // stored from overview.totalPrizes\n numOfRegistrants Int @default(0)\n numOfSubmissions Int @default(0)\n numOfCheckpointSubmissions Int @default(0)\n currentPhaseNames String[] // current phase names\n\n wiproAllowed Boolean @default(false)\n funChallenge Boolean @default(false)\n\n // simple arrays for tags and groups (PostgreSQL native array type)\n tags String[]\n groups String[]\n\n // Task information (flattened from challenge.task)\n taskIsTask Boolean @default(false)\n taskIsAssigned Boolean @default(false)\n taskMemberId String?\n\n // Dates for challenge lifecycle\n submissionStartDate DateTime?\n submissionEndDate DateTime?\n registrationStartDate DateTime?\n registrationEndDate DateTime?\n startDate DateTime?\n endDate DateTime?\n\n // Normalized billing and legacy information (one-to-one)\n billingRecord ChallengeBilling?\n legacyId Int? // Legacy system ID for searching\n legacyRecord ChallengeLegacy? @relation(\"ChallengeLegacyRelation\")\n\n // Additional fields from createChallenge schema\n status ChallengeStatusEnum @default(NEW) // new challenges default to status \"New\"\n // Normalized top‑level constraints (e.g. allowedRegistrants) for a challenge\n constraintRecord ChallengeConstraint?\n\n // Additional normalized relations from createChallenge\n events ChallengeEvent[]\n discussions ChallengeDiscussion[]\n\n // Existing relations (one-to-many) for challenge metadata, phases, prize sets, winners, attachments,\n // terms and skills\n metadata ChallengeMetadata[]\n phases ChallengePhase[]\n prizeSets ChallengePrizeSet[]\n reviewers ChallengeReviewer[]\n winners ChallengeWinner[]\n attachments Attachment[]\n terms ChallengeTerm[]\n skills ChallengeSkill[]\n auditLogs AuditLog[]\n memberAccesses MemberChallengeAccess[]\n\n // Relation to ChallengeType (FK: typeId)\n type ChallengeType @relation(fields: [typeId], references: [id])\n // Relation to ChallengeTrack (FK: trackId)\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n\n // Auditing fields (present in every table)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([projectId])\n @@index([status]) // index added for optimized search by status\n @@index([createdAt])\n @@index([updatedAt])\n @@index([typeId])\n @@index([trackId])\n @@index([groups], type: Gin, map: \"challenge_groups_gin_idx\")\n @@index([submissionStartDate])\n @@index([submissionEndDate])\n @@index([registrationStartDate])\n @@index([registrationEndDate])\n @@index([startDate])\n @@index([endDate])\n @@index([status, startDate])\n @@index([trackId, typeId, status])\n @@index([status, typeId, trackId, createdAt(sort: Desc)], map: \"challenge_status_type_track_created_at_idx\")\n @@index([legacyId])\n @@index([projectId, status])\n}\n\n//////////////////////////////////////////\n// MemberChallengeAccess view – member/challenge pairs from resources schema\n//////////////////////////////////////////\n\nview MemberChallengeAccess {\n challengeId String\n memberId String\n\n challenge Challenge @relation(fields: [challengeId], references: [id])\n\n @@map(\"MemberChallengeAccess\")\n}\n\n//////////////////////////////////////////\n// ChallengeType model\n//////////////////////////////////////////\n\nmodel ChallengeType {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n isTask Boolean @default(false)\n abbreviation String\n\n challenges Challenge[]\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this type\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([abbreviation])\n}\n\n//////////////////////////////////////////\n// ChallengeTrack model\n//////////////////////////////////////////\n\nmodel ChallengeTrack {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean\n abbreviation String\n legacyId Int? // numeric legacy system id (if provided)\n track ChallengeTrackEnum? // enum value from ChallengeTrackEnum\n challenges Challenge[]\n // Opposite relation for ChallengeTimelineTemplate\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this track\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([legacyId])\n}\n\n//////////////////////////////////////////\n// ChallengeTimelineTemplate model\n//////////////////////////////////////////\n\nmodel ChallengeTimelineTemplate {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String // now required per Swagger spec\n\n // Link to the TimelineTemplate model via timelineTemplateId.\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id])\n // Link to the ChallengeTrack model via trackId.\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n // Link to the ChallengeType model via typeId.\n type ChallengeType @relation(fields: [typeId], references: [id])\n\n isDefault Boolean @default(false)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Composite index to support searches/updates by typeId, trackId and timelineTemplateId.\n @@index([typeId, trackId, timelineTemplateId])\n}\n\n//////////////////////////////////////////\n// AuditLog model – tracks field changes\n//////////////////////////////////////////\n\nmodel AuditLog {\n id String @id @default(uuid())\n challengeId String? // optional association with a challenge\n fieldName String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now())\n createdBy String\n memberId String?\n\n // Relation field to connect AuditLog to Challenge.\n challenge Challenge? @relation(fields: [challengeId], references: [id])\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Attachment model – for challenge attachments\n//////////////////////////////////////////\n\nmodel Attachment {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String\n fileSize Int\n url String\n description String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeMetadata model – key/value metadata\n//////////////////////////////////////////\n\nmodel ChallengeMetadata {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String // name of the metadata\n value String // value stored as string for flexibility\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Prize model – individual prize in a prize set\n//////////////////////////////////////////\n\nmodel Prize {\n id String @id @default(uuid())\n description String?\n prizeSet ChallengePrizeSet @relation(fields: [prizeSetId], references: [id], onDelete: Cascade)\n prizeSetId String\n type String // e.g. \"USD\", \"POINT\" (could also be converted to enum later)\n value Float\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeWinner model – record winners for a challenge\n//////////////////////////////////////////\n\nmodel ChallengeWinner {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n userId Int\n handle String\n placement Int\n type PrizeSetTypeEnum\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type, placement])\n}\n\n//////////////////////////////////////////\n// ChallengeTerm model – association of challenge and terms\n//////////////////////////////////////////\n\nmodel ChallengeTerm {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n termId String // Terms API id\n roleId String // UUID for the associated role\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeSkill model – linking challenges with skills\n//////////////////////////////////////////\n\nmodel ChallengeSkill {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n skillId String // Request provided skillId\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeBilling model – normalized billing info\n//////////////////////////////////////////\n\nmodel ChallengeBilling {\n id String @id @default(uuid())\n billingAccountId String?\n markup Float? // in range [0, 100]\n clientBillingRate Float? // in range [0, 100]. Supporting range on postgres is an open issue with prisma https://github.com/prisma/prisma/issues/3287.\n challengeId String @unique\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeLegacy model – normalized legacy info\n//////////////////////////////////////////\n\nmodel ChallengeLegacy {\n id String @id @default(uuid())\n reviewType ReviewTypeEnum @default(INTERNAL)\n confidentialityType String @default(\"public\")\n forumId Int?\n directProjectId Int?\n screeningScorecardId Int?\n reviewScorecardId Int?\n isTask Boolean @default(false)\n useSchedulingAPI Boolean @default(false)\n pureV5Task Boolean @default(false)\n pureV5 Boolean @default(false)\n selfService Boolean @default(false)\n selfServiceCopilot String?\n track String? // as provided in the legacy object\n subTrack String? // as provided in the legacy object\n legacySystemId Int? // represents the external \"legacyId\"\n challengeId String @unique\n challenge Challenge @relation(\"ChallengeLegacyRelation\", fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeEvent model – normalized challenge events\n//////////////////////////////////////////\n\nmodel ChallengeEvent {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n eventId Int\n name String?\n key String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeDiscussion and associated options – normalized discussion channels\n//////////////////////////////////////////\n\nmodel ChallengeDiscussion {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n discussionId String?\n name String\n type DiscussionTypeEnum // updated to use enum\n provider String\n url String?\n options ChallengeDiscussionOption[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\nmodel ChallengeDiscussionOption {\n id String @id @default(uuid())\n discussion ChallengeDiscussion @relation(fields: [discussionId], references: [id], onDelete: Cascade)\n discussionId String\n optionKey String\n optionValue String\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeConstraint model – top-level challenge constraints (e.g. allowed registrants)\n//////////////////////////////////////////\n\nmodel ChallengeConstraint {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String @unique\n allowedRegistrants String[] @default([])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhase – to capture per-phase info from create/update challenge operations\n// Each phase is linked with a challenge and holds a duration and any custom constraints.\n//////////////////////////////////////////\n\nmodel Phase {\n id String @id @default(uuid())\n name String\n description String?\n isOpen Boolean\n duration Int\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Inverse relation for associated challenge phases\n challengePhases ChallengePhase[]\n ChallengeReviewer ChallengeReviewer[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\nmodel ChallengePhase {\n id String @id @default(uuid())\n challengeId String\n phaseId String // foreign key to Phase\n\n name String // phase name\n description String? // description\n isOpen Boolean? @default(false) // if this phase is open\n predecessor String? // predecessor of this phase\n duration Int? // duration in seconds\n scheduledStartDate DateTime? // when the phase is scheduled to start\n scheduledEndDate DateTime?\n actualStartDate DateTime?\n actualEndDate DateTime? // when the phase actually ended\n constraints ChallengePhaseConstraint[]\n\n // Relation fields\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n phase Phase @relation(fields: [phaseId], references: [id])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, isOpen])\n @@index([challengeId, name])\n @@index([challengeId, isOpen, scheduledEndDate, actualEndDate], map: \"challenge_phase_challenge_open_end_idx\")\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhaseConstraint – to capture custom constraints for each phase\n//////////////////////////////////////////\n\nmodel ChallengePhaseConstraint {\n id String @id @default(uuid())\n challengePhaseId String\n name String // the name/key of the constraint\n value Int // numeric value of the constraint (can be changed to Float if needed)\n\n // Relation to the phase\n challengePhase ChallengePhase @relation(fields: [challengePhaseId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengePhaseId])\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePrizeSet – to group prizes for a challenge\n//////////////////////////////////////////\n\nmodel ChallengePrizeSet {\n id String @id @default(uuid())\n challengeId String\n type PrizeSetTypeEnum // using enum instead of string\n description String?\n prizes Prize[]\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type])\n}\n\n//////////////////////////////////////////\n// ChallengeReviewer model – reviewers for a challenge, both AI and member\n//////////////////////////////////////////\n\nmodel ChallengeReviewer {\n id String @id @default(uuid())\n challengeId String\n\n // Reviewer configuration\n scorecardId String\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseId String\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n type ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n // Relation to the phase\n phase Phase @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([phaseId])\n @@index([challengeId, phaseId])\n}\n\n//////////////////////////////////////////\n// DefaultChallengeReviewer model – default reviewers by type and track\n//////////////////////////////////////////\n\nmodel DefaultChallengeReviewer {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String?\n // Reviewer configuration (mirrors ChallengeReviewer)\n scorecardId String?\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseName String\n // Optional explicit link to Phase for better fidelity\n phaseId String?\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n opportunityType ReviewOpportunityTypeEnum?\n aiConfigTemplateId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relations\n challengeType ChallengeType @relation(fields: [typeId], references: [id])\n challengeTrack ChallengeTrack @relation(fields: [trackId], references: [id])\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n // Relation to Phase (optional for backward compatibility with phaseName)\n phase Phase? @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([typeId, trackId])\n @@index([typeId, trackId, timelineTemplateId])\n @@index([phaseId])\n}\n\n//////////////////////////////////////////\n// TimelineTemplate model – defines timeline templates\n//////////////////////////////////////////\nmodel TimelineTemplate {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n phases TimelineTemplatePhase[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Opposite relation field, linking back to ChallengeTimelineTemplate.\n challengeTimelineTemplates ChallengeTimelineTemplate[]\n\n // Opposite relation field for Challenge.\n challenges Challenge[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\n//////////////////////////////////////////\n// TimelineTemplatePhase model – phases associated with a timeline template\n//////////////////////////////////////////\nmodel TimelineTemplatePhase {\n id String @id @default(uuid())\n timelineTemplateId String\n phaseId String // identifier for the phase\n predecessor String? // optional predecessor phase id\n defaultDuration Int // duration (in minutes, hours, etc.) as per business rules\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id], onDelete: Cascade)\n\n @@index([timelineTemplateId])\n @@index([timelineTemplateId, phaseId])\n}\n", + "inlineSchemaHash": "a29362a60aa8828fffd5212d1cf4900622e5c305df3ed19e69c46649a22f7174", "copyEngine": true } config.dirname = '/' -config.runtimeDataModel = JSON.parse("{\"models\":{\"Challenge\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"privateDescription\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeSource\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"descriptionFormat\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"projectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"overviewTotalPrizes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfRegistrants\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfCheckpointSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currentPhaseNames\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wiproAllowed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"groups\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsAssigned\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskMemberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"startDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeBilling\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeLegacy\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ChallengeStatusEnum\",\"nativeType\":null,\"default\":\"NEW\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraintRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeConstraint\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"events\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeEvent\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metadata\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeMetadata\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSets\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"winners\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeWinner\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attachments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Attachment\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"terms\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTerm\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skills\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeSkill\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"auditLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AuditLog\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberAccesses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MemberChallengeAccess\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeType\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTrack\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrackEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AuditLog\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fieldName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"newValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Attachment\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeMetadata\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Prize\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSet\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[\"prizeSetId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSetId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeWinner\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"placement\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTerm\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"termId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeSkill\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skillId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeBilling\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingAccountId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"markup\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"clientBillingRate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeLegacy\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ReviewTypeEnum\",\"nativeType\":null,\"default\":\"INTERNAL\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confidentialityType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":\"public\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"forumId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"directProjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"screeningScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"useSchedulingAPI\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5Task\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfService\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfServiceCopilot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subTrack\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacySystemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeEvent\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"eventId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussion\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DiscussionTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"options\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussionOption\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussionOption\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussion\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[\"discussionId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionKey\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allowedRegistrants\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Phase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false},\"ChallengePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraints\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhaseConstraint\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePhaseConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[\"challengePhaseId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePrizeSet\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizes\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Prize\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"DefaultChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"opportunityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTrack\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"TimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplatePhase\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTimelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"TimelineTemplatePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultDuration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"MemberChallengeAccess\":{\"dbName\":\"MemberChallengeAccess\",\"schema\":null,\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{\"ChallengeTrackEnum\":{\"values\":[{\"name\":\"DESIGN\",\"dbName\":null},{\"name\":\"DATA_SCIENCE\",\"dbName\":null},{\"name\":\"DEVELOPMENT\",\"dbName\":null},{\"name\":\"QUALITY_ASSURANCE\",\"dbName\":null}],\"dbName\":null},\"ReviewTypeEnum\":{\"values\":[{\"name\":\"COMMUNITY\",\"dbName\":null},{\"name\":\"INTERNAL\",\"dbName\":null},{\"name\":\"SYSTEM\",\"dbName\":null},{\"name\":\"PROVISIONAL\",\"dbName\":null},{\"name\":\"EXAMPLE\",\"dbName\":null}],\"dbName\":null},\"DiscussionTypeEnum\":{\"values\":[{\"name\":\"CHALLENGE\",\"dbName\":null}],\"dbName\":null},\"ChallengeStatusEnum\":{\"values\":[{\"name\":\"NEW\",\"dbName\":null},{\"name\":\"DRAFT\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"ACTIVE\",\"dbName\":null},{\"name\":\"COMPLETED\",\"dbName\":null},{\"name\":\"DELETED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_REVIEW\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_SCREENING\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_SUBMISSIONS\",\"dbName\":null},{\"name\":\"CANCELLED_WINNER_UNRESPONSIVE\",\"dbName\":null},{\"name\":\"CANCELLED_CLIENT_REQUEST\",\"dbName\":null},{\"name\":\"CANCELLED_REQUIREMENTS_INFEASIBLE\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_REGISTRATIONS\",\"dbName\":null},{\"name\":\"CANCELLED_PAYMENT_FAILED\",\"dbName\":null}],\"dbName\":null},\"PrizeSetTypeEnum\":{\"values\":[{\"name\":\"PLACEMENT\",\"dbName\":null},{\"name\":\"COPILOT\",\"dbName\":null},{\"name\":\"REVIEWER\",\"dbName\":null},{\"name\":\"PASSED_REVIEW\",\"dbName\":null},{\"name\":\"CHECKPOINT\",\"dbName\":null}],\"dbName\":null},\"ReviewOpportunityTypeEnum\":{\"values\":[{\"name\":\"REGULAR_REVIEW\",\"dbName\":null},{\"name\":\"COMPONENT_DEV_REVIEW\",\"dbName\":null},{\"name\":\"SPEC_REVIEW\",\"dbName\":null},{\"name\":\"ITERATIVE_REVIEW\",\"dbName\":null},{\"name\":\"SCENARIOS_REVIEW\",\"dbName\":null}],\"dbName\":null}},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Challenge\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"privateDescription\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeSource\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"descriptionFormat\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"projectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"overviewTotalPrizes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfRegistrants\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfCheckpointSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currentPhaseNames\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wiproAllowed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"funChallenge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"groups\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsAssigned\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskMemberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"startDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeBilling\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeLegacy\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ChallengeStatusEnum\",\"nativeType\":null,\"default\":\"NEW\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraintRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeConstraint\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"events\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeEvent\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metadata\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeMetadata\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSets\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"winners\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeWinner\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attachments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Attachment\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"terms\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTerm\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skills\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeSkill\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"auditLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AuditLog\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberAccesses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MemberChallengeAccess\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeType\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTrack\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrackEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AuditLog\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fieldName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"newValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Attachment\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeMetadata\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Prize\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSet\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[\"prizeSetId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSetId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeWinner\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"placement\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTerm\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"termId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeSkill\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skillId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeBilling\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingAccountId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"markup\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"clientBillingRate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeLegacy\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ReviewTypeEnum\",\"nativeType\":null,\"default\":\"INTERNAL\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confidentialityType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":\"public\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"forumId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"directProjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"screeningScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"useSchedulingAPI\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5Task\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfService\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfServiceCopilot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subTrack\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacySystemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeEvent\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"eventId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussion\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DiscussionTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"options\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussionOption\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussionOption\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussion\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[\"discussionId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionKey\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allowedRegistrants\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Phase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false},\"ChallengePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraints\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhaseConstraint\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePhaseConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[\"challengePhaseId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePrizeSet\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizes\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Prize\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"DefaultChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"opportunityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiConfigTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTrack\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"TimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplatePhase\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTimelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"TimelineTemplatePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultDuration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"MemberChallengeAccess\":{\"dbName\":\"MemberChallengeAccess\",\"schema\":null,\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{\"ChallengeTrackEnum\":{\"values\":[{\"name\":\"DESIGN\",\"dbName\":null},{\"name\":\"DATA_SCIENCE\",\"dbName\":null},{\"name\":\"DEVELOPMENT\",\"dbName\":null},{\"name\":\"QUALITY_ASSURANCE\",\"dbName\":null}],\"dbName\":null},\"ReviewTypeEnum\":{\"values\":[{\"name\":\"COMMUNITY\",\"dbName\":null},{\"name\":\"INTERNAL\",\"dbName\":null},{\"name\":\"SYSTEM\",\"dbName\":null},{\"name\":\"PROVISIONAL\",\"dbName\":null},{\"name\":\"EXAMPLE\",\"dbName\":null}],\"dbName\":null},\"DiscussionTypeEnum\":{\"values\":[{\"name\":\"CHALLENGE\",\"dbName\":null}],\"dbName\":null},\"ChallengeStatusEnum\":{\"values\":[{\"name\":\"NEW\",\"dbName\":null},{\"name\":\"DRAFT\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"ACTIVE\",\"dbName\":null},{\"name\":\"COMPLETED\",\"dbName\":null},{\"name\":\"DELETED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_REVIEW\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_SCREENING\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_SUBMISSIONS\",\"dbName\":null},{\"name\":\"CANCELLED_WINNER_UNRESPONSIVE\",\"dbName\":null},{\"name\":\"CANCELLED_CLIENT_REQUEST\",\"dbName\":null},{\"name\":\"CANCELLED_REQUIREMENTS_INFEASIBLE\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_REGISTRATIONS\",\"dbName\":null},{\"name\":\"CANCELLED_PAYMENT_FAILED\",\"dbName\":null}],\"dbName\":null},\"PrizeSetTypeEnum\":{\"values\":[{\"name\":\"PLACEMENT\",\"dbName\":null},{\"name\":\"COPILOT\",\"dbName\":null},{\"name\":\"REVIEWER\",\"dbName\":null},{\"name\":\"PASSED_REVIEW\",\"dbName\":null},{\"name\":\"CHECKPOINT\",\"dbName\":null}],\"dbName\":null},\"ReviewOpportunityTypeEnum\":{\"values\":[{\"name\":\"REGULAR_REVIEW\",\"dbName\":null},{\"name\":\"COMPONENT_DEV_REVIEW\",\"dbName\":null},{\"name\":\"SPEC_REVIEW\",\"dbName\":null},{\"name\":\"ITERATIVE_REVIEW\",\"dbName\":null},{\"name\":\"SCENARIOS_REVIEW\",\"dbName\":null}],\"dbName\":null}},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.engineWasm = undefined config.compilerWasm = undefined diff --git a/packages/challenge-prisma-client/index-browser.js b/packages/challenge-prisma-client/index-browser.js index ba84901..b77eec8 100644 --- a/packages/challenge-prisma-client/index-browser.js +++ b/packages/challenge-prisma-client/index-browser.js @@ -138,6 +138,7 @@ exports.Prisma.ChallengeScalarFieldEnum = { numOfCheckpointSubmissions: 'numOfCheckpointSubmissions', currentPhaseNames: 'currentPhaseNames', wiproAllowed: 'wiproAllowed', + funChallenge: 'funChallenge', tags: 'tags', groups: 'groups', taskIsTask: 'taskIsTask', @@ -446,7 +447,7 @@ exports.Prisma.DefaultChallengeReviewerScalarFieldEnum = { baseCoefficient: 'baseCoefficient', incrementalCoefficient: 'incrementalCoefficient', opportunityType: 'opportunityType', - aiWorkflowId: 'aiWorkflowId', + aiConfigTemplateId: 'aiConfigTemplateId', shouldOpenOpportunity: 'shouldOpenOpportunity', createdAt: 'createdAt', createdBy: 'createdBy', @@ -714,7 +715,7 @@ exports.Prisma.DefaultChallengeReviewerOrderByRelevanceFieldEnum = { scorecardId: 'scorecardId', phaseName: 'phaseName', phaseId: 'phaseId', - aiWorkflowId: 'aiWorkflowId', + aiConfigTemplateId: 'aiConfigTemplateId', createdBy: 'createdBy', updatedBy: 'updatedBy' }; diff --git a/packages/challenge-prisma-client/index.d.ts b/packages/challenge-prisma-client/index.d.ts index e24bc5d..ff8357e 100644 --- a/packages/challenge-prisma-client/index.d.ts +++ b/packages/challenge-prisma-client/index.d.ts @@ -3667,6 +3667,7 @@ export namespace Prisma { numOfSubmissions: number | null numOfCheckpointSubmissions: number | null wiproAllowed: boolean | null + funChallenge: boolean | null taskIsTask: boolean | null taskIsAssigned: boolean | null taskMemberId: string | null @@ -3700,6 +3701,7 @@ export namespace Prisma { numOfSubmissions: number | null numOfCheckpointSubmissions: number | null wiproAllowed: boolean | null + funChallenge: boolean | null taskIsTask: boolean | null taskIsAssigned: boolean | null taskMemberId: string | null @@ -3734,6 +3736,7 @@ export namespace Prisma { numOfCheckpointSubmissions: number currentPhaseNames: number wiproAllowed: number + funChallenge: number tags: number groups: number taskIsTask: number @@ -3789,6 +3792,7 @@ export namespace Prisma { numOfSubmissions?: true numOfCheckpointSubmissions?: true wiproAllowed?: true + funChallenge?: true taskIsTask?: true taskIsAssigned?: true taskMemberId?: true @@ -3822,6 +3826,7 @@ export namespace Prisma { numOfSubmissions?: true numOfCheckpointSubmissions?: true wiproAllowed?: true + funChallenge?: true taskIsTask?: true taskIsAssigned?: true taskMemberId?: true @@ -3856,6 +3861,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: true currentPhaseNames?: true wiproAllowed?: true + funChallenge?: true tags?: true groups?: true taskIsTask?: true @@ -3979,6 +3985,7 @@ export namespace Prisma { numOfCheckpointSubmissions: number currentPhaseNames: string[] wiproAllowed: boolean + funChallenge: boolean tags: string[] groups: string[] taskIsTask: boolean @@ -4034,6 +4041,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: boolean currentPhaseNames?: boolean wiproAllowed?: boolean + funChallenge?: boolean tags?: boolean groups?: boolean taskIsTask?: boolean @@ -4089,6 +4097,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: boolean currentPhaseNames?: boolean wiproAllowed?: boolean + funChallenge?: boolean tags?: boolean groups?: boolean taskIsTask?: boolean @@ -4128,6 +4137,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: boolean currentPhaseNames?: boolean wiproAllowed?: boolean + funChallenge?: boolean tags?: boolean groups?: boolean taskIsTask?: boolean @@ -4167,6 +4177,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: boolean currentPhaseNames?: boolean wiproAllowed?: boolean + funChallenge?: boolean tags?: boolean groups?: boolean taskIsTask?: boolean @@ -4186,7 +4197,7 @@ export namespace Prisma { updatedBy?: boolean } - export type ChallengeOmit = $Extensions.GetOmit<"id" | "name" | "description" | "privateDescription" | "challengeSource" | "descriptionFormat" | "projectId" | "typeId" | "trackId" | "timelineTemplateId" | "overviewTotalPrizes" | "numOfRegistrants" | "numOfSubmissions" | "numOfCheckpointSubmissions" | "currentPhaseNames" | "wiproAllowed" | "tags" | "groups" | "taskIsTask" | "taskIsAssigned" | "taskMemberId" | "submissionStartDate" | "submissionEndDate" | "registrationStartDate" | "registrationEndDate" | "startDate" | "endDate" | "legacyId" | "status" | "createdAt" | "createdBy" | "updatedAt" | "updatedBy", ExtArgs["result"]["challenge"]> + export type ChallengeOmit = $Extensions.GetOmit<"id" | "name" | "description" | "privateDescription" | "challengeSource" | "descriptionFormat" | "projectId" | "typeId" | "trackId" | "timelineTemplateId" | "overviewTotalPrizes" | "numOfRegistrants" | "numOfSubmissions" | "numOfCheckpointSubmissions" | "currentPhaseNames" | "wiproAllowed" | "funChallenge" | "tags" | "groups" | "taskIsTask" | "taskIsAssigned" | "taskMemberId" | "submissionStartDate" | "submissionEndDate" | "registrationStartDate" | "registrationEndDate" | "startDate" | "endDate" | "legacyId" | "status" | "createdAt" | "createdBy" | "updatedAt" | "updatedBy", ExtArgs["result"]["challenge"]> export type ChallengeInclude = { billingRecord?: boolean | Challenge$billingRecordArgs legacyRecord?: boolean | Challenge$legacyRecordArgs @@ -4258,6 +4269,7 @@ export namespace Prisma { numOfCheckpointSubmissions: number currentPhaseNames: string[] wiproAllowed: boolean + funChallenge: boolean tags: string[] groups: string[] taskIsTask: boolean @@ -4732,6 +4744,7 @@ export namespace Prisma { readonly numOfCheckpointSubmissions: FieldRef<"Challenge", 'Int'> readonly currentPhaseNames: FieldRef<"Challenge", 'String[]'> readonly wiproAllowed: FieldRef<"Challenge", 'Boolean'> + readonly funChallenge: FieldRef<"Challenge", 'Boolean'> readonly tags: FieldRef<"Challenge", 'String[]'> readonly groups: FieldRef<"Challenge", 'String[]'> readonly taskIsTask: FieldRef<"Challenge", 'Boolean'> @@ -29926,7 +29939,7 @@ export namespace Prisma { baseCoefficient: number | null incrementalCoefficient: number | null opportunityType: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId: string | null + aiConfigTemplateId: string | null shouldOpenOpportunity: boolean | null createdAt: Date | null createdBy: string | null @@ -29948,7 +29961,7 @@ export namespace Prisma { baseCoefficient: number | null incrementalCoefficient: number | null opportunityType: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId: string | null + aiConfigTemplateId: string | null shouldOpenOpportunity: boolean | null createdAt: Date | null createdBy: string | null @@ -29970,7 +29983,7 @@ export namespace Prisma { baseCoefficient: number incrementalCoefficient: number opportunityType: number - aiWorkflowId: number + aiConfigTemplateId: number shouldOpenOpportunity: number createdAt: number createdBy: number @@ -30008,7 +30021,7 @@ export namespace Prisma { baseCoefficient?: true incrementalCoefficient?: true opportunityType?: true - aiWorkflowId?: true + aiConfigTemplateId?: true shouldOpenOpportunity?: true createdAt?: true createdBy?: true @@ -30030,7 +30043,7 @@ export namespace Prisma { baseCoefficient?: true incrementalCoefficient?: true opportunityType?: true - aiWorkflowId?: true + aiConfigTemplateId?: true shouldOpenOpportunity?: true createdAt?: true createdBy?: true @@ -30052,7 +30065,7 @@ export namespace Prisma { baseCoefficient?: true incrementalCoefficient?: true opportunityType?: true - aiWorkflowId?: true + aiConfigTemplateId?: true shouldOpenOpportunity?: true createdAt?: true createdBy?: true @@ -30161,7 +30174,7 @@ export namespace Prisma { baseCoefficient: number | null incrementalCoefficient: number | null opportunityType: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId: string | null + aiConfigTemplateId: string | null shouldOpenOpportunity: boolean createdAt: Date createdBy: string @@ -30202,7 +30215,7 @@ export namespace Prisma { baseCoefficient?: boolean incrementalCoefficient?: boolean opportunityType?: boolean - aiWorkflowId?: boolean + aiConfigTemplateId?: boolean shouldOpenOpportunity?: boolean createdAt?: boolean createdBy?: boolean @@ -30228,7 +30241,7 @@ export namespace Prisma { baseCoefficient?: boolean incrementalCoefficient?: boolean opportunityType?: boolean - aiWorkflowId?: boolean + aiConfigTemplateId?: boolean shouldOpenOpportunity?: boolean createdAt?: boolean createdBy?: boolean @@ -30254,7 +30267,7 @@ export namespace Prisma { baseCoefficient?: boolean incrementalCoefficient?: boolean opportunityType?: boolean - aiWorkflowId?: boolean + aiConfigTemplateId?: boolean shouldOpenOpportunity?: boolean createdAt?: boolean createdBy?: boolean @@ -30280,7 +30293,7 @@ export namespace Prisma { baseCoefficient?: boolean incrementalCoefficient?: boolean opportunityType?: boolean - aiWorkflowId?: boolean + aiConfigTemplateId?: boolean shouldOpenOpportunity?: boolean createdAt?: boolean createdBy?: boolean @@ -30288,7 +30301,7 @@ export namespace Prisma { updatedBy?: boolean } - export type DefaultChallengeReviewerOmit = $Extensions.GetOmit<"id" | "typeId" | "trackId" | "timelineTemplateId" | "scorecardId" | "isMemberReview" | "memberReviewerCount" | "phaseName" | "phaseId" | "fixedAmount" | "baseCoefficient" | "incrementalCoefficient" | "opportunityType" | "aiWorkflowId" | "shouldOpenOpportunity" | "createdAt" | "createdBy" | "updatedAt" | "updatedBy", ExtArgs["result"]["defaultChallengeReviewer"]> + export type DefaultChallengeReviewerOmit = $Extensions.GetOmit<"id" | "typeId" | "trackId" | "timelineTemplateId" | "scorecardId" | "isMemberReview" | "memberReviewerCount" | "phaseName" | "phaseId" | "fixedAmount" | "baseCoefficient" | "incrementalCoefficient" | "opportunityType" | "aiConfigTemplateId" | "shouldOpenOpportunity" | "createdAt" | "createdBy" | "updatedAt" | "updatedBy", ExtArgs["result"]["defaultChallengeReviewer"]> export type DefaultChallengeReviewerInclude = { challengeType?: boolean | ChallengeTypeDefaultArgs challengeTrack?: boolean | ChallengeTrackDefaultArgs @@ -30330,7 +30343,7 @@ export namespace Prisma { baseCoefficient: number | null incrementalCoefficient: number | null opportunityType: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId: string | null + aiConfigTemplateId: string | null shouldOpenOpportunity: boolean createdAt: Date createdBy: string @@ -30776,7 +30789,7 @@ export namespace Prisma { readonly baseCoefficient: FieldRef<"DefaultChallengeReviewer", 'Float'> readonly incrementalCoefficient: FieldRef<"DefaultChallengeReviewer", 'Float'> readonly opportunityType: FieldRef<"DefaultChallengeReviewer", 'ReviewOpportunityTypeEnum'> - readonly aiWorkflowId: FieldRef<"DefaultChallengeReviewer", 'String'> + readonly aiConfigTemplateId: FieldRef<"DefaultChallengeReviewer", 'String'> readonly shouldOpenOpportunity: FieldRef<"DefaultChallengeReviewer", 'Boolean'> readonly createdAt: FieldRef<"DefaultChallengeReviewer", 'DateTime'> readonly createdBy: FieldRef<"DefaultChallengeReviewer", 'String'> @@ -34161,6 +34174,7 @@ export namespace Prisma { numOfCheckpointSubmissions: 'numOfCheckpointSubmissions', currentPhaseNames: 'currentPhaseNames', wiproAllowed: 'wiproAllowed', + funChallenge: 'funChallenge', tags: 'tags', groups: 'groups', taskIsTask: 'taskIsTask', @@ -34535,7 +34549,7 @@ export namespace Prisma { baseCoefficient: 'baseCoefficient', incrementalCoefficient: 'incrementalCoefficient', opportunityType: 'opportunityType', - aiWorkflowId: 'aiWorkflowId', + aiConfigTemplateId: 'aiConfigTemplateId', shouldOpenOpportunity: 'shouldOpenOpportunity', createdAt: 'createdAt', createdBy: 'createdBy', @@ -34890,7 +34904,7 @@ export namespace Prisma { scorecardId: 'scorecardId', phaseName: 'phaseName', phaseId: 'phaseId', - aiWorkflowId: 'aiWorkflowId', + aiConfigTemplateId: 'aiConfigTemplateId', createdBy: 'createdBy', updatedBy: 'updatedBy' }; @@ -35104,6 +35118,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFilter<"Challenge"> | number currentPhaseNames?: StringNullableListFilter<"Challenge"> wiproAllowed?: BoolFilter<"Challenge"> | boolean + funChallenge?: BoolFilter<"Challenge"> | boolean tags?: StringNullableListFilter<"Challenge"> groups?: StringNullableListFilter<"Challenge"> taskIsTask?: BoolFilter<"Challenge"> | boolean @@ -35158,6 +35173,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: SortOrder currentPhaseNames?: SortOrder wiproAllowed?: SortOrder + funChallenge?: SortOrder tags?: SortOrder groups?: SortOrder taskIsTask?: SortOrder @@ -35216,6 +35232,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFilter<"Challenge"> | number currentPhaseNames?: StringNullableListFilter<"Challenge"> wiproAllowed?: BoolFilter<"Challenge"> | boolean + funChallenge?: BoolFilter<"Challenge"> | boolean tags?: StringNullableListFilter<"Challenge"> groups?: StringNullableListFilter<"Challenge"> taskIsTask?: BoolFilter<"Challenge"> | boolean @@ -35270,6 +35287,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: SortOrder currentPhaseNames?: SortOrder wiproAllowed?: SortOrder + funChallenge?: SortOrder tags?: SortOrder groups?: SortOrder taskIsTask?: SortOrder @@ -35314,6 +35332,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntWithAggregatesFilter<"Challenge"> | number currentPhaseNames?: StringNullableListFilter<"Challenge"> wiproAllowed?: BoolWithAggregatesFilter<"Challenge"> | boolean + funChallenge?: BoolWithAggregatesFilter<"Challenge"> | boolean tags?: StringNullableListFilter<"Challenge"> groups?: StringNullableListFilter<"Challenge"> taskIsTask?: BoolWithAggregatesFilter<"Challenge"> | boolean @@ -37122,7 +37141,7 @@ export namespace Prisma { baseCoefficient?: FloatNullableFilter<"DefaultChallengeReviewer"> | number | null incrementalCoefficient?: FloatNullableFilter<"DefaultChallengeReviewer"> | number | null opportunityType?: EnumReviewOpportunityTypeEnumNullableFilter<"DefaultChallengeReviewer"> | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: StringNullableFilter<"DefaultChallengeReviewer"> | string | null + aiConfigTemplateId?: StringNullableFilter<"DefaultChallengeReviewer"> | string | null shouldOpenOpportunity?: BoolFilter<"DefaultChallengeReviewer"> | boolean createdAt?: DateTimeFilter<"DefaultChallengeReviewer"> | Date | string createdBy?: StringFilter<"DefaultChallengeReviewer"> | string @@ -37148,7 +37167,7 @@ export namespace Prisma { baseCoefficient?: SortOrderInput | SortOrder incrementalCoefficient?: SortOrderInput | SortOrder opportunityType?: SortOrderInput | SortOrder - aiWorkflowId?: SortOrderInput | SortOrder + aiConfigTemplateId?: SortOrderInput | SortOrder shouldOpenOpportunity?: SortOrder createdAt?: SortOrder createdBy?: SortOrder @@ -37178,7 +37197,7 @@ export namespace Prisma { baseCoefficient?: FloatNullableFilter<"DefaultChallengeReviewer"> | number | null incrementalCoefficient?: FloatNullableFilter<"DefaultChallengeReviewer"> | number | null opportunityType?: EnumReviewOpportunityTypeEnumNullableFilter<"DefaultChallengeReviewer"> | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: StringNullableFilter<"DefaultChallengeReviewer"> | string | null + aiConfigTemplateId?: StringNullableFilter<"DefaultChallengeReviewer"> | string | null shouldOpenOpportunity?: BoolFilter<"DefaultChallengeReviewer"> | boolean createdAt?: DateTimeFilter<"DefaultChallengeReviewer"> | Date | string createdBy?: StringFilter<"DefaultChallengeReviewer"> | string @@ -37204,7 +37223,7 @@ export namespace Prisma { baseCoefficient?: SortOrderInput | SortOrder incrementalCoefficient?: SortOrderInput | SortOrder opportunityType?: SortOrderInput | SortOrder - aiWorkflowId?: SortOrderInput | SortOrder + aiConfigTemplateId?: SortOrderInput | SortOrder shouldOpenOpportunity?: SortOrder createdAt?: SortOrder createdBy?: SortOrder @@ -37234,7 +37253,7 @@ export namespace Prisma { baseCoefficient?: FloatNullableWithAggregatesFilter<"DefaultChallengeReviewer"> | number | null incrementalCoefficient?: FloatNullableWithAggregatesFilter<"DefaultChallengeReviewer"> | number | null opportunityType?: EnumReviewOpportunityTypeEnumNullableWithAggregatesFilter<"DefaultChallengeReviewer"> | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: StringNullableWithAggregatesFilter<"DefaultChallengeReviewer"> | string | null + aiConfigTemplateId?: StringNullableWithAggregatesFilter<"DefaultChallengeReviewer"> | string | null shouldOpenOpportunity?: BoolWithAggregatesFilter<"DefaultChallengeReviewer"> | boolean createdAt?: DateTimeWithAggregatesFilter<"DefaultChallengeReviewer"> | Date | string createdBy?: StringWithAggregatesFilter<"DefaultChallengeReviewer"> | string @@ -37446,6 +37465,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -37500,6 +37520,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -37548,6 +37569,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -37602,6 +37624,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -37653,6 +37676,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -37686,6 +37710,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -37722,6 +37747,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -39702,7 +39728,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -39728,7 +39754,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -39746,7 +39772,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -39772,7 +39798,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -39794,7 +39820,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -39812,7 +39838,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -39834,7 +39860,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -40303,6 +40329,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: SortOrder currentPhaseNames?: SortOrder wiproAllowed?: SortOrder + funChallenge?: SortOrder tags?: SortOrder groups?: SortOrder taskIsTask?: SortOrder @@ -40347,6 +40374,7 @@ export namespace Prisma { numOfSubmissions?: SortOrder numOfCheckpointSubmissions?: SortOrder wiproAllowed?: SortOrder + funChallenge?: SortOrder taskIsTask?: SortOrder taskIsAssigned?: SortOrder taskMemberId?: SortOrder @@ -40380,6 +40408,7 @@ export namespace Prisma { numOfSubmissions?: SortOrder numOfCheckpointSubmissions?: SortOrder wiproAllowed?: SortOrder + funChallenge?: SortOrder taskIsTask?: SortOrder taskIsAssigned?: SortOrder taskMemberId?: SortOrder @@ -41838,7 +41867,7 @@ export namespace Prisma { baseCoefficient?: SortOrder incrementalCoefficient?: SortOrder opportunityType?: SortOrder - aiWorkflowId?: SortOrder + aiConfigTemplateId?: SortOrder shouldOpenOpportunity?: SortOrder createdAt?: SortOrder createdBy?: SortOrder @@ -41867,7 +41896,7 @@ export namespace Prisma { baseCoefficient?: SortOrder incrementalCoefficient?: SortOrder opportunityType?: SortOrder - aiWorkflowId?: SortOrder + aiConfigTemplateId?: SortOrder shouldOpenOpportunity?: SortOrder createdAt?: SortOrder createdBy?: SortOrder @@ -41889,7 +41918,7 @@ export namespace Prisma { baseCoefficient?: SortOrder incrementalCoefficient?: SortOrder opportunityType?: SortOrder - aiWorkflowId?: SortOrder + aiConfigTemplateId?: SortOrder shouldOpenOpportunity?: SortOrder createdAt?: SortOrder createdBy?: SortOrder @@ -45402,6 +45431,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -45454,6 +45484,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -45540,7 +45571,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -45564,7 +45595,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -45618,6 +45649,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFilter<"Challenge"> | number currentPhaseNames?: StringNullableListFilter<"Challenge"> wiproAllowed?: BoolFilter<"Challenge"> | boolean + funChallenge?: BoolFilter<"Challenge"> | boolean tags?: StringNullableListFilter<"Challenge"> groups?: StringNullableListFilter<"Challenge"> taskIsTask?: BoolFilter<"Challenge"> | boolean @@ -45701,7 +45733,7 @@ export namespace Prisma { baseCoefficient?: FloatNullableFilter<"DefaultChallengeReviewer"> | number | null incrementalCoefficient?: FloatNullableFilter<"DefaultChallengeReviewer"> | number | null opportunityType?: EnumReviewOpportunityTypeEnumNullableFilter<"DefaultChallengeReviewer"> | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: StringNullableFilter<"DefaultChallengeReviewer"> | string | null + aiConfigTemplateId?: StringNullableFilter<"DefaultChallengeReviewer"> | string | null shouldOpenOpportunity?: BoolFilter<"DefaultChallengeReviewer"> | boolean createdAt?: DateTimeFilter<"DefaultChallengeReviewer"> | Date | string createdBy?: StringFilter<"DefaultChallengeReviewer"> | string @@ -45723,6 +45755,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -45775,6 +45808,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -45861,7 +45895,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -45885,7 +45919,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -46193,6 +46227,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -46246,6 +46281,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -46309,6 +46345,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -46362,6 +46399,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -46409,6 +46447,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -46462,6 +46501,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -46525,6 +46565,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -46578,6 +46619,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -46625,6 +46667,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -46678,6 +46721,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -46741,6 +46785,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -46794,6 +46839,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -46901,6 +46947,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -46954,6 +47001,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -47017,6 +47065,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -47070,6 +47119,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -47117,6 +47167,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -47170,6 +47221,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -47233,6 +47285,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -47286,6 +47339,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -47333,6 +47387,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -47386,6 +47441,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -47449,6 +47505,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -47502,6 +47559,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -47549,6 +47607,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -47602,6 +47661,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -47665,6 +47725,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -47718,6 +47779,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -47765,6 +47827,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -47818,6 +47881,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -47881,6 +47945,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -47934,6 +47999,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -47981,6 +48047,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -48034,6 +48101,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -48097,6 +48165,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -48150,6 +48219,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -48197,6 +48267,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -48250,6 +48321,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -48343,6 +48415,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -48396,6 +48469,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -48545,6 +48619,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -48598,6 +48673,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -48661,6 +48737,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -48714,6 +48791,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -48851,7 +48929,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -48875,7 +48953,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -48985,6 +49063,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -49038,6 +49117,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -49164,6 +49244,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -49217,6 +49298,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -49427,6 +49509,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -49480,6 +49563,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -49574,6 +49658,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -49627,6 +49712,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -49674,6 +49760,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -49727,6 +49814,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -49823,6 +49911,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -49876,6 +49965,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -50326,6 +50416,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -50378,6 +50469,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -50432,7 +50524,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -50456,7 +50548,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -51195,6 +51287,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -51238,7 +51331,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -51260,6 +51353,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -51312,6 +51406,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -51362,6 +51457,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -51424,7 +51520,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -51448,7 +51544,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -51469,7 +51565,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -51493,6 +51589,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -51536,7 +51633,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -51558,6 +51655,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -51610,6 +51708,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -51660,6 +51759,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -51722,7 +51822,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -51746,7 +51846,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -51767,7 +51867,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -51864,7 +51964,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -51992,7 +52092,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -52016,7 +52116,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -52037,7 +52137,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -52167,6 +52267,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: number currentPhaseNames?: ChallengeCreatecurrentPhaseNamesInput | string[] wiproAllowed?: boolean + funChallenge?: boolean tags?: ChallengeCreatetagsInput | string[] groups?: ChallengeCreategroupsInput | string[] taskIsTask?: boolean @@ -52199,7 +52300,7 @@ export namespace Prisma { baseCoefficient?: number | null incrementalCoefficient?: number | null opportunityType?: $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: string | null + aiConfigTemplateId?: string | null shouldOpenOpportunity?: boolean createdAt?: Date | string createdBy: string @@ -52287,6 +52388,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -52339,6 +52441,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -52389,6 +52492,7 @@ export namespace Prisma { numOfCheckpointSubmissions?: IntFieldUpdateOperationsInput | number currentPhaseNames?: ChallengeUpdatecurrentPhaseNamesInput | string[] wiproAllowed?: BoolFieldUpdateOperationsInput | boolean + funChallenge?: BoolFieldUpdateOperationsInput | boolean tags?: ChallengeUpdatetagsInput | string[] groups?: ChallengeUpdategroupsInput | string[] taskIsTask?: BoolFieldUpdateOperationsInput | boolean @@ -52418,7 +52522,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -52442,7 +52546,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string @@ -52463,7 +52567,7 @@ export namespace Prisma { baseCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null incrementalCoefficient?: NullableFloatFieldUpdateOperationsInput | number | null opportunityType?: NullableEnumReviewOpportunityTypeEnumFieldUpdateOperationsInput | $Enums.ReviewOpportunityTypeEnum | null - aiWorkflowId?: NullableStringFieldUpdateOperationsInput | string | null + aiConfigTemplateId?: NullableStringFieldUpdateOperationsInput | string | null shouldOpenOpportunity?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string diff --git a/packages/challenge-prisma-client/index.js b/packages/challenge-prisma-client/index.js index 1a725aa..bc269ab 100644 --- a/packages/challenge-prisma-client/index.js +++ b/packages/challenge-prisma-client/index.js @@ -111,6 +111,7 @@ exports.Prisma.ChallengeScalarFieldEnum = { numOfCheckpointSubmissions: 'numOfCheckpointSubmissions', currentPhaseNames: 'currentPhaseNames', wiproAllowed: 'wiproAllowed', + funChallenge: 'funChallenge', tags: 'tags', groups: 'groups', taskIsTask: 'taskIsTask', @@ -419,7 +420,7 @@ exports.Prisma.DefaultChallengeReviewerScalarFieldEnum = { baseCoefficient: 'baseCoefficient', incrementalCoefficient: 'incrementalCoefficient', opportunityType: 'opportunityType', - aiWorkflowId: 'aiWorkflowId', + aiConfigTemplateId: 'aiConfigTemplateId', shouldOpenOpportunity: 'shouldOpenOpportunity', createdAt: 'createdAt', createdBy: 'createdBy', @@ -687,7 +688,7 @@ exports.Prisma.DefaultChallengeReviewerOrderByRelevanceFieldEnum = { scorecardId: 'scorecardId', phaseName: 'phaseName', phaseId: 'phaseId', - aiWorkflowId: 'aiWorkflowId', + aiConfigTemplateId: 'aiConfigTemplateId', createdBy: 'createdBy', updatedBy: 'updatedBy' }; @@ -805,7 +806,7 @@ const config = { "value": "prisma-client-js" }, "output": { - "value": "/home/jmgasper/Documents/Git/v6/challenge-api-v6/packages/challenge-prisma-client", + "value": "/home/vasea/work/topcoder/challenge-api-v6/packages/challenge-prisma-client", "fromEnvVar": null }, "config": { @@ -827,11 +828,12 @@ const config = { "postgresqlExtensions", "views" ], - "sourceFilePath": "/home/jmgasper/Documents/Git/v6/challenge-api-v6/prisma/schema.prisma", + "sourceFilePath": "/home/vasea/work/topcoder/challenge-api-v6/prisma/schema.prisma", "isCustomOutput": true }, "relativeEnvPaths": { - "rootEnvPath": null + "rootEnvPath": null, + "schemaEnvPath": "../../.env" }, "relativePath": "../../prisma", "clientVersion": "6.19.0", @@ -849,8 +851,8 @@ const config = { } } }, - "inlineSchema": "datasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/challenge-prisma-client\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\n// Enum for allowed challenge track values (matches app-constants)\nenum ChallengeTrackEnum {\n DESIGN\n DATA_SCIENCE\n DEVELOPMENT\n QUALITY_ASSURANCE\n}\n\nenum ReviewTypeEnum {\n COMMUNITY\n INTERNAL\n SYSTEM\n PROVISIONAL\n EXAMPLE\n}\n\nenum DiscussionTypeEnum {\n CHALLENGE\n}\n\nenum ChallengeStatusEnum {\n NEW\n DRAFT\n APPROVED\n ACTIVE\n COMPLETED\n DELETED\n CANCELLED\n CANCELLED_FAILED_REVIEW\n CANCELLED_FAILED_SCREENING\n CANCELLED_ZERO_SUBMISSIONS\n CANCELLED_WINNER_UNRESPONSIVE\n CANCELLED_CLIENT_REQUEST\n CANCELLED_REQUIREMENTS_INFEASIBLE\n CANCELLED_ZERO_REGISTRATIONS\n CANCELLED_PAYMENT_FAILED\n}\n\nenum PrizeSetTypeEnum {\n PLACEMENT\n COPILOT\n REVIEWER\n PASSED_REVIEW\n CHECKPOINT\n}\n\n// Enum for review opportunity types on reviewers\nenum ReviewOpportunityTypeEnum {\n REGULAR_REVIEW\n COMPONENT_DEV_REVIEW\n SPEC_REVIEW\n ITERATIVE_REVIEW\n SCENARIOS_REVIEW\n}\n\n//////////////////////////////////////////\n// Main Challenge model\n//////////////////////////////////////////\n\nmodel Challenge {\n id String @id @default(uuid())\n name String\n description String?\n privateDescription String?\n challengeSource String?\n descriptionFormat String?\n projectId Int? // frequently queried field\n typeId String\n trackId String // FK for relation in ChallengeTrack\n timelineTemplateId String? // now used as foreign key to ChallengeTimelineTemplate\n overviewTotalPrizes Float? // stored from overview.totalPrizes\n numOfRegistrants Int @default(0)\n numOfSubmissions Int @default(0)\n numOfCheckpointSubmissions Int @default(0)\n currentPhaseNames String[] // current phase names\n\n wiproAllowed Boolean @default(false)\n\n // simple arrays for tags and groups (PostgreSQL native array type)\n tags String[]\n groups String[]\n\n // Task information (flattened from challenge.task)\n taskIsTask Boolean @default(false)\n taskIsAssigned Boolean @default(false)\n taskMemberId String?\n\n // Dates for challenge lifecycle\n submissionStartDate DateTime?\n submissionEndDate DateTime?\n registrationStartDate DateTime?\n registrationEndDate DateTime?\n startDate DateTime?\n endDate DateTime?\n\n // Normalized billing and legacy information (one-to-one)\n billingRecord ChallengeBilling?\n legacyId Int? // Legacy system ID for searching\n legacyRecord ChallengeLegacy? @relation(\"ChallengeLegacyRelation\")\n\n // Additional fields from createChallenge schema\n status ChallengeStatusEnum @default(NEW) // new challenges default to status \"New\"\n // Normalized top‑level constraints (e.g. allowedRegistrants) for a challenge\n constraintRecord ChallengeConstraint?\n\n // Additional normalized relations from createChallenge\n events ChallengeEvent[]\n discussions ChallengeDiscussion[]\n\n // Existing relations (one-to-many) for challenge metadata, phases, prize sets, winners, attachments,\n // terms and skills\n metadata ChallengeMetadata[]\n phases ChallengePhase[]\n prizeSets ChallengePrizeSet[]\n reviewers ChallengeReviewer[]\n winners ChallengeWinner[]\n attachments Attachment[]\n terms ChallengeTerm[]\n skills ChallengeSkill[]\n auditLogs AuditLog[]\n memberAccesses MemberChallengeAccess[]\n\n // Relation to ChallengeType (FK: typeId)\n type ChallengeType @relation(fields: [typeId], references: [id])\n // Relation to ChallengeTrack (FK: trackId)\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n\n // Auditing fields (present in every table)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([projectId])\n @@index([status]) // index added for optimized search by status\n @@index([createdAt])\n @@index([updatedAt])\n @@index([typeId])\n @@index([trackId])\n @@index([groups], type: Gin, map: \"challenge_groups_gin_idx\")\n @@index([submissionStartDate])\n @@index([submissionEndDate])\n @@index([registrationStartDate])\n @@index([registrationEndDate])\n @@index([startDate])\n @@index([endDate])\n @@index([status, startDate])\n @@index([trackId, typeId, status])\n @@index([status, typeId, trackId, createdAt(sort: Desc)], map: \"challenge_status_type_track_created_at_idx\")\n @@index([legacyId])\n @@index([projectId, status])\n}\n\n//////////////////////////////////////////\n// MemberChallengeAccess view – member/challenge pairs from resources schema\n//////////////////////////////////////////\n\nview MemberChallengeAccess {\n challengeId String\n memberId String\n\n challenge Challenge @relation(fields: [challengeId], references: [id])\n\n @@map(\"MemberChallengeAccess\")\n}\n\n//////////////////////////////////////////\n// ChallengeType model\n//////////////////////////////////////////\n\nmodel ChallengeType {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n isTask Boolean @default(false)\n abbreviation String\n\n challenges Challenge[]\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this type\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([abbreviation])\n}\n\n//////////////////////////////////////////\n// ChallengeTrack model\n//////////////////////////////////////////\n\nmodel ChallengeTrack {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean\n abbreviation String\n legacyId Int? // numeric legacy system id (if provided)\n track ChallengeTrackEnum? // enum value from ChallengeTrackEnum\n challenges Challenge[]\n // Opposite relation for ChallengeTimelineTemplate\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this track\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([legacyId])\n}\n\n//////////////////////////////////////////\n// ChallengeTimelineTemplate model\n//////////////////////////////////////////\n\nmodel ChallengeTimelineTemplate {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String // now required per Swagger spec\n\n // Link to the TimelineTemplate model via timelineTemplateId.\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id])\n // Link to the ChallengeTrack model via trackId.\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n // Link to the ChallengeType model via typeId.\n type ChallengeType @relation(fields: [typeId], references: [id])\n\n isDefault Boolean @default(false)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Composite index to support searches/updates by typeId, trackId and timelineTemplateId.\n @@index([typeId, trackId, timelineTemplateId])\n}\n\n//////////////////////////////////////////\n// AuditLog model – tracks field changes\n//////////////////////////////////////////\n\nmodel AuditLog {\n id String @id @default(uuid())\n challengeId String? // optional association with a challenge\n fieldName String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now())\n createdBy String\n memberId String?\n\n // Relation field to connect AuditLog to Challenge.\n challenge Challenge? @relation(fields: [challengeId], references: [id])\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Attachment model – for challenge attachments\n//////////////////////////////////////////\n\nmodel Attachment {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String\n fileSize Int\n url String\n description String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeMetadata model – key/value metadata\n//////////////////////////////////////////\n\nmodel ChallengeMetadata {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String // name of the metadata\n value String // value stored as string for flexibility\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Prize model – individual prize in a prize set\n//////////////////////////////////////////\n\nmodel Prize {\n id String @id @default(uuid())\n description String?\n prizeSet ChallengePrizeSet @relation(fields: [prizeSetId], references: [id], onDelete: Cascade)\n prizeSetId String\n type String // e.g. \"USD\", \"POINT\" (could also be converted to enum later)\n value Float\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeWinner model – record winners for a challenge\n//////////////////////////////////////////\n\nmodel ChallengeWinner {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n userId Int\n handle String\n placement Int\n type PrizeSetTypeEnum\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type, placement])\n}\n\n//////////////////////////////////////////\n// ChallengeTerm model – association of challenge and terms\n//////////////////////////////////////////\n\nmodel ChallengeTerm {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n termId String // Terms API id\n roleId String // UUID for the associated role\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeSkill model – linking challenges with skills\n//////////////////////////////////////////\n\nmodel ChallengeSkill {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n skillId String // Request provided skillId\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeBilling model – normalized billing info\n//////////////////////////////////////////\n\nmodel ChallengeBilling {\n id String @id @default(uuid())\n billingAccountId String?\n markup Float? // in range [0, 100]\n clientBillingRate Float? // in range [0, 100]. Supporting range on postgres is an open issue with prisma https://github.com/prisma/prisma/issues/3287.\n challengeId String @unique\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeLegacy model – normalized legacy info\n//////////////////////////////////////////\n\nmodel ChallengeLegacy {\n id String @id @default(uuid())\n reviewType ReviewTypeEnum @default(INTERNAL)\n confidentialityType String @default(\"public\")\n forumId Int?\n directProjectId Int?\n screeningScorecardId Int?\n reviewScorecardId Int?\n isTask Boolean @default(false)\n useSchedulingAPI Boolean @default(false)\n pureV5Task Boolean @default(false)\n pureV5 Boolean @default(false)\n selfService Boolean @default(false)\n selfServiceCopilot String?\n track String? // as provided in the legacy object\n subTrack String? // as provided in the legacy object\n legacySystemId Int? // represents the external \"legacyId\"\n challengeId String @unique\n challenge Challenge @relation(\"ChallengeLegacyRelation\", fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeEvent model – normalized challenge events\n//////////////////////////////////////////\n\nmodel ChallengeEvent {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n eventId Int\n name String?\n key String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeDiscussion and associated options – normalized discussion channels\n//////////////////////////////////////////\n\nmodel ChallengeDiscussion {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n discussionId String?\n name String\n type DiscussionTypeEnum // updated to use enum\n provider String\n url String?\n options ChallengeDiscussionOption[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\nmodel ChallengeDiscussionOption {\n id String @id @default(uuid())\n discussion ChallengeDiscussion @relation(fields: [discussionId], references: [id], onDelete: Cascade)\n discussionId String\n optionKey String\n optionValue String\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeConstraint model – top-level challenge constraints (e.g. allowed registrants)\n//////////////////////////////////////////\n\nmodel ChallengeConstraint {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String @unique\n allowedRegistrants String[] @default([])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhase – to capture per-phase info from create/update challenge operations\n// Each phase is linked with a challenge and holds a duration and any custom constraints.\n//////////////////////////////////////////\n\nmodel Phase {\n id String @id @default(uuid())\n name String\n description String?\n isOpen Boolean\n duration Int\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Inverse relation for associated challenge phases\n challengePhases ChallengePhase[]\n ChallengeReviewer ChallengeReviewer[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\nmodel ChallengePhase {\n id String @id @default(uuid())\n challengeId String\n phaseId String // foreign key to Phase\n\n name String // phase name\n description String? // description\n isOpen Boolean? @default(false) // if this phase is open\n predecessor String? // predecessor of this phase\n duration Int? // duration in seconds\n scheduledStartDate DateTime? // when the phase is scheduled to start\n scheduledEndDate DateTime?\n actualStartDate DateTime?\n actualEndDate DateTime? // when the phase actually ended\n constraints ChallengePhaseConstraint[]\n\n // Relation fields\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n phase Phase @relation(fields: [phaseId], references: [id])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, isOpen])\n @@index([challengeId, name])\n @@index([challengeId, isOpen, scheduledEndDate, actualEndDate], map: \"challenge_phase_challenge_open_end_idx\")\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhaseConstraint – to capture custom constraints for each phase\n//////////////////////////////////////////\n\nmodel ChallengePhaseConstraint {\n id String @id @default(uuid())\n challengePhaseId String\n name String // the name/key of the constraint\n value Int // numeric value of the constraint (can be changed to Float if needed)\n\n // Relation to the phase\n challengePhase ChallengePhase @relation(fields: [challengePhaseId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengePhaseId])\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePrizeSet – to group prizes for a challenge\n//////////////////////////////////////////\n\nmodel ChallengePrizeSet {\n id String @id @default(uuid())\n challengeId String\n type PrizeSetTypeEnum // using enum instead of string\n description String?\n prizes Prize[]\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type])\n}\n\n//////////////////////////////////////////\n// ChallengeReviewer model – reviewers for a challenge, both AI and member\n//////////////////////////////////////////\n\nmodel ChallengeReviewer {\n id String @id @default(uuid())\n challengeId String\n\n // Reviewer configuration\n scorecardId String\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseId String\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n type ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n // Relation to the phase\n phase Phase @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([phaseId])\n @@index([challengeId, phaseId])\n}\n\n//////////////////////////////////////////\n// DefaultChallengeReviewer model – default reviewers by type and track\n//////////////////////////////////////////\n\nmodel DefaultChallengeReviewer {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String?\n // Reviewer configuration (mirrors ChallengeReviewer)\n scorecardId String?\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseName String\n // Optional explicit link to Phase for better fidelity\n phaseId String?\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n opportunityType ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relations\n challengeType ChallengeType @relation(fields: [typeId], references: [id])\n challengeTrack ChallengeTrack @relation(fields: [trackId], references: [id])\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n // Relation to Phase (optional for backward compatibility with phaseName)\n phase Phase? @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([typeId, trackId])\n @@index([typeId, trackId, timelineTemplateId])\n @@index([phaseId])\n}\n\n//////////////////////////////////////////\n// TimelineTemplate model – defines timeline templates\n//////////////////////////////////////////\nmodel TimelineTemplate {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n phases TimelineTemplatePhase[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Opposite relation field, linking back to ChallengeTimelineTemplate.\n challengeTimelineTemplates ChallengeTimelineTemplate[]\n\n // Opposite relation field for Challenge.\n challenges Challenge[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\n//////////////////////////////////////////\n// TimelineTemplatePhase model – phases associated with a timeline template\n//////////////////////////////////////////\nmodel TimelineTemplatePhase {\n id String @id @default(uuid())\n timelineTemplateId String\n phaseId String // identifier for the phase\n predecessor String? // optional predecessor phase id\n defaultDuration Int // duration (in minutes, hours, etc.) as per business rules\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id], onDelete: Cascade)\n\n @@index([timelineTemplateId])\n @@index([timelineTemplateId, phaseId])\n}\n", - "inlineSchemaHash": "c9846a1406075bc0459c1958404f71031f4fcd9169d5a140273162524f601f84", + "inlineSchema": "datasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/challenge-prisma-client\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\n// Enum for allowed challenge track values (matches app-constants)\nenum ChallengeTrackEnum {\n DESIGN\n DATA_SCIENCE\n DEVELOPMENT\n QUALITY_ASSURANCE\n}\n\nenum ReviewTypeEnum {\n COMMUNITY\n INTERNAL\n SYSTEM\n PROVISIONAL\n EXAMPLE\n}\n\nenum DiscussionTypeEnum {\n CHALLENGE\n}\n\nenum ChallengeStatusEnum {\n NEW\n DRAFT\n APPROVED\n ACTIVE\n COMPLETED\n DELETED\n CANCELLED\n CANCELLED_FAILED_REVIEW\n CANCELLED_FAILED_SCREENING\n CANCELLED_ZERO_SUBMISSIONS\n CANCELLED_WINNER_UNRESPONSIVE\n CANCELLED_CLIENT_REQUEST\n CANCELLED_REQUIREMENTS_INFEASIBLE\n CANCELLED_ZERO_REGISTRATIONS\n CANCELLED_PAYMENT_FAILED\n}\n\nenum PrizeSetTypeEnum {\n PLACEMENT\n COPILOT\n REVIEWER\n PASSED_REVIEW\n CHECKPOINT\n}\n\n// Enum for review opportunity types on reviewers\nenum ReviewOpportunityTypeEnum {\n REGULAR_REVIEW\n COMPONENT_DEV_REVIEW\n SPEC_REVIEW\n ITERATIVE_REVIEW\n SCENARIOS_REVIEW\n}\n\n//////////////////////////////////////////\n// Main Challenge model\n//////////////////////////////////////////\n\nmodel Challenge {\n id String @id @default(uuid())\n name String\n description String?\n privateDescription String?\n challengeSource String?\n descriptionFormat String?\n projectId Int? // frequently queried field\n typeId String\n trackId String // FK for relation in ChallengeTrack\n timelineTemplateId String? // now used as foreign key to ChallengeTimelineTemplate\n overviewTotalPrizes Float? // stored from overview.totalPrizes\n numOfRegistrants Int @default(0)\n numOfSubmissions Int @default(0)\n numOfCheckpointSubmissions Int @default(0)\n currentPhaseNames String[] // current phase names\n\n wiproAllowed Boolean @default(false)\n funChallenge Boolean @default(false)\n\n // simple arrays for tags and groups (PostgreSQL native array type)\n tags String[]\n groups String[]\n\n // Task information (flattened from challenge.task)\n taskIsTask Boolean @default(false)\n taskIsAssigned Boolean @default(false)\n taskMemberId String?\n\n // Dates for challenge lifecycle\n submissionStartDate DateTime?\n submissionEndDate DateTime?\n registrationStartDate DateTime?\n registrationEndDate DateTime?\n startDate DateTime?\n endDate DateTime?\n\n // Normalized billing and legacy information (one-to-one)\n billingRecord ChallengeBilling?\n legacyId Int? // Legacy system ID for searching\n legacyRecord ChallengeLegacy? @relation(\"ChallengeLegacyRelation\")\n\n // Additional fields from createChallenge schema\n status ChallengeStatusEnum @default(NEW) // new challenges default to status \"New\"\n // Normalized top‑level constraints (e.g. allowedRegistrants) for a challenge\n constraintRecord ChallengeConstraint?\n\n // Additional normalized relations from createChallenge\n events ChallengeEvent[]\n discussions ChallengeDiscussion[]\n\n // Existing relations (one-to-many) for challenge metadata, phases, prize sets, winners, attachments,\n // terms and skills\n metadata ChallengeMetadata[]\n phases ChallengePhase[]\n prizeSets ChallengePrizeSet[]\n reviewers ChallengeReviewer[]\n winners ChallengeWinner[]\n attachments Attachment[]\n terms ChallengeTerm[]\n skills ChallengeSkill[]\n auditLogs AuditLog[]\n memberAccesses MemberChallengeAccess[]\n\n // Relation to ChallengeType (FK: typeId)\n type ChallengeType @relation(fields: [typeId], references: [id])\n // Relation to ChallengeTrack (FK: trackId)\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n\n // Auditing fields (present in every table)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([projectId])\n @@index([status]) // index added for optimized search by status\n @@index([createdAt])\n @@index([updatedAt])\n @@index([typeId])\n @@index([trackId])\n @@index([groups], type: Gin, map: \"challenge_groups_gin_idx\")\n @@index([submissionStartDate])\n @@index([submissionEndDate])\n @@index([registrationStartDate])\n @@index([registrationEndDate])\n @@index([startDate])\n @@index([endDate])\n @@index([status, startDate])\n @@index([trackId, typeId, status])\n @@index([status, typeId, trackId, createdAt(sort: Desc)], map: \"challenge_status_type_track_created_at_idx\")\n @@index([legacyId])\n @@index([projectId, status])\n}\n\n//////////////////////////////////////////\n// MemberChallengeAccess view – member/challenge pairs from resources schema\n//////////////////////////////////////////\n\nview MemberChallengeAccess {\n challengeId String\n memberId String\n\n challenge Challenge @relation(fields: [challengeId], references: [id])\n\n @@map(\"MemberChallengeAccess\")\n}\n\n//////////////////////////////////////////\n// ChallengeType model\n//////////////////////////////////////////\n\nmodel ChallengeType {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n isTask Boolean @default(false)\n abbreviation String\n\n challenges Challenge[]\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this type\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([abbreviation])\n}\n\n//////////////////////////////////////////\n// ChallengeTrack model\n//////////////////////////////////////////\n\nmodel ChallengeTrack {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean\n abbreviation String\n legacyId Int? // numeric legacy system id (if provided)\n track ChallengeTrackEnum? // enum value from ChallengeTrackEnum\n challenges Challenge[]\n // Opposite relation for ChallengeTimelineTemplate\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this track\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([legacyId])\n}\n\n//////////////////////////////////////////\n// ChallengeTimelineTemplate model\n//////////////////////////////////////////\n\nmodel ChallengeTimelineTemplate {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String // now required per Swagger spec\n\n // Link to the TimelineTemplate model via timelineTemplateId.\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id])\n // Link to the ChallengeTrack model via trackId.\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n // Link to the ChallengeType model via typeId.\n type ChallengeType @relation(fields: [typeId], references: [id])\n\n isDefault Boolean @default(false)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Composite index to support searches/updates by typeId, trackId and timelineTemplateId.\n @@index([typeId, trackId, timelineTemplateId])\n}\n\n//////////////////////////////////////////\n// AuditLog model – tracks field changes\n//////////////////////////////////////////\n\nmodel AuditLog {\n id String @id @default(uuid())\n challengeId String? // optional association with a challenge\n fieldName String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now())\n createdBy String\n memberId String?\n\n // Relation field to connect AuditLog to Challenge.\n challenge Challenge? @relation(fields: [challengeId], references: [id])\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Attachment model – for challenge attachments\n//////////////////////////////////////////\n\nmodel Attachment {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String\n fileSize Int\n url String\n description String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeMetadata model – key/value metadata\n//////////////////////////////////////////\n\nmodel ChallengeMetadata {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String // name of the metadata\n value String // value stored as string for flexibility\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Prize model – individual prize in a prize set\n//////////////////////////////////////////\n\nmodel Prize {\n id String @id @default(uuid())\n description String?\n prizeSet ChallengePrizeSet @relation(fields: [prizeSetId], references: [id], onDelete: Cascade)\n prizeSetId String\n type String // e.g. \"USD\", \"POINT\" (could also be converted to enum later)\n value Float\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeWinner model – record winners for a challenge\n//////////////////////////////////////////\n\nmodel ChallengeWinner {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n userId Int\n handle String\n placement Int\n type PrizeSetTypeEnum\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type, placement])\n}\n\n//////////////////////////////////////////\n// ChallengeTerm model – association of challenge and terms\n//////////////////////////////////////////\n\nmodel ChallengeTerm {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n termId String // Terms API id\n roleId String // UUID for the associated role\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeSkill model – linking challenges with skills\n//////////////////////////////////////////\n\nmodel ChallengeSkill {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n skillId String // Request provided skillId\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeBilling model – normalized billing info\n//////////////////////////////////////////\n\nmodel ChallengeBilling {\n id String @id @default(uuid())\n billingAccountId String?\n markup Float? // in range [0, 100]\n clientBillingRate Float? // in range [0, 100]. Supporting range on postgres is an open issue with prisma https://github.com/prisma/prisma/issues/3287.\n challengeId String @unique\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeLegacy model – normalized legacy info\n//////////////////////////////////////////\n\nmodel ChallengeLegacy {\n id String @id @default(uuid())\n reviewType ReviewTypeEnum @default(INTERNAL)\n confidentialityType String @default(\"public\")\n forumId Int?\n directProjectId Int?\n screeningScorecardId Int?\n reviewScorecardId Int?\n isTask Boolean @default(false)\n useSchedulingAPI Boolean @default(false)\n pureV5Task Boolean @default(false)\n pureV5 Boolean @default(false)\n selfService Boolean @default(false)\n selfServiceCopilot String?\n track String? // as provided in the legacy object\n subTrack String? // as provided in the legacy object\n legacySystemId Int? // represents the external \"legacyId\"\n challengeId String @unique\n challenge Challenge @relation(\"ChallengeLegacyRelation\", fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeEvent model – normalized challenge events\n//////////////////////////////////////////\n\nmodel ChallengeEvent {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n eventId Int\n name String?\n key String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeDiscussion and associated options – normalized discussion channels\n//////////////////////////////////////////\n\nmodel ChallengeDiscussion {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n discussionId String?\n name String\n type DiscussionTypeEnum // updated to use enum\n provider String\n url String?\n options ChallengeDiscussionOption[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\nmodel ChallengeDiscussionOption {\n id String @id @default(uuid())\n discussion ChallengeDiscussion @relation(fields: [discussionId], references: [id], onDelete: Cascade)\n discussionId String\n optionKey String\n optionValue String\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeConstraint model – top-level challenge constraints (e.g. allowed registrants)\n//////////////////////////////////////////\n\nmodel ChallengeConstraint {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String @unique\n allowedRegistrants String[] @default([])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhase – to capture per-phase info from create/update challenge operations\n// Each phase is linked with a challenge and holds a duration and any custom constraints.\n//////////////////////////////////////////\n\nmodel Phase {\n id String @id @default(uuid())\n name String\n description String?\n isOpen Boolean\n duration Int\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Inverse relation for associated challenge phases\n challengePhases ChallengePhase[]\n ChallengeReviewer ChallengeReviewer[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\nmodel ChallengePhase {\n id String @id @default(uuid())\n challengeId String\n phaseId String // foreign key to Phase\n\n name String // phase name\n description String? // description\n isOpen Boolean? @default(false) // if this phase is open\n predecessor String? // predecessor of this phase\n duration Int? // duration in seconds\n scheduledStartDate DateTime? // when the phase is scheduled to start\n scheduledEndDate DateTime?\n actualStartDate DateTime?\n actualEndDate DateTime? // when the phase actually ended\n constraints ChallengePhaseConstraint[]\n\n // Relation fields\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n phase Phase @relation(fields: [phaseId], references: [id])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, isOpen])\n @@index([challengeId, name])\n @@index([challengeId, isOpen, scheduledEndDate, actualEndDate], map: \"challenge_phase_challenge_open_end_idx\")\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhaseConstraint – to capture custom constraints for each phase\n//////////////////////////////////////////\n\nmodel ChallengePhaseConstraint {\n id String @id @default(uuid())\n challengePhaseId String\n name String // the name/key of the constraint\n value Int // numeric value of the constraint (can be changed to Float if needed)\n\n // Relation to the phase\n challengePhase ChallengePhase @relation(fields: [challengePhaseId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengePhaseId])\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePrizeSet – to group prizes for a challenge\n//////////////////////////////////////////\n\nmodel ChallengePrizeSet {\n id String @id @default(uuid())\n challengeId String\n type PrizeSetTypeEnum // using enum instead of string\n description String?\n prizes Prize[]\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type])\n}\n\n//////////////////////////////////////////\n// ChallengeReviewer model – reviewers for a challenge, both AI and member\n//////////////////////////////////////////\n\nmodel ChallengeReviewer {\n id String @id @default(uuid())\n challengeId String\n\n // Reviewer configuration\n scorecardId String\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseId String\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n type ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n // Relation to the phase\n phase Phase @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([phaseId])\n @@index([challengeId, phaseId])\n}\n\n//////////////////////////////////////////\n// DefaultChallengeReviewer model – default reviewers by type and track\n//////////////////////////////////////////\n\nmodel DefaultChallengeReviewer {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String?\n // Reviewer configuration (mirrors ChallengeReviewer)\n scorecardId String?\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseName String\n // Optional explicit link to Phase for better fidelity\n phaseId String?\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n opportunityType ReviewOpportunityTypeEnum?\n aiConfigTemplateId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relations\n challengeType ChallengeType @relation(fields: [typeId], references: [id])\n challengeTrack ChallengeTrack @relation(fields: [trackId], references: [id])\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n // Relation to Phase (optional for backward compatibility with phaseName)\n phase Phase? @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([typeId, trackId])\n @@index([typeId, trackId, timelineTemplateId])\n @@index([phaseId])\n}\n\n//////////////////////////////////////////\n// TimelineTemplate model – defines timeline templates\n//////////////////////////////////////////\nmodel TimelineTemplate {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n phases TimelineTemplatePhase[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Opposite relation field, linking back to ChallengeTimelineTemplate.\n challengeTimelineTemplates ChallengeTimelineTemplate[]\n\n // Opposite relation field for Challenge.\n challenges Challenge[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\n//////////////////////////////////////////\n// TimelineTemplatePhase model – phases associated with a timeline template\n//////////////////////////////////////////\nmodel TimelineTemplatePhase {\n id String @id @default(uuid())\n timelineTemplateId String\n phaseId String // identifier for the phase\n predecessor String? // optional predecessor phase id\n defaultDuration Int // duration (in minutes, hours, etc.) as per business rules\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id], onDelete: Cascade)\n\n @@index([timelineTemplateId])\n @@index([timelineTemplateId, phaseId])\n}\n", + "inlineSchemaHash": "a29362a60aa8828fffd5212d1cf4900622e5c305df3ed19e69c46649a22f7174", "copyEngine": true } @@ -871,7 +873,7 @@ if (!fs.existsSync(path.join(__dirname, 'schema.prisma'))) { config.isBundled = true } -config.runtimeDataModel = JSON.parse("{\"models\":{\"Challenge\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"privateDescription\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeSource\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"descriptionFormat\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"projectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"overviewTotalPrizes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfRegistrants\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfCheckpointSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currentPhaseNames\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wiproAllowed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"groups\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsAssigned\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskMemberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"startDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeBilling\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeLegacy\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ChallengeStatusEnum\",\"nativeType\":null,\"default\":\"NEW\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraintRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeConstraint\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"events\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeEvent\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metadata\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeMetadata\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSets\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"winners\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeWinner\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attachments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Attachment\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"terms\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTerm\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skills\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeSkill\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"auditLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AuditLog\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberAccesses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MemberChallengeAccess\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeType\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTrack\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrackEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AuditLog\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fieldName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"newValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Attachment\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeMetadata\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Prize\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSet\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[\"prizeSetId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSetId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeWinner\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"placement\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTerm\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"termId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeSkill\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skillId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeBilling\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingAccountId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"markup\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"clientBillingRate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeLegacy\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ReviewTypeEnum\",\"nativeType\":null,\"default\":\"INTERNAL\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confidentialityType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":\"public\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"forumId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"directProjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"screeningScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"useSchedulingAPI\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5Task\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfService\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfServiceCopilot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subTrack\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacySystemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeEvent\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"eventId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussion\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DiscussionTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"options\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussionOption\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussionOption\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussion\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[\"discussionId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionKey\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allowedRegistrants\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Phase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false},\"ChallengePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraints\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhaseConstraint\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePhaseConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[\"challengePhaseId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePrizeSet\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizes\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Prize\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"DefaultChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"opportunityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTrack\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"TimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplatePhase\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTimelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"TimelineTemplatePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultDuration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"MemberChallengeAccess\":{\"dbName\":\"MemberChallengeAccess\",\"schema\":null,\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{\"ChallengeTrackEnum\":{\"values\":[{\"name\":\"DESIGN\",\"dbName\":null},{\"name\":\"DATA_SCIENCE\",\"dbName\":null},{\"name\":\"DEVELOPMENT\",\"dbName\":null},{\"name\":\"QUALITY_ASSURANCE\",\"dbName\":null}],\"dbName\":null},\"ReviewTypeEnum\":{\"values\":[{\"name\":\"COMMUNITY\",\"dbName\":null},{\"name\":\"INTERNAL\",\"dbName\":null},{\"name\":\"SYSTEM\",\"dbName\":null},{\"name\":\"PROVISIONAL\",\"dbName\":null},{\"name\":\"EXAMPLE\",\"dbName\":null}],\"dbName\":null},\"DiscussionTypeEnum\":{\"values\":[{\"name\":\"CHALLENGE\",\"dbName\":null}],\"dbName\":null},\"ChallengeStatusEnum\":{\"values\":[{\"name\":\"NEW\",\"dbName\":null},{\"name\":\"DRAFT\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"ACTIVE\",\"dbName\":null},{\"name\":\"COMPLETED\",\"dbName\":null},{\"name\":\"DELETED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_REVIEW\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_SCREENING\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_SUBMISSIONS\",\"dbName\":null},{\"name\":\"CANCELLED_WINNER_UNRESPONSIVE\",\"dbName\":null},{\"name\":\"CANCELLED_CLIENT_REQUEST\",\"dbName\":null},{\"name\":\"CANCELLED_REQUIREMENTS_INFEASIBLE\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_REGISTRATIONS\",\"dbName\":null},{\"name\":\"CANCELLED_PAYMENT_FAILED\",\"dbName\":null}],\"dbName\":null},\"PrizeSetTypeEnum\":{\"values\":[{\"name\":\"PLACEMENT\",\"dbName\":null},{\"name\":\"COPILOT\",\"dbName\":null},{\"name\":\"REVIEWER\",\"dbName\":null},{\"name\":\"PASSED_REVIEW\",\"dbName\":null},{\"name\":\"CHECKPOINT\",\"dbName\":null}],\"dbName\":null},\"ReviewOpportunityTypeEnum\":{\"values\":[{\"name\":\"REGULAR_REVIEW\",\"dbName\":null},{\"name\":\"COMPONENT_DEV_REVIEW\",\"dbName\":null},{\"name\":\"SPEC_REVIEW\",\"dbName\":null},{\"name\":\"ITERATIVE_REVIEW\",\"dbName\":null},{\"name\":\"SCENARIOS_REVIEW\",\"dbName\":null}],\"dbName\":null}},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Challenge\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"privateDescription\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeSource\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"descriptionFormat\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"projectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"overviewTotalPrizes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfRegistrants\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfCheckpointSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currentPhaseNames\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wiproAllowed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"funChallenge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"groups\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsAssigned\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskMemberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"startDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeBilling\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeLegacy\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ChallengeStatusEnum\",\"nativeType\":null,\"default\":\"NEW\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraintRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeConstraint\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"events\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeEvent\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metadata\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeMetadata\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSets\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"winners\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeWinner\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attachments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Attachment\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"terms\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTerm\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skills\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeSkill\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"auditLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AuditLog\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberAccesses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MemberChallengeAccess\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeType\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTrack\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrackEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AuditLog\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fieldName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"newValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Attachment\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeMetadata\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Prize\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSet\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[\"prizeSetId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSetId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeWinner\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"placement\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTerm\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"termId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeSkill\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skillId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeBilling\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingAccountId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"markup\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"clientBillingRate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeLegacy\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ReviewTypeEnum\",\"nativeType\":null,\"default\":\"INTERNAL\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confidentialityType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":\"public\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"forumId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"directProjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"screeningScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"useSchedulingAPI\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5Task\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfService\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfServiceCopilot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subTrack\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacySystemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeEvent\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"eventId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussion\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DiscussionTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"options\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussionOption\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussionOption\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussion\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[\"discussionId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionKey\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allowedRegistrants\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Phase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false},\"ChallengePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraints\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhaseConstraint\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePhaseConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[\"challengePhaseId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePrizeSet\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizes\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Prize\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"DefaultChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"opportunityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiConfigTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTrack\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"TimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplatePhase\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTimelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"TimelineTemplatePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultDuration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"MemberChallengeAccess\":{\"dbName\":\"MemberChallengeAccess\",\"schema\":null,\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{\"ChallengeTrackEnum\":{\"values\":[{\"name\":\"DESIGN\",\"dbName\":null},{\"name\":\"DATA_SCIENCE\",\"dbName\":null},{\"name\":\"DEVELOPMENT\",\"dbName\":null},{\"name\":\"QUALITY_ASSURANCE\",\"dbName\":null}],\"dbName\":null},\"ReviewTypeEnum\":{\"values\":[{\"name\":\"COMMUNITY\",\"dbName\":null},{\"name\":\"INTERNAL\",\"dbName\":null},{\"name\":\"SYSTEM\",\"dbName\":null},{\"name\":\"PROVISIONAL\",\"dbName\":null},{\"name\":\"EXAMPLE\",\"dbName\":null}],\"dbName\":null},\"DiscussionTypeEnum\":{\"values\":[{\"name\":\"CHALLENGE\",\"dbName\":null}],\"dbName\":null},\"ChallengeStatusEnum\":{\"values\":[{\"name\":\"NEW\",\"dbName\":null},{\"name\":\"DRAFT\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"ACTIVE\",\"dbName\":null},{\"name\":\"COMPLETED\",\"dbName\":null},{\"name\":\"DELETED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_REVIEW\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_SCREENING\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_SUBMISSIONS\",\"dbName\":null},{\"name\":\"CANCELLED_WINNER_UNRESPONSIVE\",\"dbName\":null},{\"name\":\"CANCELLED_CLIENT_REQUEST\",\"dbName\":null},{\"name\":\"CANCELLED_REQUIREMENTS_INFEASIBLE\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_REGISTRATIONS\",\"dbName\":null},{\"name\":\"CANCELLED_PAYMENT_FAILED\",\"dbName\":null}],\"dbName\":null},\"PrizeSetTypeEnum\":{\"values\":[{\"name\":\"PLACEMENT\",\"dbName\":null},{\"name\":\"COPILOT\",\"dbName\":null},{\"name\":\"REVIEWER\",\"dbName\":null},{\"name\":\"PASSED_REVIEW\",\"dbName\":null},{\"name\":\"CHECKPOINT\",\"dbName\":null}],\"dbName\":null},\"ReviewOpportunityTypeEnum\":{\"values\":[{\"name\":\"REGULAR_REVIEW\",\"dbName\":null},{\"name\":\"COMPONENT_DEV_REVIEW\",\"dbName\":null},{\"name\":\"SPEC_REVIEW\",\"dbName\":null},{\"name\":\"ITERATIVE_REVIEW\",\"dbName\":null},{\"name\":\"SCENARIOS_REVIEW\",\"dbName\":null}],\"dbName\":null}},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.engineWasm = undefined config.compilerWasm = undefined diff --git a/packages/challenge-prisma-client/package.json b/packages/challenge-prisma-client/package.json index 52cf5d1..9951bea 100644 --- a/packages/challenge-prisma-client/package.json +++ b/packages/challenge-prisma-client/package.json @@ -1,5 +1,5 @@ { - "name": "prisma-client-04f7d38a0825095937960e69496dec8c25abfa0b18a5c7de2eeef4f39df070ed", + "name": "prisma-client-c91256c22675974efec9b3075e5c30ec14e519761fdaee6b32f15d38af842817", "main": "index.js", "types": "index.d.ts", "browser": "default.js", diff --git a/packages/challenge-prisma-client/schema.prisma b/packages/challenge-prisma-client/schema.prisma index 01b613d..8a7e73f 100644 --- a/packages/challenge-prisma-client/schema.prisma +++ b/packages/challenge-prisma-client/schema.prisma @@ -92,6 +92,7 @@ model Challenge { currentPhaseNames String[] // current phase names wiproAllowed Boolean @default(false) + funChallenge Boolean @default(false) // simple arrays for tags and groups (PostgreSQL native array type) tags String[] @@ -375,6 +376,8 @@ model ChallengeTerm { createdBy String updatedAt DateTime @updatedAt updatedBy String + + @@index([challengeId]) } ////////////////////////////////////////// @@ -667,7 +670,7 @@ model DefaultChallengeReviewer { baseCoefficient Float? incrementalCoefficient Float? opportunityType ReviewOpportunityTypeEnum? - aiWorkflowId String? @db.VarChar(14) + aiConfigTemplateId String? @db.VarChar(14) shouldOpenOpportunity Boolean @default(true) // Relations diff --git a/packages/challenge-prisma-client/wasm.js b/packages/challenge-prisma-client/wasm.js index e87151f..2d9c137 100644 --- a/packages/challenge-prisma-client/wasm.js +++ b/packages/challenge-prisma-client/wasm.js @@ -110,6 +110,7 @@ exports.Prisma.ChallengeScalarFieldEnum = { numOfCheckpointSubmissions: 'numOfCheckpointSubmissions', currentPhaseNames: 'currentPhaseNames', wiproAllowed: 'wiproAllowed', + funChallenge: 'funChallenge', tags: 'tags', groups: 'groups', taskIsTask: 'taskIsTask', @@ -418,7 +419,7 @@ exports.Prisma.DefaultChallengeReviewerScalarFieldEnum = { baseCoefficient: 'baseCoefficient', incrementalCoefficient: 'incrementalCoefficient', opportunityType: 'opportunityType', - aiWorkflowId: 'aiWorkflowId', + aiConfigTemplateId: 'aiConfigTemplateId', shouldOpenOpportunity: 'shouldOpenOpportunity', createdAt: 'createdAt', createdBy: 'createdBy', @@ -686,7 +687,7 @@ exports.Prisma.DefaultChallengeReviewerOrderByRelevanceFieldEnum = { scorecardId: 'scorecardId', phaseName: 'phaseName', phaseId: 'phaseId', - aiWorkflowId: 'aiWorkflowId', + aiConfigTemplateId: 'aiConfigTemplateId', createdBy: 'createdBy', updatedBy: 'updatedBy' }; @@ -804,7 +805,7 @@ const config = { "value": "prisma-client-js" }, "output": { - "value": "/home/jmgasper/Documents/Git/v6/challenge-api-v6/packages/challenge-prisma-client", + "value": "/home/vasea/work/topcoder/challenge-api-v6/packages/challenge-prisma-client", "fromEnvVar": null }, "config": { @@ -826,11 +827,12 @@ const config = { "postgresqlExtensions", "views" ], - "sourceFilePath": "/home/jmgasper/Documents/Git/v6/challenge-api-v6/prisma/schema.prisma", + "sourceFilePath": "/home/vasea/work/topcoder/challenge-api-v6/prisma/schema.prisma", "isCustomOutput": true }, "relativeEnvPaths": { - "rootEnvPath": null + "rootEnvPath": null, + "schemaEnvPath": "../../.env" }, "relativePath": "../../prisma", "clientVersion": "6.19.0", @@ -848,13 +850,13 @@ const config = { } } }, - "inlineSchema": "datasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/challenge-prisma-client\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\n// Enum for allowed challenge track values (matches app-constants)\nenum ChallengeTrackEnum {\n DESIGN\n DATA_SCIENCE\n DEVELOPMENT\n QUALITY_ASSURANCE\n}\n\nenum ReviewTypeEnum {\n COMMUNITY\n INTERNAL\n SYSTEM\n PROVISIONAL\n EXAMPLE\n}\n\nenum DiscussionTypeEnum {\n CHALLENGE\n}\n\nenum ChallengeStatusEnum {\n NEW\n DRAFT\n APPROVED\n ACTIVE\n COMPLETED\n DELETED\n CANCELLED\n CANCELLED_FAILED_REVIEW\n CANCELLED_FAILED_SCREENING\n CANCELLED_ZERO_SUBMISSIONS\n CANCELLED_WINNER_UNRESPONSIVE\n CANCELLED_CLIENT_REQUEST\n CANCELLED_REQUIREMENTS_INFEASIBLE\n CANCELLED_ZERO_REGISTRATIONS\n CANCELLED_PAYMENT_FAILED\n}\n\nenum PrizeSetTypeEnum {\n PLACEMENT\n COPILOT\n REVIEWER\n PASSED_REVIEW\n CHECKPOINT\n}\n\n// Enum for review opportunity types on reviewers\nenum ReviewOpportunityTypeEnum {\n REGULAR_REVIEW\n COMPONENT_DEV_REVIEW\n SPEC_REVIEW\n ITERATIVE_REVIEW\n SCENARIOS_REVIEW\n}\n\n//////////////////////////////////////////\n// Main Challenge model\n//////////////////////////////////////////\n\nmodel Challenge {\n id String @id @default(uuid())\n name String\n description String?\n privateDescription String?\n challengeSource String?\n descriptionFormat String?\n projectId Int? // frequently queried field\n typeId String\n trackId String // FK for relation in ChallengeTrack\n timelineTemplateId String? // now used as foreign key to ChallengeTimelineTemplate\n overviewTotalPrizes Float? // stored from overview.totalPrizes\n numOfRegistrants Int @default(0)\n numOfSubmissions Int @default(0)\n numOfCheckpointSubmissions Int @default(0)\n currentPhaseNames String[] // current phase names\n\n wiproAllowed Boolean @default(false)\n\n // simple arrays for tags and groups (PostgreSQL native array type)\n tags String[]\n groups String[]\n\n // Task information (flattened from challenge.task)\n taskIsTask Boolean @default(false)\n taskIsAssigned Boolean @default(false)\n taskMemberId String?\n\n // Dates for challenge lifecycle\n submissionStartDate DateTime?\n submissionEndDate DateTime?\n registrationStartDate DateTime?\n registrationEndDate DateTime?\n startDate DateTime?\n endDate DateTime?\n\n // Normalized billing and legacy information (one-to-one)\n billingRecord ChallengeBilling?\n legacyId Int? // Legacy system ID for searching\n legacyRecord ChallengeLegacy? @relation(\"ChallengeLegacyRelation\")\n\n // Additional fields from createChallenge schema\n status ChallengeStatusEnum @default(NEW) // new challenges default to status \"New\"\n // Normalized top‑level constraints (e.g. allowedRegistrants) for a challenge\n constraintRecord ChallengeConstraint?\n\n // Additional normalized relations from createChallenge\n events ChallengeEvent[]\n discussions ChallengeDiscussion[]\n\n // Existing relations (one-to-many) for challenge metadata, phases, prize sets, winners, attachments,\n // terms and skills\n metadata ChallengeMetadata[]\n phases ChallengePhase[]\n prizeSets ChallengePrizeSet[]\n reviewers ChallengeReviewer[]\n winners ChallengeWinner[]\n attachments Attachment[]\n terms ChallengeTerm[]\n skills ChallengeSkill[]\n auditLogs AuditLog[]\n memberAccesses MemberChallengeAccess[]\n\n // Relation to ChallengeType (FK: typeId)\n type ChallengeType @relation(fields: [typeId], references: [id])\n // Relation to ChallengeTrack (FK: trackId)\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n\n // Auditing fields (present in every table)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([projectId])\n @@index([status]) // index added for optimized search by status\n @@index([createdAt])\n @@index([updatedAt])\n @@index([typeId])\n @@index([trackId])\n @@index([groups], type: Gin, map: \"challenge_groups_gin_idx\")\n @@index([submissionStartDate])\n @@index([submissionEndDate])\n @@index([registrationStartDate])\n @@index([registrationEndDate])\n @@index([startDate])\n @@index([endDate])\n @@index([status, startDate])\n @@index([trackId, typeId, status])\n @@index([status, typeId, trackId, createdAt(sort: Desc)], map: \"challenge_status_type_track_created_at_idx\")\n @@index([legacyId])\n @@index([projectId, status])\n}\n\n//////////////////////////////////////////\n// MemberChallengeAccess view – member/challenge pairs from resources schema\n//////////////////////////////////////////\n\nview MemberChallengeAccess {\n challengeId String\n memberId String\n\n challenge Challenge @relation(fields: [challengeId], references: [id])\n\n @@map(\"MemberChallengeAccess\")\n}\n\n//////////////////////////////////////////\n// ChallengeType model\n//////////////////////////////////////////\n\nmodel ChallengeType {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n isTask Boolean @default(false)\n abbreviation String\n\n challenges Challenge[]\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this type\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([abbreviation])\n}\n\n//////////////////////////////////////////\n// ChallengeTrack model\n//////////////////////////////////////////\n\nmodel ChallengeTrack {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean\n abbreviation String\n legacyId Int? // numeric legacy system id (if provided)\n track ChallengeTrackEnum? // enum value from ChallengeTrackEnum\n challenges Challenge[]\n // Opposite relation for ChallengeTimelineTemplate\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this track\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([legacyId])\n}\n\n//////////////////////////////////////////\n// ChallengeTimelineTemplate model\n//////////////////////////////////////////\n\nmodel ChallengeTimelineTemplate {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String // now required per Swagger spec\n\n // Link to the TimelineTemplate model via timelineTemplateId.\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id])\n // Link to the ChallengeTrack model via trackId.\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n // Link to the ChallengeType model via typeId.\n type ChallengeType @relation(fields: [typeId], references: [id])\n\n isDefault Boolean @default(false)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Composite index to support searches/updates by typeId, trackId and timelineTemplateId.\n @@index([typeId, trackId, timelineTemplateId])\n}\n\n//////////////////////////////////////////\n// AuditLog model – tracks field changes\n//////////////////////////////////////////\n\nmodel AuditLog {\n id String @id @default(uuid())\n challengeId String? // optional association with a challenge\n fieldName String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now())\n createdBy String\n memberId String?\n\n // Relation field to connect AuditLog to Challenge.\n challenge Challenge? @relation(fields: [challengeId], references: [id])\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Attachment model – for challenge attachments\n//////////////////////////////////////////\n\nmodel Attachment {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String\n fileSize Int\n url String\n description String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeMetadata model – key/value metadata\n//////////////////////////////////////////\n\nmodel ChallengeMetadata {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String // name of the metadata\n value String // value stored as string for flexibility\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Prize model – individual prize in a prize set\n//////////////////////////////////////////\n\nmodel Prize {\n id String @id @default(uuid())\n description String?\n prizeSet ChallengePrizeSet @relation(fields: [prizeSetId], references: [id], onDelete: Cascade)\n prizeSetId String\n type String // e.g. \"USD\", \"POINT\" (could also be converted to enum later)\n value Float\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeWinner model – record winners for a challenge\n//////////////////////////////////////////\n\nmodel ChallengeWinner {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n userId Int\n handle String\n placement Int\n type PrizeSetTypeEnum\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type, placement])\n}\n\n//////////////////////////////////////////\n// ChallengeTerm model – association of challenge and terms\n//////////////////////////////////////////\n\nmodel ChallengeTerm {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n termId String // Terms API id\n roleId String // UUID for the associated role\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeSkill model – linking challenges with skills\n//////////////////////////////////////////\n\nmodel ChallengeSkill {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n skillId String // Request provided skillId\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeBilling model – normalized billing info\n//////////////////////////////////////////\n\nmodel ChallengeBilling {\n id String @id @default(uuid())\n billingAccountId String?\n markup Float? // in range [0, 100]\n clientBillingRate Float? // in range [0, 100]. Supporting range on postgres is an open issue with prisma https://github.com/prisma/prisma/issues/3287.\n challengeId String @unique\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeLegacy model – normalized legacy info\n//////////////////////////////////////////\n\nmodel ChallengeLegacy {\n id String @id @default(uuid())\n reviewType ReviewTypeEnum @default(INTERNAL)\n confidentialityType String @default(\"public\")\n forumId Int?\n directProjectId Int?\n screeningScorecardId Int?\n reviewScorecardId Int?\n isTask Boolean @default(false)\n useSchedulingAPI Boolean @default(false)\n pureV5Task Boolean @default(false)\n pureV5 Boolean @default(false)\n selfService Boolean @default(false)\n selfServiceCopilot String?\n track String? // as provided in the legacy object\n subTrack String? // as provided in the legacy object\n legacySystemId Int? // represents the external \"legacyId\"\n challengeId String @unique\n challenge Challenge @relation(\"ChallengeLegacyRelation\", fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeEvent model – normalized challenge events\n//////////////////////////////////////////\n\nmodel ChallengeEvent {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n eventId Int\n name String?\n key String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeDiscussion and associated options – normalized discussion channels\n//////////////////////////////////////////\n\nmodel ChallengeDiscussion {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n discussionId String?\n name String\n type DiscussionTypeEnum // updated to use enum\n provider String\n url String?\n options ChallengeDiscussionOption[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\nmodel ChallengeDiscussionOption {\n id String @id @default(uuid())\n discussion ChallengeDiscussion @relation(fields: [discussionId], references: [id], onDelete: Cascade)\n discussionId String\n optionKey String\n optionValue String\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeConstraint model – top-level challenge constraints (e.g. allowed registrants)\n//////////////////////////////////////////\n\nmodel ChallengeConstraint {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String @unique\n allowedRegistrants String[] @default([])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhase – to capture per-phase info from create/update challenge operations\n// Each phase is linked with a challenge and holds a duration and any custom constraints.\n//////////////////////////////////////////\n\nmodel Phase {\n id String @id @default(uuid())\n name String\n description String?\n isOpen Boolean\n duration Int\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Inverse relation for associated challenge phases\n challengePhases ChallengePhase[]\n ChallengeReviewer ChallengeReviewer[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\nmodel ChallengePhase {\n id String @id @default(uuid())\n challengeId String\n phaseId String // foreign key to Phase\n\n name String // phase name\n description String? // description\n isOpen Boolean? @default(false) // if this phase is open\n predecessor String? // predecessor of this phase\n duration Int? // duration in seconds\n scheduledStartDate DateTime? // when the phase is scheduled to start\n scheduledEndDate DateTime?\n actualStartDate DateTime?\n actualEndDate DateTime? // when the phase actually ended\n constraints ChallengePhaseConstraint[]\n\n // Relation fields\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n phase Phase @relation(fields: [phaseId], references: [id])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, isOpen])\n @@index([challengeId, name])\n @@index([challengeId, isOpen, scheduledEndDate, actualEndDate], map: \"challenge_phase_challenge_open_end_idx\")\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhaseConstraint – to capture custom constraints for each phase\n//////////////////////////////////////////\n\nmodel ChallengePhaseConstraint {\n id String @id @default(uuid())\n challengePhaseId String\n name String // the name/key of the constraint\n value Int // numeric value of the constraint (can be changed to Float if needed)\n\n // Relation to the phase\n challengePhase ChallengePhase @relation(fields: [challengePhaseId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengePhaseId])\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePrizeSet – to group prizes for a challenge\n//////////////////////////////////////////\n\nmodel ChallengePrizeSet {\n id String @id @default(uuid())\n challengeId String\n type PrizeSetTypeEnum // using enum instead of string\n description String?\n prizes Prize[]\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type])\n}\n\n//////////////////////////////////////////\n// ChallengeReviewer model – reviewers for a challenge, both AI and member\n//////////////////////////////////////////\n\nmodel ChallengeReviewer {\n id String @id @default(uuid())\n challengeId String\n\n // Reviewer configuration\n scorecardId String\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseId String\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n type ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n // Relation to the phase\n phase Phase @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([phaseId])\n @@index([challengeId, phaseId])\n}\n\n//////////////////////////////////////////\n// DefaultChallengeReviewer model – default reviewers by type and track\n//////////////////////////////////////////\n\nmodel DefaultChallengeReviewer {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String?\n // Reviewer configuration (mirrors ChallengeReviewer)\n scorecardId String?\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseName String\n // Optional explicit link to Phase for better fidelity\n phaseId String?\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n opportunityType ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relations\n challengeType ChallengeType @relation(fields: [typeId], references: [id])\n challengeTrack ChallengeTrack @relation(fields: [trackId], references: [id])\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n // Relation to Phase (optional for backward compatibility with phaseName)\n phase Phase? @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([typeId, trackId])\n @@index([typeId, trackId, timelineTemplateId])\n @@index([phaseId])\n}\n\n//////////////////////////////////////////\n// TimelineTemplate model – defines timeline templates\n//////////////////////////////////////////\nmodel TimelineTemplate {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n phases TimelineTemplatePhase[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Opposite relation field, linking back to ChallengeTimelineTemplate.\n challengeTimelineTemplates ChallengeTimelineTemplate[]\n\n // Opposite relation field for Challenge.\n challenges Challenge[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\n//////////////////////////////////////////\n// TimelineTemplatePhase model – phases associated with a timeline template\n//////////////////////////////////////////\nmodel TimelineTemplatePhase {\n id String @id @default(uuid())\n timelineTemplateId String\n phaseId String // identifier for the phase\n predecessor String? // optional predecessor phase id\n defaultDuration Int // duration (in minutes, hours, etc.) as per business rules\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id], onDelete: Cascade)\n\n @@index([timelineTemplateId])\n @@index([timelineTemplateId, phaseId])\n}\n", - "inlineSchemaHash": "c9846a1406075bc0459c1958404f71031f4fcd9169d5a140273162524f601f84", + "inlineSchema": "datasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/challenge-prisma-client\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\n// Enum for allowed challenge track values (matches app-constants)\nenum ChallengeTrackEnum {\n DESIGN\n DATA_SCIENCE\n DEVELOPMENT\n QUALITY_ASSURANCE\n}\n\nenum ReviewTypeEnum {\n COMMUNITY\n INTERNAL\n SYSTEM\n PROVISIONAL\n EXAMPLE\n}\n\nenum DiscussionTypeEnum {\n CHALLENGE\n}\n\nenum ChallengeStatusEnum {\n NEW\n DRAFT\n APPROVED\n ACTIVE\n COMPLETED\n DELETED\n CANCELLED\n CANCELLED_FAILED_REVIEW\n CANCELLED_FAILED_SCREENING\n CANCELLED_ZERO_SUBMISSIONS\n CANCELLED_WINNER_UNRESPONSIVE\n CANCELLED_CLIENT_REQUEST\n CANCELLED_REQUIREMENTS_INFEASIBLE\n CANCELLED_ZERO_REGISTRATIONS\n CANCELLED_PAYMENT_FAILED\n}\n\nenum PrizeSetTypeEnum {\n PLACEMENT\n COPILOT\n REVIEWER\n PASSED_REVIEW\n CHECKPOINT\n}\n\n// Enum for review opportunity types on reviewers\nenum ReviewOpportunityTypeEnum {\n REGULAR_REVIEW\n COMPONENT_DEV_REVIEW\n SPEC_REVIEW\n ITERATIVE_REVIEW\n SCENARIOS_REVIEW\n}\n\n//////////////////////////////////////////\n// Main Challenge model\n//////////////////////////////////////////\n\nmodel Challenge {\n id String @id @default(uuid())\n name String\n description String?\n privateDescription String?\n challengeSource String?\n descriptionFormat String?\n projectId Int? // frequently queried field\n typeId String\n trackId String // FK for relation in ChallengeTrack\n timelineTemplateId String? // now used as foreign key to ChallengeTimelineTemplate\n overviewTotalPrizes Float? // stored from overview.totalPrizes\n numOfRegistrants Int @default(0)\n numOfSubmissions Int @default(0)\n numOfCheckpointSubmissions Int @default(0)\n currentPhaseNames String[] // current phase names\n\n wiproAllowed Boolean @default(false)\n funChallenge Boolean @default(false)\n\n // simple arrays for tags and groups (PostgreSQL native array type)\n tags String[]\n groups String[]\n\n // Task information (flattened from challenge.task)\n taskIsTask Boolean @default(false)\n taskIsAssigned Boolean @default(false)\n taskMemberId String?\n\n // Dates for challenge lifecycle\n submissionStartDate DateTime?\n submissionEndDate DateTime?\n registrationStartDate DateTime?\n registrationEndDate DateTime?\n startDate DateTime?\n endDate DateTime?\n\n // Normalized billing and legacy information (one-to-one)\n billingRecord ChallengeBilling?\n legacyId Int? // Legacy system ID for searching\n legacyRecord ChallengeLegacy? @relation(\"ChallengeLegacyRelation\")\n\n // Additional fields from createChallenge schema\n status ChallengeStatusEnum @default(NEW) // new challenges default to status \"New\"\n // Normalized top‑level constraints (e.g. allowedRegistrants) for a challenge\n constraintRecord ChallengeConstraint?\n\n // Additional normalized relations from createChallenge\n events ChallengeEvent[]\n discussions ChallengeDiscussion[]\n\n // Existing relations (one-to-many) for challenge metadata, phases, prize sets, winners, attachments,\n // terms and skills\n metadata ChallengeMetadata[]\n phases ChallengePhase[]\n prizeSets ChallengePrizeSet[]\n reviewers ChallengeReviewer[]\n winners ChallengeWinner[]\n attachments Attachment[]\n terms ChallengeTerm[]\n skills ChallengeSkill[]\n auditLogs AuditLog[]\n memberAccesses MemberChallengeAccess[]\n\n // Relation to ChallengeType (FK: typeId)\n type ChallengeType @relation(fields: [typeId], references: [id])\n // Relation to ChallengeTrack (FK: trackId)\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n\n // Auditing fields (present in every table)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([projectId])\n @@index([status]) // index added for optimized search by status\n @@index([createdAt])\n @@index([updatedAt])\n @@index([typeId])\n @@index([trackId])\n @@index([groups], type: Gin, map: \"challenge_groups_gin_idx\")\n @@index([submissionStartDate])\n @@index([submissionEndDate])\n @@index([registrationStartDate])\n @@index([registrationEndDate])\n @@index([startDate])\n @@index([endDate])\n @@index([status, startDate])\n @@index([trackId, typeId, status])\n @@index([status, typeId, trackId, createdAt(sort: Desc)], map: \"challenge_status_type_track_created_at_idx\")\n @@index([legacyId])\n @@index([projectId, status])\n}\n\n//////////////////////////////////////////\n// MemberChallengeAccess view – member/challenge pairs from resources schema\n//////////////////////////////////////////\n\nview MemberChallengeAccess {\n challengeId String\n memberId String\n\n challenge Challenge @relation(fields: [challengeId], references: [id])\n\n @@map(\"MemberChallengeAccess\")\n}\n\n//////////////////////////////////////////\n// ChallengeType model\n//////////////////////////////////////////\n\nmodel ChallengeType {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n isTask Boolean @default(false)\n abbreviation String\n\n challenges Challenge[]\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this type\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([abbreviation])\n}\n\n//////////////////////////////////////////\n// ChallengeTrack model\n//////////////////////////////////////////\n\nmodel ChallengeTrack {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean\n abbreviation String\n legacyId Int? // numeric legacy system id (if provided)\n track ChallengeTrackEnum? // enum value from ChallengeTrackEnum\n challenges Challenge[]\n // Opposite relation for ChallengeTimelineTemplate\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this track\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([legacyId])\n}\n\n//////////////////////////////////////////\n// ChallengeTimelineTemplate model\n//////////////////////////////////////////\n\nmodel ChallengeTimelineTemplate {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String // now required per Swagger spec\n\n // Link to the TimelineTemplate model via timelineTemplateId.\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id])\n // Link to the ChallengeTrack model via trackId.\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n // Link to the ChallengeType model via typeId.\n type ChallengeType @relation(fields: [typeId], references: [id])\n\n isDefault Boolean @default(false)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Composite index to support searches/updates by typeId, trackId and timelineTemplateId.\n @@index([typeId, trackId, timelineTemplateId])\n}\n\n//////////////////////////////////////////\n// AuditLog model – tracks field changes\n//////////////////////////////////////////\n\nmodel AuditLog {\n id String @id @default(uuid())\n challengeId String? // optional association with a challenge\n fieldName String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now())\n createdBy String\n memberId String?\n\n // Relation field to connect AuditLog to Challenge.\n challenge Challenge? @relation(fields: [challengeId], references: [id])\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Attachment model – for challenge attachments\n//////////////////////////////////////////\n\nmodel Attachment {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String\n fileSize Int\n url String\n description String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeMetadata model – key/value metadata\n//////////////////////////////////////////\n\nmodel ChallengeMetadata {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String // name of the metadata\n value String // value stored as string for flexibility\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Prize model – individual prize in a prize set\n//////////////////////////////////////////\n\nmodel Prize {\n id String @id @default(uuid())\n description String?\n prizeSet ChallengePrizeSet @relation(fields: [prizeSetId], references: [id], onDelete: Cascade)\n prizeSetId String\n type String // e.g. \"USD\", \"POINT\" (could also be converted to enum later)\n value Float\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeWinner model – record winners for a challenge\n//////////////////////////////////////////\n\nmodel ChallengeWinner {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n userId Int\n handle String\n placement Int\n type PrizeSetTypeEnum\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type, placement])\n}\n\n//////////////////////////////////////////\n// ChallengeTerm model – association of challenge and terms\n//////////////////////////////////////////\n\nmodel ChallengeTerm {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n termId String // Terms API id\n roleId String // UUID for the associated role\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeSkill model – linking challenges with skills\n//////////////////////////////////////////\n\nmodel ChallengeSkill {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n skillId String // Request provided skillId\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeBilling model – normalized billing info\n//////////////////////////////////////////\n\nmodel ChallengeBilling {\n id String @id @default(uuid())\n billingAccountId String?\n markup Float? // in range [0, 100]\n clientBillingRate Float? // in range [0, 100]. Supporting range on postgres is an open issue with prisma https://github.com/prisma/prisma/issues/3287.\n challengeId String @unique\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeLegacy model – normalized legacy info\n//////////////////////////////////////////\n\nmodel ChallengeLegacy {\n id String @id @default(uuid())\n reviewType ReviewTypeEnum @default(INTERNAL)\n confidentialityType String @default(\"public\")\n forumId Int?\n directProjectId Int?\n screeningScorecardId Int?\n reviewScorecardId Int?\n isTask Boolean @default(false)\n useSchedulingAPI Boolean @default(false)\n pureV5Task Boolean @default(false)\n pureV5 Boolean @default(false)\n selfService Boolean @default(false)\n selfServiceCopilot String?\n track String? // as provided in the legacy object\n subTrack String? // as provided in the legacy object\n legacySystemId Int? // represents the external \"legacyId\"\n challengeId String @unique\n challenge Challenge @relation(\"ChallengeLegacyRelation\", fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeEvent model – normalized challenge events\n//////////////////////////////////////////\n\nmodel ChallengeEvent {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n eventId Int\n name String?\n key String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeDiscussion and associated options – normalized discussion channels\n//////////////////////////////////////////\n\nmodel ChallengeDiscussion {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n discussionId String?\n name String\n type DiscussionTypeEnum // updated to use enum\n provider String\n url String?\n options ChallengeDiscussionOption[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\nmodel ChallengeDiscussionOption {\n id String @id @default(uuid())\n discussion ChallengeDiscussion @relation(fields: [discussionId], references: [id], onDelete: Cascade)\n discussionId String\n optionKey String\n optionValue String\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeConstraint model – top-level challenge constraints (e.g. allowed registrants)\n//////////////////////////////////////////\n\nmodel ChallengeConstraint {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String @unique\n allowedRegistrants String[] @default([])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhase – to capture per-phase info from create/update challenge operations\n// Each phase is linked with a challenge and holds a duration and any custom constraints.\n//////////////////////////////////////////\n\nmodel Phase {\n id String @id @default(uuid())\n name String\n description String?\n isOpen Boolean\n duration Int\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Inverse relation for associated challenge phases\n challengePhases ChallengePhase[]\n ChallengeReviewer ChallengeReviewer[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\nmodel ChallengePhase {\n id String @id @default(uuid())\n challengeId String\n phaseId String // foreign key to Phase\n\n name String // phase name\n description String? // description\n isOpen Boolean? @default(false) // if this phase is open\n predecessor String? // predecessor of this phase\n duration Int? // duration in seconds\n scheduledStartDate DateTime? // when the phase is scheduled to start\n scheduledEndDate DateTime?\n actualStartDate DateTime?\n actualEndDate DateTime? // when the phase actually ended\n constraints ChallengePhaseConstraint[]\n\n // Relation fields\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n phase Phase @relation(fields: [phaseId], references: [id])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, isOpen])\n @@index([challengeId, name])\n @@index([challengeId, isOpen, scheduledEndDate, actualEndDate], map: \"challenge_phase_challenge_open_end_idx\")\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhaseConstraint – to capture custom constraints for each phase\n//////////////////////////////////////////\n\nmodel ChallengePhaseConstraint {\n id String @id @default(uuid())\n challengePhaseId String\n name String // the name/key of the constraint\n value Int // numeric value of the constraint (can be changed to Float if needed)\n\n // Relation to the phase\n challengePhase ChallengePhase @relation(fields: [challengePhaseId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengePhaseId])\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePrizeSet – to group prizes for a challenge\n//////////////////////////////////////////\n\nmodel ChallengePrizeSet {\n id String @id @default(uuid())\n challengeId String\n type PrizeSetTypeEnum // using enum instead of string\n description String?\n prizes Prize[]\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type])\n}\n\n//////////////////////////////////////////\n// ChallengeReviewer model – reviewers for a challenge, both AI and member\n//////////////////////////////////////////\n\nmodel ChallengeReviewer {\n id String @id @default(uuid())\n challengeId String\n\n // Reviewer configuration\n scorecardId String\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseId String\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n type ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n // Relation to the phase\n phase Phase @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([phaseId])\n @@index([challengeId, phaseId])\n}\n\n//////////////////////////////////////////\n// DefaultChallengeReviewer model – default reviewers by type and track\n//////////////////////////////////////////\n\nmodel DefaultChallengeReviewer {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String?\n // Reviewer configuration (mirrors ChallengeReviewer)\n scorecardId String?\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseName String\n // Optional explicit link to Phase for better fidelity\n phaseId String?\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n opportunityType ReviewOpportunityTypeEnum?\n aiConfigTemplateId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relations\n challengeType ChallengeType @relation(fields: [typeId], references: [id])\n challengeTrack ChallengeTrack @relation(fields: [trackId], references: [id])\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n // Relation to Phase (optional for backward compatibility with phaseName)\n phase Phase? @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([typeId, trackId])\n @@index([typeId, trackId, timelineTemplateId])\n @@index([phaseId])\n}\n\n//////////////////////////////////////////\n// TimelineTemplate model – defines timeline templates\n//////////////////////////////////////////\nmodel TimelineTemplate {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n phases TimelineTemplatePhase[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Opposite relation field, linking back to ChallengeTimelineTemplate.\n challengeTimelineTemplates ChallengeTimelineTemplate[]\n\n // Opposite relation field for Challenge.\n challenges Challenge[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\n//////////////////////////////////////////\n// TimelineTemplatePhase model – phases associated with a timeline template\n//////////////////////////////////////////\nmodel TimelineTemplatePhase {\n id String @id @default(uuid())\n timelineTemplateId String\n phaseId String // identifier for the phase\n predecessor String? // optional predecessor phase id\n defaultDuration Int // duration (in minutes, hours, etc.) as per business rules\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id], onDelete: Cascade)\n\n @@index([timelineTemplateId])\n @@index([timelineTemplateId, phaseId])\n}\n", + "inlineSchemaHash": "a29362a60aa8828fffd5212d1cf4900622e5c305df3ed19e69c46649a22f7174", "copyEngine": true } config.dirname = '/' -config.runtimeDataModel = JSON.parse("{\"models\":{\"Challenge\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"privateDescription\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeSource\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descriptionFormat\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"projectId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trackId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"overviewTotalPrizes\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"numOfRegistrants\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"numOfSubmissions\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"numOfCheckpointSubmissions\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"currentPhaseNames\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"wiproAllowed\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"tags\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"groups\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"taskIsTask\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"taskIsAssigned\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"taskMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"submissionStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"submissionEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"registrationStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"registrationEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"startDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"billingRecord\",\"kind\":\"object\",\"type\":\"ChallengeBilling\",\"relationName\":\"ChallengeToChallengeBilling\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"legacyRecord\",\"kind\":\"object\",\"type\":\"ChallengeLegacy\",\"relationName\":\"ChallengeLegacyRelation\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"ChallengeStatusEnum\"},{\"name\":\"constraintRecord\",\"kind\":\"object\",\"type\":\"ChallengeConstraint\",\"relationName\":\"ChallengeToChallengeConstraint\"},{\"name\":\"events\",\"kind\":\"object\",\"type\":\"ChallengeEvent\",\"relationName\":\"ChallengeToChallengeEvent\"},{\"name\":\"discussions\",\"kind\":\"object\",\"type\":\"ChallengeDiscussion\",\"relationName\":\"ChallengeToChallengeDiscussion\"},{\"name\":\"metadata\",\"kind\":\"object\",\"type\":\"ChallengeMetadata\",\"relationName\":\"ChallengeToChallengeMetadata\"},{\"name\":\"phases\",\"kind\":\"object\",\"type\":\"ChallengePhase\",\"relationName\":\"ChallengeToChallengePhase\"},{\"name\":\"prizeSets\",\"kind\":\"object\",\"type\":\"ChallengePrizeSet\",\"relationName\":\"ChallengeToChallengePrizeSet\"},{\"name\":\"reviewers\",\"kind\":\"object\",\"type\":\"ChallengeReviewer\",\"relationName\":\"ChallengeToChallengeReviewer\"},{\"name\":\"winners\",\"kind\":\"object\",\"type\":\"ChallengeWinner\",\"relationName\":\"ChallengeToChallengeWinner\"},{\"name\":\"attachments\",\"kind\":\"object\",\"type\":\"Attachment\",\"relationName\":\"AttachmentToChallenge\"},{\"name\":\"terms\",\"kind\":\"object\",\"type\":\"ChallengeTerm\",\"relationName\":\"ChallengeToChallengeTerm\"},{\"name\":\"skills\",\"kind\":\"object\",\"type\":\"ChallengeSkill\",\"relationName\":\"ChallengeToChallengeSkill\"},{\"name\":\"auditLogs\",\"kind\":\"object\",\"type\":\"AuditLog\",\"relationName\":\"AuditLogToChallenge\"},{\"name\":\"memberAccesses\",\"kind\":\"object\",\"type\":\"MemberChallengeAccess\",\"relationName\":\"ChallengeToMemberChallengeAccess\"},{\"name\":\"type\",\"kind\":\"object\",\"type\":\"ChallengeType\",\"relationName\":\"ChallengeToChallengeType\"},{\"name\":\"track\",\"kind\":\"object\",\"type\":\"ChallengeTrack\",\"relationName\":\"ChallengeToChallengeTrack\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"ChallengeToTimelineTemplate\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeType\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isTask\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenges\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeType\"},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"type\":\"ChallengeTimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToChallengeType\"},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeTrack\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"track\",\"kind\":\"enum\",\"type\":\"ChallengeTrackEnum\"},{\"name\":\"challenges\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeTrack\"},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"type\":\"ChallengeTimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\"},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeTimelineTemplate\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trackId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\"},{\"name\":\"track\",\"kind\":\"object\",\"type\":\"ChallengeTrack\",\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\"},{\"name\":\"type\",\"kind\":\"object\",\"type\":\"ChallengeType\",\"relationName\":\"ChallengeTimelineTemplateToChallengeType\"},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"AuditLog\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fieldName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"newValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"AuditLogToChallenge\"}],\"dbName\":null},\"Attachment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"AttachmentToChallenge\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeMetadata\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeMetadata\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Prize\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prizeSet\",\"kind\":\"object\",\"type\":\"ChallengePrizeSet\",\"relationName\":\"ChallengePrizeSetToPrize\"},{\"name\":\"prizeSetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeWinner\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeWinner\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"handle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"placement\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"PrizeSetTypeEnum\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeTerm\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeTerm\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"termId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeSkill\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeSkill\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"skillId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeBilling\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"billingAccountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"markup\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"clientBillingRate\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeBilling\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeLegacy\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewType\",\"kind\":\"enum\",\"type\":\"ReviewTypeEnum\"},{\"name\":\"confidentialityType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"forumId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"directProjectId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"screeningScorecardId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"reviewScorecardId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"isTask\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"useSchedulingAPI\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"pureV5Task\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"pureV5\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"selfService\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"selfServiceCopilot\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"track\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"subTrack\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacySystemId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeLegacyRelation\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeEvent\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeEvent\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeDiscussion\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeDiscussion\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"DiscussionTypeEnum\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"options\",\"kind\":\"object\",\"type\":\"ChallengeDiscussionOption\",\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeDiscussionOption\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"discussion\",\"kind\":\"object\",\"type\":\"ChallengeDiscussion\",\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\"},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"optionKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"optionValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeConstraint\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeConstraint\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"allowedRegistrants\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Phase\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"duration\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengePhases\",\"kind\":\"object\",\"type\":\"ChallengePhase\",\"relationName\":\"ChallengePhaseToPhase\"},{\"name\":\"ChallengeReviewer\",\"kind\":\"object\",\"type\":\"ChallengeReviewer\",\"relationName\":\"ChallengeReviewerToPhase\"},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"DefaultChallengeReviewerToPhase\"}],\"dbName\":null},\"ChallengePhase\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"duration\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"scheduledStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scheduledEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"actualStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"actualEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"constraints\",\"kind\":\"object\",\"type\":\"ChallengePhaseConstraint\",\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengePhase\"},{\"name\":\"phase\",\"kind\":\"object\",\"type\":\"Phase\",\"relationName\":\"ChallengePhaseToPhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengePhaseConstraint\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengePhaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"challengePhase\",\"kind\":\"object\",\"type\":\"ChallengePhase\",\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengePrizeSet\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"PrizeSetTypeEnum\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prizes\",\"kind\":\"object\",\"type\":\"Prize\",\"relationName\":\"ChallengePrizeSetToPrize\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengePrizeSet\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeReviewer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"ReviewOpportunityTypeEnum\"},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeReviewer\"},{\"name\":\"phase\",\"kind\":\"object\",\"type\":\"Phase\",\"relationName\":\"ChallengeReviewerToPhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"DefaultChallengeReviewer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trackId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"phaseName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"opportunityType\",\"kind\":\"enum\",\"type\":\"ReviewOpportunityTypeEnum\"},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"challengeType\",\"kind\":\"object\",\"type\":\"ChallengeType\",\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\"},{\"name\":\"challengeTrack\",\"kind\":\"object\",\"type\":\"ChallengeTrack\",\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\"},{\"name\":\"phase\",\"kind\":\"object\",\"type\":\"Phase\",\"relationName\":\"DefaultChallengeReviewerToPhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"TimelineTemplate\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"phases\",\"kind\":\"object\",\"type\":\"TimelineTemplatePhase\",\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeTimelineTemplates\",\"kind\":\"object\",\"type\":\"ChallengeTimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\"},{\"name\":\"challenges\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToTimelineTemplate\"},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\"}],\"dbName\":null},\"TimelineTemplatePhase\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"defaultDuration\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\"}],\"dbName\":null},\"MemberChallengeAccess\":{\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToMemberChallengeAccess\"}],\"dbName\":\"MemberChallengeAccess\"}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Challenge\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"privateDescription\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeSource\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descriptionFormat\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"projectId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trackId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"overviewTotalPrizes\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"numOfRegistrants\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"numOfSubmissions\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"numOfCheckpointSubmissions\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"currentPhaseNames\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"wiproAllowed\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"funChallenge\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"tags\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"groups\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"taskIsTask\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"taskIsAssigned\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"taskMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"submissionStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"submissionEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"registrationStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"registrationEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"startDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"billingRecord\",\"kind\":\"object\",\"type\":\"ChallengeBilling\",\"relationName\":\"ChallengeToChallengeBilling\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"legacyRecord\",\"kind\":\"object\",\"type\":\"ChallengeLegacy\",\"relationName\":\"ChallengeLegacyRelation\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"ChallengeStatusEnum\"},{\"name\":\"constraintRecord\",\"kind\":\"object\",\"type\":\"ChallengeConstraint\",\"relationName\":\"ChallengeToChallengeConstraint\"},{\"name\":\"events\",\"kind\":\"object\",\"type\":\"ChallengeEvent\",\"relationName\":\"ChallengeToChallengeEvent\"},{\"name\":\"discussions\",\"kind\":\"object\",\"type\":\"ChallengeDiscussion\",\"relationName\":\"ChallengeToChallengeDiscussion\"},{\"name\":\"metadata\",\"kind\":\"object\",\"type\":\"ChallengeMetadata\",\"relationName\":\"ChallengeToChallengeMetadata\"},{\"name\":\"phases\",\"kind\":\"object\",\"type\":\"ChallengePhase\",\"relationName\":\"ChallengeToChallengePhase\"},{\"name\":\"prizeSets\",\"kind\":\"object\",\"type\":\"ChallengePrizeSet\",\"relationName\":\"ChallengeToChallengePrizeSet\"},{\"name\":\"reviewers\",\"kind\":\"object\",\"type\":\"ChallengeReviewer\",\"relationName\":\"ChallengeToChallengeReviewer\"},{\"name\":\"winners\",\"kind\":\"object\",\"type\":\"ChallengeWinner\",\"relationName\":\"ChallengeToChallengeWinner\"},{\"name\":\"attachments\",\"kind\":\"object\",\"type\":\"Attachment\",\"relationName\":\"AttachmentToChallenge\"},{\"name\":\"terms\",\"kind\":\"object\",\"type\":\"ChallengeTerm\",\"relationName\":\"ChallengeToChallengeTerm\"},{\"name\":\"skills\",\"kind\":\"object\",\"type\":\"ChallengeSkill\",\"relationName\":\"ChallengeToChallengeSkill\"},{\"name\":\"auditLogs\",\"kind\":\"object\",\"type\":\"AuditLog\",\"relationName\":\"AuditLogToChallenge\"},{\"name\":\"memberAccesses\",\"kind\":\"object\",\"type\":\"MemberChallengeAccess\",\"relationName\":\"ChallengeToMemberChallengeAccess\"},{\"name\":\"type\",\"kind\":\"object\",\"type\":\"ChallengeType\",\"relationName\":\"ChallengeToChallengeType\"},{\"name\":\"track\",\"kind\":\"object\",\"type\":\"ChallengeTrack\",\"relationName\":\"ChallengeToChallengeTrack\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"ChallengeToTimelineTemplate\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeType\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isTask\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenges\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeType\"},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"type\":\"ChallengeTimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToChallengeType\"},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeTrack\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"track\",\"kind\":\"enum\",\"type\":\"ChallengeTrackEnum\"},{\"name\":\"challenges\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeTrack\"},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"type\":\"ChallengeTimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\"},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeTimelineTemplate\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trackId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\"},{\"name\":\"track\",\"kind\":\"object\",\"type\":\"ChallengeTrack\",\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\"},{\"name\":\"type\",\"kind\":\"object\",\"type\":\"ChallengeType\",\"relationName\":\"ChallengeTimelineTemplateToChallengeType\"},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"AuditLog\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fieldName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"newValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"AuditLogToChallenge\"}],\"dbName\":null},\"Attachment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"AttachmentToChallenge\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeMetadata\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeMetadata\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Prize\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prizeSet\",\"kind\":\"object\",\"type\":\"ChallengePrizeSet\",\"relationName\":\"ChallengePrizeSetToPrize\"},{\"name\":\"prizeSetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeWinner\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeWinner\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"handle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"placement\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"PrizeSetTypeEnum\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeTerm\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeTerm\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"termId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeSkill\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeSkill\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"skillId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeBilling\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"billingAccountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"markup\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"clientBillingRate\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeBilling\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeLegacy\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewType\",\"kind\":\"enum\",\"type\":\"ReviewTypeEnum\"},{\"name\":\"confidentialityType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"forumId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"directProjectId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"screeningScorecardId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"reviewScorecardId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"isTask\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"useSchedulingAPI\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"pureV5Task\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"pureV5\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"selfService\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"selfServiceCopilot\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"track\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"subTrack\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacySystemId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeLegacyRelation\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeEvent\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeEvent\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeDiscussion\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeDiscussion\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"DiscussionTypeEnum\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"options\",\"kind\":\"object\",\"type\":\"ChallengeDiscussionOption\",\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeDiscussionOption\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"discussion\",\"kind\":\"object\",\"type\":\"ChallengeDiscussion\",\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\"},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"optionKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"optionValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeConstraint\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeConstraint\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"allowedRegistrants\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Phase\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"duration\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengePhases\",\"kind\":\"object\",\"type\":\"ChallengePhase\",\"relationName\":\"ChallengePhaseToPhase\"},{\"name\":\"ChallengeReviewer\",\"kind\":\"object\",\"type\":\"ChallengeReviewer\",\"relationName\":\"ChallengeReviewerToPhase\"},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"DefaultChallengeReviewerToPhase\"}],\"dbName\":null},\"ChallengePhase\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"duration\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"scheduledStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scheduledEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"actualStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"actualEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"constraints\",\"kind\":\"object\",\"type\":\"ChallengePhaseConstraint\",\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengePhase\"},{\"name\":\"phase\",\"kind\":\"object\",\"type\":\"Phase\",\"relationName\":\"ChallengePhaseToPhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengePhaseConstraint\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengePhaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"challengePhase\",\"kind\":\"object\",\"type\":\"ChallengePhase\",\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengePrizeSet\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"PrizeSetTypeEnum\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prizes\",\"kind\":\"object\",\"type\":\"Prize\",\"relationName\":\"ChallengePrizeSetToPrize\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengePrizeSet\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeReviewer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"ReviewOpportunityTypeEnum\"},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeReviewer\"},{\"name\":\"phase\",\"kind\":\"object\",\"type\":\"Phase\",\"relationName\":\"ChallengeReviewerToPhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"DefaultChallengeReviewer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trackId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"phaseName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"opportunityType\",\"kind\":\"enum\",\"type\":\"ReviewOpportunityTypeEnum\"},{\"name\":\"aiConfigTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"challengeType\",\"kind\":\"object\",\"type\":\"ChallengeType\",\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\"},{\"name\":\"challengeTrack\",\"kind\":\"object\",\"type\":\"ChallengeTrack\",\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\"},{\"name\":\"phase\",\"kind\":\"object\",\"type\":\"Phase\",\"relationName\":\"DefaultChallengeReviewerToPhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"TimelineTemplate\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"phases\",\"kind\":\"object\",\"type\":\"TimelineTemplatePhase\",\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeTimelineTemplates\",\"kind\":\"object\",\"type\":\"ChallengeTimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\"},{\"name\":\"challenges\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToTimelineTemplate\"},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\"}],\"dbName\":null},\"TimelineTemplatePhase\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"defaultDuration\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\"}],\"dbName\":null},\"MemberChallengeAccess\":{\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToMemberChallengeAccess\"}],\"dbName\":\"MemberChallengeAccess\"}},\"enums\":{},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.engineWasm = { getRuntime: async () => require('./query_engine_bg.js'), From d86d9cba45db24a99a00a4b2cc9c02d7de7a5801 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 2 Mar 2026 10:24:43 +0200 Subject: [PATCH 04/43] PM-4062 #30m fix migration file --- .../20260225100000_rename_default_ai_workflow_id/migration.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prisma/migrations/20260225100000_rename_default_ai_workflow_id/migration.sql b/prisma/migrations/20260225100000_rename_default_ai_workflow_id/migration.sql index 15ee2f5..2832de5 100644 --- a/prisma/migrations/20260225100000_rename_default_ai_workflow_id/migration.sql +++ b/prisma/migrations/20260225100000_rename_default_ai_workflow_id/migration.sql @@ -1 +1 @@ -ALTER TABLE "DefaultChallengeReviewer" RENAME COLUMN "isAIReviewer" TO "aiConfigTemplateId"; \ No newline at end of file +ALTER TABLE "DefaultChallengeReviewer" RENAME COLUMN "aiWorkflowId" TO "aiConfigTemplateId"; \ No newline at end of file From 9247eaba1cc71295e41fb6fd2187adcd036d5da9 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Tue, 3 Mar 2026 16:20:45 +1100 Subject: [PATCH 05/43] Better use of projects-api-v6 --- src/common/challenge-helper.js | 6 +++++- src/common/project-helper.js | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index b3a2047..9b56b5c 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -52,7 +52,11 @@ class ChallengeHelper { let token = await getM2MToken(); const url = `${config.PROJECTS_API_URL}/${projectId}`; try { - const res = await axios.get(url, { headers: { Authorization: `Bearer ${token}` } }); + const res = await axios.get(url, { + headers: { Authorization: `Bearer ${token}` }, + // projects-api-v6 omits members unless explicitly requested. + params: { fields: "members" }, + }); if (currentUser.isMachine || hasAdminRole(currentUser)) { return res.data; } diff --git a/src/common/project-helper.js b/src/common/project-helper.js index d7cabc7..3fb2e12 100644 --- a/src/common/project-helper.js +++ b/src/common/project-helper.js @@ -10,7 +10,8 @@ const logger = require("./logger"); class ProjectHelper { /** - * Get Project Details + * Get Project Details. + * Requests project members explicitly so caller membership can be validated. * @param {String} projectId the project id * @param {String} currentUser the user * @@ -23,6 +24,8 @@ class ProjectHelper { try { const res = await axios.get(url, { headers: { Authorization: `Bearer ${token}` }, + // projects-api-v6 omits members unless explicitly requested. + params: { fields: "members" }, }); logger.debug( `projectHelper.getProject: response status ${res.status} for project ${projectId}` From cb6a88314175fa4262c5b6c951d7bb2107fe3dc1 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Fri, 6 Mar 2026 17:15:01 +0200 Subject: [PATCH 06/43] PM-3926 #time 2h on challenge creation make sure to add the ai screening phase after the submission phase --- .../migration.sql | 23 +++++ src/common/challenge-helper.js | 86 ++++++++++++++++++- src/scripts/seed/Phase.json | 11 +++ src/services/ChallengeService.js | 20 +++++ 4 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 prisma/migrations/20260306100000_add_ai_screening_phase/migration.sql diff --git a/prisma/migrations/20260306100000_add_ai_screening_phase/migration.sql b/prisma/migrations/20260306100000_add_ai_screening_phase/migration.sql new file mode 100644 index 0000000..29e70f3 --- /dev/null +++ b/prisma/migrations/20260306100000_add_ai_screening_phase/migration.sql @@ -0,0 +1,23 @@ +-- Insert AI Screening phase +INSERT INTO "Phase" ( + "id", + "name", + "description", + "isOpen", + "duration", + "createdAt", + "createdBy", + "updatedAt", + "updatedBy" +) VALUES ( + '9f4e3b2a-7c1d-4e9f-b8a6-5d3c1a9f2b4e', + 'AI Screening', + 'AI Screening Phase', + true, + 14400, + '2025-03-10T13:08:02.378Z', + 'topcoder user', + '2025-03-10T13:08:02.378Z', + 'topcoder user' +) +ON CONFLICT DO NOTHING; diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index fd3e196..246574f 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -3,9 +3,11 @@ const challengeTrackService = require("../services/ChallengeTrackService"); const timelineTemplateService = require("../services/TimelineTemplateService"); const HttpStatus = require("http-status-codes"); const _ = require("lodash"); +const { v4: uuid } = require('uuid'); const errors = require("./errors"); const config = require("config"); const helper = require("./helper"); +const phaseHelper = require("./phase-helper"); const axios = require("axios"); const { getM2MToken } = require("./m2m-helper"); const { hasAdminRole } = require("./role-helper"); @@ -499,7 +501,7 @@ class ChallengeHelper { }); return response.data; } catch (err) { - if (_.get(err, "response.status") === HttpStatus.NOT_FOUND) { + if (_.get(err, "response.status") === HttpStatus.StatusCodes.NOT_FOUND) { throw new errors.BadRequestError( `AI review template with id: ${templateId} doesn't exist` ); @@ -509,6 +511,88 @@ class ChallengeHelper { } } + /** + * Add AI Screening phase for challenges with AI reviewers. + * The AI screening phase is positioned after submission and allocated 4 hours by default. + * + * @param {Object} challenge challenge payload (mutated in-place) + * @param {Object} prisma Prisma client + * @param {Function} logDebugMessage optional logging function + */ + async addAIScreeningPhaseForChallengeCreation(challenge, prisma, logDebugMessage = () => {}) { + if (!challenge || !challenge.phases || !Array.isArray(challenge.reviewers)) { + return; + } + + // Check if there are any AI reviewers + const hasAIReviewers = challenge.reviewers.some((reviewer) => !reviewer.isMemberReview && reviewer.aiWorkflowId); + + if (!hasAIReviewers) { + logDebugMessage("no AI reviewers found, skipping AI screening phase creation"); + return; + } + + // Check if AI Screening phase already exists + const aiScreeningPhaseExists = challenge.phases.some((phase) => phase.name === "AI Screening"); + if (aiScreeningPhaseExists) { + logDebugMessage("AI screening phase already exists, skipping creation"); + return; + } + + // Find the submission phase + const submissionPhaseName = SUBMISSION_PHASE_PRIORITY.find((name) => + challenge.phases.some((phase) => phase.name === name) + ); + + if (!submissionPhaseName) { + throw new errors.BadRequestError( + `Cannot add AI screening phase: no submission phase found in challenge` + ); + } + + // Get the AI Screening phase definition from the database + const { phaseDefinitionMap } = await phaseHelper.getPhaseDefinitionsAndMap(); + const aiScreeningPhaseDefEntry = Array.from(phaseDefinitionMap.entries()).find( + ([_, phase]) => phase.name === "AI Screening" + ); + + if (!aiScreeningPhaseDefEntry) { + throw new errors.BadRequestError( + `AI Screening phase definition not found in the system` + ); + } + + const [aiScreeningPhaseId, aiScreeningPhaseDef] = aiScreeningPhaseDefEntry; + + // Find the submission phase in the challenge phases + const submissionPhase = challenge.phases.find((phase) => phase.name === submissionPhaseName); + if (!submissionPhase) { + throw new errors.BadRequestError( + `Cannot add AI screening phase: submission phase not found in challenge phases` + ); + } + + // Create the AI Screening challenge phase + const aiScreeningPhase = { + id: uuid(), + phaseId: aiScreeningPhaseId, + name: "AI Screening", + description: aiScreeningPhaseDef.description, + duration: 14400, // 4 hours in seconds + isOpen: false, + predecessor: submissionPhase.phaseId, // predecessor is the submission phase's phaseId + constraints: [], + scheduledStartDate: undefined, + scheduledEndDate: undefined, + actualStartDate: undefined, + actualEndDate: undefined, + }; + + // Add the AI screening phase to the phases array + challenge.phases.push(aiScreeningPhase); + logDebugMessage(`AI screening phase added (phaseId=${aiScreeningPhase.phaseId})`); + } + async validateChallengeUpdateRequest(currentUser, challenge, data, challengeResources) { if (process.env.LOCAL != "true") { await helper.ensureUserCanModifyChallenge(currentUser, challenge, challengeResources); diff --git a/src/scripts/seed/Phase.json b/src/scripts/seed/Phase.json index b89745e..49404ed 100644 --- a/src/scripts/seed/Phase.json +++ b/src/scripts/seed/Phase.json @@ -207,5 +207,16 @@ "createdBy": "topcoder user", "updatedAt": "2025-03-10T13:08:02.378Z", "updatedBy": "topcoder user" + }, + { + "id": "9f4e3b2a-7c1d-4e9f-b8a6-5d3c1a9f2b4e", + "name": "AI Screening", + "description": "AI Screening Phase", + "isOpen": true, + "duration": 14400, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" } ] diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index ccabb0c..9ea4ca8 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -1793,6 +1793,26 @@ async function createChallenge(currentUser, challenge, userToken) { debugLog, ) : []; + // Add AI screening phase if AI reviewers are assigned + logger.debug( + `createChallenge: checking if AI screening phase needs to be added ${buildLogContext()}` + ); + await challengeHelper.addAIScreeningPhaseForChallengeCreation( + challenge, + prisma, + debugLog, + ); + + // Recalculate end date after potentially adding AI screening phase + if (challenge.phases && challenge.phases.length > 0) { + challenge.endDate = helper.calculateChallengeEndDate(challenge); + logger.debug( + `createChallenge: recalculated endDate after phase adjustment (endDate=${ + challenge.endDate + }) ${buildLogContext()}` + ); + } + const prismaModel = prismaHelper.convertChallengeSchemaToPrisma(currentUser, challenge); logger.info( `createChallenge: creating challenge record via prisma ${buildLogContext()} phaseCount=${_.get( From da5ac6ff6fc114f32384ff21c1ec837d54377745 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Fri, 6 Mar 2026 17:21:47 +0200 Subject: [PATCH 07/43] deploy to dev --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3c0c8c6..d8c0ec4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -92,6 +92,7 @@ workflows: - develop - security - PM-3351 + - PM-3926_ai-screening-phase - "build-qa": context: org-global From ea21c0c1ba75f91653b117dd10f49f9546eb13e6 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Fri, 6 Mar 2026 18:05:12 +0200 Subject: [PATCH 08/43] PM-3926 - ensure ai screening phase is added after submission phase --- src/common/challenge-helper.js | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index 246574f..9c93add 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -3,7 +3,6 @@ const challengeTrackService = require("../services/ChallengeTrackService"); const timelineTemplateService = require("../services/TimelineTemplateService"); const HttpStatus = require("http-status-codes"); const _ = require("lodash"); -const { v4: uuid } = require('uuid'); const errors = require("./errors"); const config = require("config"); const helper = require("./helper"); @@ -572,9 +571,15 @@ class ChallengeHelper { ); } + const reviewPhases = challenge.phases.filter( + (phase) => + phase.name && + phase.name.toLowerCase().includes("review") && + phase.predecessor === submissionPhase.phaseId + ); + // Create the AI Screening challenge phase const aiScreeningPhase = { - id: uuid(), phaseId: aiScreeningPhaseId, name: "AI Screening", description: aiScreeningPhaseDef.description, @@ -588,9 +593,24 @@ class ChallengeHelper { actualEndDate: undefined, }; - // Add the AI screening phase to the phases array - challenge.phases.push(aiScreeningPhase); - logDebugMessage(`AI screening phase added (phaseId=${aiScreeningPhase.phaseId})`); + // Ensure AI Screening is ordered between submission and review phases in the phases array. + const firstReviewIndex = challenge.phases.findIndex( + (phase) => phase.name && phase.name.toLowerCase().includes("review") + ); + if (firstReviewIndex >= 0) { + challenge.phases.splice(firstReviewIndex, 0, aiScreeningPhase); + } else { + challenge.phases.push(aiScreeningPhase); + } + + // Re-link review phase(s) so they start after AI Screening instead of submission. + reviewPhases.forEach((phase) => { + phase.predecessor = aiScreeningPhase.phaseId; + }); + + logDebugMessage( + `AI screening phase added (phaseId=${aiScreeningPhase.phaseId}), updated ${reviewPhases.length} review predecessor(s)` + ); } async validateChallengeUpdateRequest(currentUser, challenge, data, challengeResources) { From da805ad0d458529deac645eb55ebbb0b2202e822 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Fri, 6 Mar 2026 18:16:07 +0200 Subject: [PATCH 09/43] fix sorting for ai screening phase --- src/common/challenge-helper.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index 9c93add..2531b72 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -594,9 +594,8 @@ class ChallengeHelper { }; // Ensure AI Screening is ordered between submission and review phases in the phases array. - const firstReviewIndex = challenge.phases.findIndex( - (phase) => phase.name && phase.name.toLowerCase().includes("review") - ); + const firstReviewIndex = challenge.phases.indexOf(reviewPhases[0]); + logDebugMessage(`(firstReviewIndex=${firstReviewIndex})`) if (firstReviewIndex >= 0) { challenge.phases.splice(firstReviewIndex, 0, aiScreeningPhase); } else { From 6905bed9156a6a90ade3e82f8a26d7761d142298 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 9 Mar 2026 07:37:43 +0200 Subject: [PATCH 10/43] PM-3926 update phases start & end times when adding the ai screening phase --- src/common/challenge-helper.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index 2531b72..e90d697 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -3,6 +3,7 @@ const challengeTrackService = require("../services/ChallengeTrackService"); const timelineTemplateService = require("../services/TimelineTemplateService"); const HttpStatus = require("http-status-codes"); const _ = require("lodash"); +const moment = require("moment"); const errors = require("./errors"); const config = require("config"); const helper = require("./helper"); @@ -607,6 +608,36 @@ class ChallengeHelper { phase.predecessor = aiScreeningPhase.phaseId; }); + // Recalculate phase dates to keep timeline in sync + if (submissionPhase.scheduledEndDate) { + aiScreeningPhase.scheduledStartDate = submissionPhase.scheduledEndDate; + aiScreeningPhase.scheduledEndDate = moment(aiScreeningPhase.scheduledStartDate) + .add(aiScreeningPhase.duration, "seconds") + .toDate() + .toISOString(); + + logDebugMessage( + `AI screening phase dates calculated (start=${aiScreeningPhase.scheduledStartDate}, end=${aiScreeningPhase.scheduledEndDate})` + ); + + // Update dates for review phases that now depend on AI Screening + reviewPhases.forEach((phase) => { + if (_.isNil(phase.actualStartDate)) { + phase.scheduledStartDate = aiScreeningPhase.scheduledEndDate; + if (phase.duration) { + phase.scheduledEndDate = moment(phase.scheduledStartDate) + .add(phase.duration, "seconds") + .toDate() + .toISOString(); + + logDebugMessage( + `Updated ${phase.name} phase dates (start=${phase.scheduledStartDate}, end=${phase.scheduledEndDate})` + ); + } + } + }); + } + logDebugMessage( `AI screening phase added (phaseId=${aiScreeningPhase.phaseId}), updated ${reviewPhases.length} review predecessor(s)` ); From 302a12ec41d9fc5a9ef4f5628f97995139de8f20 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 9 Mar 2026 13:32:19 +0200 Subject: [PATCH 11/43] PM-3926 ensure ai screening phase stays after submission for challenge udpates --- src/common/phase-helper.js | 43 +++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/common/phase-helper.js b/src/common/phase-helper.js index 9dfcaed..0cb8c65 100644 --- a/src/common/phase-helper.js +++ b/src/common/phase-helper.js @@ -8,6 +8,8 @@ const errors = require("./errors"); const timelineTemplateService = require("../services/TimelineTemplateService"); const prisma = require("../common/prisma").getClient(); +const SUBMISSION_PHASE_PRIORITY = ["Topgear Submission", "Topcoder Submission", "Submission"]; + class ChallengePhaseHelper { phaseDefinitionMap = {}; timelineTemplateMap = {}; @@ -98,9 +100,27 @@ class ChallengePhaseHelper { // to incorrectly push earlier phases forward. Sorting by template order prevents that. const orderIndex = new Map(); _.each(timelineTempate, (tplPhase, idx) => orderIndex.set(tplPhase.phaseId, idx)); + const submissionPhaseName = SUBMISSION_PHASE_PRIORITY.find((name) => + _.some(challengePhases, (phase) => phase.name === name) + ); + const submissionPhase = submissionPhaseName + ? _.find(challengePhases, (phase) => phase.name === submissionPhaseName) + : null; + const submissionOrderIndex = _.isNil(submissionPhase) + ? null + : orderIndex.get(submissionPhase.phaseId); const challengePhasesOrdered = _.sortBy( challengePhases, - (p) => orderIndex.get(p.phaseId) ?? Number.MAX_SAFE_INTEGER + (p) => { + const templateOrder = orderIndex.get(p.phaseId); + if (!_.isNil(templateOrder)) { + return templateOrder; + } + if (p.name === "AI Screening" && !_.isNil(submissionOrderIndex)) { + return submissionOrderIndex + 0.5; + } + return Number.MAX_SAFE_INTEGER; + } ); let fixedStartDate = undefined; @@ -159,6 +179,27 @@ class ChallengePhaseHelper { } return updatedPhase; }); + + const aiScreeningPhase = _.find(updatedPhases, (phase) => phase.name === "AI Screening"); + const updateSubmissionPhaseName = SUBMISSION_PHASE_PRIORITY.find((name) => + _.some(updatedPhases, (phase) => phase.name === name) + ); + const updateSubmissionPhase = updateSubmissionPhaseName + ? _.find(updatedPhases, (phase) => phase.name === updateSubmissionPhaseName) + : null; + if (!_.isNil(aiScreeningPhase) && !_.isNil(updateSubmissionPhase)) { + aiScreeningPhase.predecessor = updateSubmissionPhase.phaseId; + _.each(updatedPhases, (phase) => { + if ( + phase.name && + phase.name.toLowerCase().includes("review") && + phase.predecessor === updateSubmissionPhase.phaseId + ) { + phase.predecessor = aiScreeningPhase.phaseId; + } + }); + } + let iterativeReviewSet = false; for (let phase of updatedPhases) { if (_.isNil(phase.predecessor)) { From e202cccf187c0cb5561a27de89b233b469d9237b Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 11 Mar 2026 12:58:32 +0200 Subject: [PATCH 12/43] fix consistency issue --- src/common/challenge-helper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index e90d697..a11d2c4 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -501,7 +501,7 @@ class ChallengeHelper { }); return response.data; } catch (err) { - if (_.get(err, "response.status") === HttpStatus.StatusCodes.NOT_FOUND) { + if (_.get(err, "response.status") === HttpStatus.NOT_FOUND) { throw new errors.BadRequestError( `AI review template with id: ${templateId} doesn't exist` ); From 04183638a6c428cb3b5cad991f58b47b311f5038 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Thu, 12 Mar 2026 08:45:08 +0200 Subject: [PATCH 13/43] PM-3926 - create the ai screening phase when challenge is launched --- src/services/ChallengeService.js | 38 +++++++++++++++----------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 9ea4ca8..8430254 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -1793,25 +1793,7 @@ async function createChallenge(currentUser, challenge, userToken) { debugLog, ) : []; - // Add AI screening phase if AI reviewers are assigned - logger.debug( - `createChallenge: checking if AI screening phase needs to be added ${buildLogContext()}` - ); - await challengeHelper.addAIScreeningPhaseForChallengeCreation( - challenge, - prisma, - debugLog, - ); - - // Recalculate end date after potentially adding AI screening phase - if (challenge.phases && challenge.phases.length > 0) { - challenge.endDate = helper.calculateChallengeEndDate(challenge); - logger.debug( - `createChallenge: recalculated endDate after phase adjustment (endDate=${ - challenge.endDate - }) ${buildLogContext()}` - ); - } + // AI screening phase will be added when challenge is launched (status changed to ACTIVE) const prismaModel = prismaHelper.convertChallengeSchemaToPrisma(currentUser, challenge); logger.info( @@ -2739,7 +2721,23 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { phasesUpdated = true; phasesForUpdate = _.cloneDeep(data.phases); } - const phasesForDates = phasesUpdated ? data.phases : challenge.phases; + // Add AI screening phase if AI reviewers are assigned and challenge is being activated + if (isStatusChangingToActive) { + logger.debug(`updateChallenge: checking if AI screening phase needs to be added (challengeId=${challengeId})`); + const tempChallenge = { phases: phasesForUpdate || challenge.phases, reviewers: data.reviewers || challenge.reviewers }; + const debugLogForAI = (message) => logger.debug(`updateChallenge(AI screening): ${message} (challengeId=${challengeId})`); + await challengeHelper.addAIScreeningPhaseForChallengeCreation( + tempChallenge, + prisma, + debugLogForAI, + ); + // Update phasesForUpdate with the updated phases after AI screening addition + phasesForUpdate = tempChallenge.phases; + phasesUpdated = true; + data.phases = phasesForUpdate; + } + + let phasesForDates = phasesUpdated ? data.phases : challenge.phases; if (phasesUpdated || data.startDate) { const startSource = From bbfdff71c8117942d412519a817ccae2aee92a6f Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Thu, 12 Mar 2026 17:28:32 +0200 Subject: [PATCH 14/43] Update Trivy action to use latest version --- .github/workflows/trivy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/trivy.yaml b/.github/workflows/trivy.yaml index 7b9fa48..38d108d 100644 --- a/.github/workflows/trivy.yaml +++ b/.github/workflows/trivy.yaml @@ -18,7 +18,7 @@ jobs: uses: actions/checkout@v4 - name: Run Trivy scanner in repo mode - uses: aquasecurity/trivy-action@0.33.1 + uses: aquasecurity/trivy-action@latest with: scan-type: "fs" ignore-unfixed: true From e5a3d9d1c4793e68b3e8b362bcc1c61b1b19919f Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Thu, 12 Mar 2026 17:31:38 +0200 Subject: [PATCH 15/43] Update Trivy action to version 0.35.0 --- .github/workflows/trivy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/trivy.yaml b/.github/workflows/trivy.yaml index 38d108d..9cbcf52 100644 --- a/.github/workflows/trivy.yaml +++ b/.github/workflows/trivy.yaml @@ -18,7 +18,7 @@ jobs: uses: actions/checkout@v4 - name: Run Trivy scanner in repo mode - uses: aquasecurity/trivy-action@latest + uses: aquasecurity/trivy-action@0.35.0 with: scan-type: "fs" ignore-unfixed: true From 5385f6bbcde9ff514da2ed7ab29a4c94057bbf38 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Mon, 16 Mar 2026 16:35:03 +1100 Subject: [PATCH 16/43] Additional support for legacy tracks and types (used in stats) --- docs/swagger.yaml | 49 +++- packages/challenge-prisma-client/edge.js | 16 +- .../challenge-prisma-client/index-browser.js | 3 + packages/challenge-prisma-client/index.d.ts | 171 ++++++++++- packages/challenge-prisma-client/index.js | 16 +- packages/challenge-prisma-client/package.json | 2 +- .../challenge-prisma-client/schema.prisma | 6 + packages/challenge-prisma-client/wasm.js | 16 +- .../migration.sql | 64 +++++ prisma/schema.prisma | 6 + src/scripts/seed/ChallengeTrack.json | 66 +++-- src/scripts/seed/ChallengeType.json | 269 +++++++++++++++--- src/services/ChallengeTrackService.js | 29 +- src/services/ChallengeTypeService.js | 52 +++- test/unit/ChallengeTrackService.test.js | 165 ++++++----- test/unit/ChallengeTypeService.legacy.test.js | 100 +++++++ 16 files changed, 848 insertions(+), 182 deletions(-) create mode 100644 prisma/migrations/20260316090000_add_legacy_type_visibility_flags/migration.sql create mode 100644 test/unit/ChallengeTypeService.legacy.test.js diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 434463d..c3706ee 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -756,6 +756,16 @@ paths: description: Filter by abbreviation. Partial matches are allowed. required: false type: string + - name: legacyId + in: query + description: Filter by numeric legacy id. + required: false + type: integer + - name: isLegacy + in: query + description: Filter by legacy visibility flag. Defaults to false when omitted. + required: false + type: boolean responses: "200": description: OK @@ -1031,6 +1041,21 @@ paths: description: Filter by abbreviation. Partial matches are allowed. required: false type: string + - name: legacyId + in: query + description: Filter by numeric legacy id. + required: false + type: integer + - name: track + in: query + description: Filter by canonical track enum. + required: false + type: string + - name: isLegacy + in: query + description: Filter by legacy visibility flag. Defaults to false when omitted. + required: false + type: boolean responses: "200": description: OK @@ -2965,7 +2990,7 @@ definitions: selfServiceCopilot: type: string cancelReason: - type: string + type: string billing: type: object properties: @@ -3495,6 +3520,11 @@ definitions: default: false abbreviation: type: string + legacyId: + type: integer + isLegacy: + type: boolean + default: false required: - name - isActive @@ -3514,6 +3544,10 @@ definitions: default: false abbreviation: type: string + legacyId: + type: integer + isLegacy: + type: boolean ChallengeTrack: type: object allOf: @@ -3537,6 +3571,13 @@ definitions: type: boolean abbreviation: type: string + legacyId: + type: integer + track: + type: string + isLegacy: + type: boolean + default: false required: - name - isActive @@ -3552,6 +3593,12 @@ definitions: type: boolean abbreviation: type: string + legacyId: + type: integer + track: + type: string + isLegacy: + type: boolean Phase: type: object allOf: diff --git a/packages/challenge-prisma-client/edge.js b/packages/challenge-prisma-client/edge.js index fe7c6fa..1cd1d88 100644 --- a/packages/challenge-prisma-client/edge.js +++ b/packages/challenge-prisma-client/edge.js @@ -137,6 +137,8 @@ exports.Prisma.ChallengeTypeScalarFieldEnum = { isActive: 'isActive', isTask: 'isTask', abbreviation: 'abbreviation', + legacyId: 'legacyId', + isLegacy: 'isLegacy', createdAt: 'createdAt', createdBy: 'createdBy', updatedAt: 'updatedAt', @@ -151,6 +153,7 @@ exports.Prisma.ChallengeTrackScalarFieldEnum = { abbreviation: 'abbreviation', legacyId: 'legacyId', track: 'track', + isLegacy: 'isLegacy', createdAt: 'createdAt', createdBy: 'createdBy', updatedAt: 'updatedAt', @@ -805,7 +808,7 @@ const config = { "value": "prisma-client-js" }, "output": { - "value": "/home/vasea/work/topcoder/challenge-api-v6/packages/challenge-prisma-client", + "value": "/home/jmgasper/Documents/Git/v6/challenge-api-v6/packages/challenge-prisma-client", "fromEnvVar": null }, "config": { @@ -827,12 +830,11 @@ const config = { "postgresqlExtensions", "views" ], - "sourceFilePath": "/home/vasea/work/topcoder/challenge-api-v6/prisma/schema.prisma", + "sourceFilePath": "/home/jmgasper/Documents/Git/v6/challenge-api-v6/prisma/schema.prisma", "isCustomOutput": true }, "relativeEnvPaths": { - "rootEnvPath": null, - "schemaEnvPath": "../../.env" + "rootEnvPath": null }, "relativePath": "../../prisma", "clientVersion": "6.19.0", @@ -850,13 +852,13 @@ const config = { } } }, - "inlineSchema": "datasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/challenge-prisma-client\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\n// Enum for allowed challenge track values (matches app-constants)\nenum ChallengeTrackEnum {\n DESIGN\n DATA_SCIENCE\n DEVELOPMENT\n QUALITY_ASSURANCE\n}\n\nenum ReviewTypeEnum {\n COMMUNITY\n INTERNAL\n SYSTEM\n PROVISIONAL\n EXAMPLE\n}\n\nenum DiscussionTypeEnum {\n CHALLENGE\n}\n\nenum ChallengeStatusEnum {\n NEW\n DRAFT\n APPROVED\n ACTIVE\n COMPLETED\n DELETED\n CANCELLED\n CANCELLED_FAILED_REVIEW\n CANCELLED_FAILED_SCREENING\n CANCELLED_ZERO_SUBMISSIONS\n CANCELLED_WINNER_UNRESPONSIVE\n CANCELLED_CLIENT_REQUEST\n CANCELLED_REQUIREMENTS_INFEASIBLE\n CANCELLED_ZERO_REGISTRATIONS\n CANCELLED_PAYMENT_FAILED\n}\n\nenum PrizeSetTypeEnum {\n PLACEMENT\n COPILOT\n REVIEWER\n PASSED_REVIEW\n CHECKPOINT\n}\n\n// Enum for review opportunity types on reviewers\nenum ReviewOpportunityTypeEnum {\n REGULAR_REVIEW\n COMPONENT_DEV_REVIEW\n SPEC_REVIEW\n ITERATIVE_REVIEW\n SCENARIOS_REVIEW\n}\n\n//////////////////////////////////////////\n// Main Challenge model\n//////////////////////////////////////////\n\nmodel Challenge {\n id String @id @default(uuid())\n name String\n description String?\n privateDescription String?\n challengeSource String?\n descriptionFormat String?\n projectId Int? // frequently queried field\n typeId String\n trackId String // FK for relation in ChallengeTrack\n timelineTemplateId String? // now used as foreign key to ChallengeTimelineTemplate\n overviewTotalPrizes Float? // stored from overview.totalPrizes\n numOfRegistrants Int @default(0)\n numOfSubmissions Int @default(0)\n numOfCheckpointSubmissions Int @default(0)\n currentPhaseNames String[] // current phase names\n\n wiproAllowed Boolean @default(false)\n funChallenge Boolean @default(false)\n\n // simple arrays for tags and groups (PostgreSQL native array type)\n tags String[]\n groups String[]\n\n // Task information (flattened from challenge.task)\n taskIsTask Boolean @default(false)\n taskIsAssigned Boolean @default(false)\n taskMemberId String?\n\n // Dates for challenge lifecycle\n submissionStartDate DateTime?\n submissionEndDate DateTime?\n registrationStartDate DateTime?\n registrationEndDate DateTime?\n startDate DateTime?\n endDate DateTime?\n\n // Normalized billing and legacy information (one-to-one)\n billingRecord ChallengeBilling?\n legacyId Int? // Legacy system ID for searching\n legacyRecord ChallengeLegacy? @relation(\"ChallengeLegacyRelation\")\n\n // Additional fields from createChallenge schema\n status ChallengeStatusEnum @default(NEW) // new challenges default to status \"New\"\n // Normalized top‑level constraints (e.g. allowedRegistrants) for a challenge\n constraintRecord ChallengeConstraint?\n\n // Additional normalized relations from createChallenge\n events ChallengeEvent[]\n discussions ChallengeDiscussion[]\n\n // Existing relations (one-to-many) for challenge metadata, phases, prize sets, winners, attachments,\n // terms and skills\n metadata ChallengeMetadata[]\n phases ChallengePhase[]\n prizeSets ChallengePrizeSet[]\n reviewers ChallengeReviewer[]\n winners ChallengeWinner[]\n attachments Attachment[]\n terms ChallengeTerm[]\n skills ChallengeSkill[]\n auditLogs AuditLog[]\n memberAccesses MemberChallengeAccess[]\n\n // Relation to ChallengeType (FK: typeId)\n type ChallengeType @relation(fields: [typeId], references: [id])\n // Relation to ChallengeTrack (FK: trackId)\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n\n // Auditing fields (present in every table)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([projectId])\n @@index([status]) // index added for optimized search by status\n @@index([createdAt])\n @@index([updatedAt])\n @@index([typeId])\n @@index([trackId])\n @@index([groups], type: Gin, map: \"challenge_groups_gin_idx\")\n @@index([submissionStartDate])\n @@index([submissionEndDate])\n @@index([registrationStartDate])\n @@index([registrationEndDate])\n @@index([startDate])\n @@index([endDate])\n @@index([status, startDate])\n @@index([trackId, typeId, status])\n @@index([status, typeId, trackId, createdAt(sort: Desc)], map: \"challenge_status_type_track_created_at_idx\")\n @@index([legacyId])\n @@index([projectId, status])\n}\n\n//////////////////////////////////////////\n// MemberChallengeAccess view – member/challenge pairs from resources schema\n//////////////////////////////////////////\n\nview MemberChallengeAccess {\n challengeId String\n memberId String\n\n challenge Challenge @relation(fields: [challengeId], references: [id])\n\n @@map(\"MemberChallengeAccess\")\n}\n\n//////////////////////////////////////////\n// ChallengeType model\n//////////////////////////////////////////\n\nmodel ChallengeType {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n isTask Boolean @default(false)\n abbreviation String\n\n challenges Challenge[]\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this type\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([abbreviation])\n}\n\n//////////////////////////////////////////\n// ChallengeTrack model\n//////////////////////////////////////////\n\nmodel ChallengeTrack {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean\n abbreviation String\n legacyId Int? // numeric legacy system id (if provided)\n track ChallengeTrackEnum? // enum value from ChallengeTrackEnum\n challenges Challenge[]\n // Opposite relation for ChallengeTimelineTemplate\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this track\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([legacyId])\n}\n\n//////////////////////////////////////////\n// ChallengeTimelineTemplate model\n//////////////////////////////////////////\n\nmodel ChallengeTimelineTemplate {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String // now required per Swagger spec\n\n // Link to the TimelineTemplate model via timelineTemplateId.\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id])\n // Link to the ChallengeTrack model via trackId.\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n // Link to the ChallengeType model via typeId.\n type ChallengeType @relation(fields: [typeId], references: [id])\n\n isDefault Boolean @default(false)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Composite index to support searches/updates by typeId, trackId and timelineTemplateId.\n @@index([typeId, trackId, timelineTemplateId])\n}\n\n//////////////////////////////////////////\n// AuditLog model – tracks field changes\n//////////////////////////////////////////\n\nmodel AuditLog {\n id String @id @default(uuid())\n challengeId String? // optional association with a challenge\n fieldName String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now())\n createdBy String\n memberId String?\n\n // Relation field to connect AuditLog to Challenge.\n challenge Challenge? @relation(fields: [challengeId], references: [id])\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Attachment model – for challenge attachments\n//////////////////////////////////////////\n\nmodel Attachment {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String\n fileSize Int\n url String\n description String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeMetadata model – key/value metadata\n//////////////////////////////////////////\n\nmodel ChallengeMetadata {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String // name of the metadata\n value String // value stored as string for flexibility\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Prize model – individual prize in a prize set\n//////////////////////////////////////////\n\nmodel Prize {\n id String @id @default(uuid())\n description String?\n prizeSet ChallengePrizeSet @relation(fields: [prizeSetId], references: [id], onDelete: Cascade)\n prizeSetId String\n type String // e.g. \"USD\", \"POINT\" (could also be converted to enum later)\n value Float\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeWinner model – record winners for a challenge\n//////////////////////////////////////////\n\nmodel ChallengeWinner {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n userId Int\n handle String\n placement Int\n type PrizeSetTypeEnum\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type, placement])\n}\n\n//////////////////////////////////////////\n// ChallengeTerm model – association of challenge and terms\n//////////////////////////////////////////\n\nmodel ChallengeTerm {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n termId String // Terms API id\n roleId String // UUID for the associated role\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeSkill model – linking challenges with skills\n//////////////////////////////////////////\n\nmodel ChallengeSkill {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n skillId String // Request provided skillId\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeBilling model – normalized billing info\n//////////////////////////////////////////\n\nmodel ChallengeBilling {\n id String @id @default(uuid())\n billingAccountId String?\n markup Float? // in range [0, 100]\n clientBillingRate Float? // in range [0, 100]. Supporting range on postgres is an open issue with prisma https://github.com/prisma/prisma/issues/3287.\n challengeId String @unique\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeLegacy model – normalized legacy info\n//////////////////////////////////////////\n\nmodel ChallengeLegacy {\n id String @id @default(uuid())\n reviewType ReviewTypeEnum @default(INTERNAL)\n confidentialityType String @default(\"public\")\n forumId Int?\n directProjectId Int?\n screeningScorecardId Int?\n reviewScorecardId Int?\n isTask Boolean @default(false)\n useSchedulingAPI Boolean @default(false)\n pureV5Task Boolean @default(false)\n pureV5 Boolean @default(false)\n selfService Boolean @default(false)\n selfServiceCopilot String?\n track String? // as provided in the legacy object\n subTrack String? // as provided in the legacy object\n legacySystemId Int? // represents the external \"legacyId\"\n challengeId String @unique\n challenge Challenge @relation(\"ChallengeLegacyRelation\", fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeEvent model – normalized challenge events\n//////////////////////////////////////////\n\nmodel ChallengeEvent {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n eventId Int\n name String?\n key String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeDiscussion and associated options – normalized discussion channels\n//////////////////////////////////////////\n\nmodel ChallengeDiscussion {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n discussionId String?\n name String\n type DiscussionTypeEnum // updated to use enum\n provider String\n url String?\n options ChallengeDiscussionOption[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\nmodel ChallengeDiscussionOption {\n id String @id @default(uuid())\n discussion ChallengeDiscussion @relation(fields: [discussionId], references: [id], onDelete: Cascade)\n discussionId String\n optionKey String\n optionValue String\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeConstraint model – top-level challenge constraints (e.g. allowed registrants)\n//////////////////////////////////////////\n\nmodel ChallengeConstraint {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String @unique\n allowedRegistrants String[] @default([])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhase – to capture per-phase info from create/update challenge operations\n// Each phase is linked with a challenge and holds a duration and any custom constraints.\n//////////////////////////////////////////\n\nmodel Phase {\n id String @id @default(uuid())\n name String\n description String?\n isOpen Boolean\n duration Int\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Inverse relation for associated challenge phases\n challengePhases ChallengePhase[]\n ChallengeReviewer ChallengeReviewer[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\nmodel ChallengePhase {\n id String @id @default(uuid())\n challengeId String\n phaseId String // foreign key to Phase\n\n name String // phase name\n description String? // description\n isOpen Boolean? @default(false) // if this phase is open\n predecessor String? // predecessor of this phase\n duration Int? // duration in seconds\n scheduledStartDate DateTime? // when the phase is scheduled to start\n scheduledEndDate DateTime?\n actualStartDate DateTime?\n actualEndDate DateTime? // when the phase actually ended\n constraints ChallengePhaseConstraint[]\n\n // Relation fields\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n phase Phase @relation(fields: [phaseId], references: [id])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, isOpen])\n @@index([challengeId, name])\n @@index([challengeId, isOpen, scheduledEndDate, actualEndDate], map: \"challenge_phase_challenge_open_end_idx\")\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhaseConstraint – to capture custom constraints for each phase\n//////////////////////////////////////////\n\nmodel ChallengePhaseConstraint {\n id String @id @default(uuid())\n challengePhaseId String\n name String // the name/key of the constraint\n value Int // numeric value of the constraint (can be changed to Float if needed)\n\n // Relation to the phase\n challengePhase ChallengePhase @relation(fields: [challengePhaseId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengePhaseId])\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePrizeSet – to group prizes for a challenge\n//////////////////////////////////////////\n\nmodel ChallengePrizeSet {\n id String @id @default(uuid())\n challengeId String\n type PrizeSetTypeEnum // using enum instead of string\n description String?\n prizes Prize[]\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type])\n}\n\n//////////////////////////////////////////\n// ChallengeReviewer model – reviewers for a challenge, both AI and member\n//////////////////////////////////////////\n\nmodel ChallengeReviewer {\n id String @id @default(uuid())\n challengeId String\n\n // Reviewer configuration\n scorecardId String\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseId String\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n type ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n // Relation to the phase\n phase Phase @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([phaseId])\n @@index([challengeId, phaseId])\n}\n\n//////////////////////////////////////////\n// DefaultChallengeReviewer model – default reviewers by type and track\n//////////////////////////////////////////\n\nmodel DefaultChallengeReviewer {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String?\n // Reviewer configuration (mirrors ChallengeReviewer)\n scorecardId String?\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseName String\n // Optional explicit link to Phase for better fidelity\n phaseId String?\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n opportunityType ReviewOpportunityTypeEnum?\n aiConfigTemplateId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relations\n challengeType ChallengeType @relation(fields: [typeId], references: [id])\n challengeTrack ChallengeTrack @relation(fields: [trackId], references: [id])\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n // Relation to Phase (optional for backward compatibility with phaseName)\n phase Phase? @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([typeId, trackId])\n @@index([typeId, trackId, timelineTemplateId])\n @@index([phaseId])\n}\n\n//////////////////////////////////////////\n// TimelineTemplate model – defines timeline templates\n//////////////////////////////////////////\nmodel TimelineTemplate {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n phases TimelineTemplatePhase[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Opposite relation field, linking back to ChallengeTimelineTemplate.\n challengeTimelineTemplates ChallengeTimelineTemplate[]\n\n // Opposite relation field for Challenge.\n challenges Challenge[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\n//////////////////////////////////////////\n// TimelineTemplatePhase model – phases associated with a timeline template\n//////////////////////////////////////////\nmodel TimelineTemplatePhase {\n id String @id @default(uuid())\n timelineTemplateId String\n phaseId String // identifier for the phase\n predecessor String? // optional predecessor phase id\n defaultDuration Int // duration (in minutes, hours, etc.) as per business rules\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id], onDelete: Cascade)\n\n @@index([timelineTemplateId])\n @@index([timelineTemplateId, phaseId])\n}\n", - "inlineSchemaHash": "a29362a60aa8828fffd5212d1cf4900622e5c305df3ed19e69c46649a22f7174", + "inlineSchema": "datasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/challenge-prisma-client\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\n// Enum for allowed challenge track values (matches app-constants)\nenum ChallengeTrackEnum {\n DESIGN\n DATA_SCIENCE\n DEVELOPMENT\n QUALITY_ASSURANCE\n}\n\nenum ReviewTypeEnum {\n COMMUNITY\n INTERNAL\n SYSTEM\n PROVISIONAL\n EXAMPLE\n}\n\nenum DiscussionTypeEnum {\n CHALLENGE\n}\n\nenum ChallengeStatusEnum {\n NEW\n DRAFT\n APPROVED\n ACTIVE\n COMPLETED\n DELETED\n CANCELLED\n CANCELLED_FAILED_REVIEW\n CANCELLED_FAILED_SCREENING\n CANCELLED_ZERO_SUBMISSIONS\n CANCELLED_WINNER_UNRESPONSIVE\n CANCELLED_CLIENT_REQUEST\n CANCELLED_REQUIREMENTS_INFEASIBLE\n CANCELLED_ZERO_REGISTRATIONS\n CANCELLED_PAYMENT_FAILED\n}\n\nenum PrizeSetTypeEnum {\n PLACEMENT\n COPILOT\n REVIEWER\n PASSED_REVIEW\n CHECKPOINT\n}\n\n// Enum for review opportunity types on reviewers\nenum ReviewOpportunityTypeEnum {\n REGULAR_REVIEW\n COMPONENT_DEV_REVIEW\n SPEC_REVIEW\n ITERATIVE_REVIEW\n SCENARIOS_REVIEW\n}\n\n//////////////////////////////////////////\n// Main Challenge model\n//////////////////////////////////////////\n\nmodel Challenge {\n id String @id @default(uuid())\n name String\n description String?\n privateDescription String?\n challengeSource String?\n descriptionFormat String?\n projectId Int? // frequently queried field\n typeId String\n trackId String // FK for relation in ChallengeTrack\n timelineTemplateId String? // now used as foreign key to ChallengeTimelineTemplate\n overviewTotalPrizes Float? // stored from overview.totalPrizes\n numOfRegistrants Int @default(0)\n numOfSubmissions Int @default(0)\n numOfCheckpointSubmissions Int @default(0)\n currentPhaseNames String[] // current phase names\n\n wiproAllowed Boolean @default(false)\n funChallenge Boolean @default(false)\n\n // simple arrays for tags and groups (PostgreSQL native array type)\n tags String[]\n groups String[]\n\n // Task information (flattened from challenge.task)\n taskIsTask Boolean @default(false)\n taskIsAssigned Boolean @default(false)\n taskMemberId String?\n\n // Dates for challenge lifecycle\n submissionStartDate DateTime?\n submissionEndDate DateTime?\n registrationStartDate DateTime?\n registrationEndDate DateTime?\n startDate DateTime?\n endDate DateTime?\n\n // Normalized billing and legacy information (one-to-one)\n billingRecord ChallengeBilling?\n legacyId Int? // Legacy system ID for searching\n legacyRecord ChallengeLegacy? @relation(\"ChallengeLegacyRelation\")\n\n // Additional fields from createChallenge schema\n status ChallengeStatusEnum @default(NEW) // new challenges default to status \"New\"\n // Normalized top‑level constraints (e.g. allowedRegistrants) for a challenge\n constraintRecord ChallengeConstraint?\n\n // Additional normalized relations from createChallenge\n events ChallengeEvent[]\n discussions ChallengeDiscussion[]\n\n // Existing relations (one-to-many) for challenge metadata, phases, prize sets, winners, attachments,\n // terms and skills\n metadata ChallengeMetadata[]\n phases ChallengePhase[]\n prizeSets ChallengePrizeSet[]\n reviewers ChallengeReviewer[]\n winners ChallengeWinner[]\n attachments Attachment[]\n terms ChallengeTerm[]\n skills ChallengeSkill[]\n auditLogs AuditLog[]\n memberAccesses MemberChallengeAccess[]\n\n // Relation to ChallengeType (FK: typeId)\n type ChallengeType @relation(fields: [typeId], references: [id])\n // Relation to ChallengeTrack (FK: trackId)\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n\n // Auditing fields (present in every table)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([projectId])\n @@index([status]) // index added for optimized search by status\n @@index([createdAt])\n @@index([updatedAt])\n @@index([typeId])\n @@index([trackId])\n @@index([groups], type: Gin, map: \"challenge_groups_gin_idx\")\n @@index([submissionStartDate])\n @@index([submissionEndDate])\n @@index([registrationStartDate])\n @@index([registrationEndDate])\n @@index([startDate])\n @@index([endDate])\n @@index([status, startDate])\n @@index([trackId, typeId, status])\n @@index([status, typeId, trackId, createdAt(sort: Desc)], map: \"challenge_status_type_track_created_at_idx\")\n @@index([legacyId])\n @@index([projectId, status])\n}\n\n//////////////////////////////////////////\n// MemberChallengeAccess view – member/challenge pairs from resources schema\n//////////////////////////////////////////\n\nview MemberChallengeAccess {\n challengeId String\n memberId String\n\n challenge Challenge @relation(fields: [challengeId], references: [id])\n\n @@map(\"MemberChallengeAccess\")\n}\n\n//////////////////////////////////////////\n// ChallengeType model\n//////////////////////////////////////////\n\nmodel ChallengeType {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n isTask Boolean @default(false)\n abbreviation String\n legacyId Int?\n isLegacy Boolean @default(false)\n\n challenges Challenge[]\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this type\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([abbreviation])\n @@index([legacyId])\n @@index([isLegacy])\n}\n\n//////////////////////////////////////////\n// ChallengeTrack model\n//////////////////////////////////////////\n\nmodel ChallengeTrack {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean\n abbreviation String\n legacyId Int? // numeric legacy system id (if provided)\n track ChallengeTrackEnum? // enum value from ChallengeTrackEnum\n isLegacy Boolean @default(false)\n challenges Challenge[]\n // Opposite relation for ChallengeTimelineTemplate\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this track\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([legacyId])\n @@index([isLegacy])\n}\n\n//////////////////////////////////////////\n// ChallengeTimelineTemplate model\n//////////////////////////////////////////\n\nmodel ChallengeTimelineTemplate {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String // now required per Swagger spec\n\n // Link to the TimelineTemplate model via timelineTemplateId.\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id])\n // Link to the ChallengeTrack model via trackId.\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n // Link to the ChallengeType model via typeId.\n type ChallengeType @relation(fields: [typeId], references: [id])\n\n isDefault Boolean @default(false)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Composite index to support searches/updates by typeId, trackId and timelineTemplateId.\n @@index([typeId, trackId, timelineTemplateId])\n}\n\n//////////////////////////////////////////\n// AuditLog model – tracks field changes\n//////////////////////////////////////////\n\nmodel AuditLog {\n id String @id @default(uuid())\n challengeId String? // optional association with a challenge\n fieldName String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now())\n createdBy String\n memberId String?\n\n // Relation field to connect AuditLog to Challenge.\n challenge Challenge? @relation(fields: [challengeId], references: [id])\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Attachment model – for challenge attachments\n//////////////////////////////////////////\n\nmodel Attachment {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String\n fileSize Int\n url String\n description String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeMetadata model – key/value metadata\n//////////////////////////////////////////\n\nmodel ChallengeMetadata {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String // name of the metadata\n value String // value stored as string for flexibility\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Prize model – individual prize in a prize set\n//////////////////////////////////////////\n\nmodel Prize {\n id String @id @default(uuid())\n description String?\n prizeSet ChallengePrizeSet @relation(fields: [prizeSetId], references: [id], onDelete: Cascade)\n prizeSetId String\n type String // e.g. \"USD\", \"POINT\" (could also be converted to enum later)\n value Float\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeWinner model – record winners for a challenge\n//////////////////////////////////////////\n\nmodel ChallengeWinner {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n userId Int\n handle String\n placement Int\n type PrizeSetTypeEnum\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type, placement])\n}\n\n//////////////////////////////////////////\n// ChallengeTerm model – association of challenge and terms\n//////////////////////////////////////////\n\nmodel ChallengeTerm {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n termId String // Terms API id\n roleId String // UUID for the associated role\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeSkill model – linking challenges with skills\n//////////////////////////////////////////\n\nmodel ChallengeSkill {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n skillId String // Request provided skillId\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeBilling model – normalized billing info\n//////////////////////////////////////////\n\nmodel ChallengeBilling {\n id String @id @default(uuid())\n billingAccountId String?\n markup Float? // in range [0, 100]\n clientBillingRate Float? // in range [0, 100]. Supporting range on postgres is an open issue with prisma https://github.com/prisma/prisma/issues/3287.\n challengeId String @unique\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeLegacy model – normalized legacy info\n//////////////////////////////////////////\n\nmodel ChallengeLegacy {\n id String @id @default(uuid())\n reviewType ReviewTypeEnum @default(INTERNAL)\n confidentialityType String @default(\"public\")\n forumId Int?\n directProjectId Int?\n screeningScorecardId Int?\n reviewScorecardId Int?\n isTask Boolean @default(false)\n useSchedulingAPI Boolean @default(false)\n pureV5Task Boolean @default(false)\n pureV5 Boolean @default(false)\n selfService Boolean @default(false)\n selfServiceCopilot String?\n track String? // as provided in the legacy object\n subTrack String? // as provided in the legacy object\n legacySystemId Int? // represents the external \"legacyId\"\n challengeId String @unique\n challenge Challenge @relation(\"ChallengeLegacyRelation\", fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeEvent model – normalized challenge events\n//////////////////////////////////////////\n\nmodel ChallengeEvent {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n eventId Int\n name String?\n key String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeDiscussion and associated options – normalized discussion channels\n//////////////////////////////////////////\n\nmodel ChallengeDiscussion {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n discussionId String?\n name String\n type DiscussionTypeEnum // updated to use enum\n provider String\n url String?\n options ChallengeDiscussionOption[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\nmodel ChallengeDiscussionOption {\n id String @id @default(uuid())\n discussion ChallengeDiscussion @relation(fields: [discussionId], references: [id], onDelete: Cascade)\n discussionId String\n optionKey String\n optionValue String\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeConstraint model – top-level challenge constraints (e.g. allowed registrants)\n//////////////////////////////////////////\n\nmodel ChallengeConstraint {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String @unique\n allowedRegistrants String[] @default([])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhase – to capture per-phase info from create/update challenge operations\n// Each phase is linked with a challenge and holds a duration and any custom constraints.\n//////////////////////////////////////////\n\nmodel Phase {\n id String @id @default(uuid())\n name String\n description String?\n isOpen Boolean\n duration Int\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Inverse relation for associated challenge phases\n challengePhases ChallengePhase[]\n ChallengeReviewer ChallengeReviewer[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\nmodel ChallengePhase {\n id String @id @default(uuid())\n challengeId String\n phaseId String // foreign key to Phase\n\n name String // phase name\n description String? // description\n isOpen Boolean? @default(false) // if this phase is open\n predecessor String? // predecessor of this phase\n duration Int? // duration in seconds\n scheduledStartDate DateTime? // when the phase is scheduled to start\n scheduledEndDate DateTime?\n actualStartDate DateTime?\n actualEndDate DateTime? // when the phase actually ended\n constraints ChallengePhaseConstraint[]\n\n // Relation fields\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n phase Phase @relation(fields: [phaseId], references: [id])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, isOpen])\n @@index([challengeId, name])\n @@index([challengeId, isOpen, scheduledEndDate, actualEndDate], map: \"challenge_phase_challenge_open_end_idx\")\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhaseConstraint – to capture custom constraints for each phase\n//////////////////////////////////////////\n\nmodel ChallengePhaseConstraint {\n id String @id @default(uuid())\n challengePhaseId String\n name String // the name/key of the constraint\n value Int // numeric value of the constraint (can be changed to Float if needed)\n\n // Relation to the phase\n challengePhase ChallengePhase @relation(fields: [challengePhaseId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengePhaseId])\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePrizeSet – to group prizes for a challenge\n//////////////////////////////////////////\n\nmodel ChallengePrizeSet {\n id String @id @default(uuid())\n challengeId String\n type PrizeSetTypeEnum // using enum instead of string\n description String?\n prizes Prize[]\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type])\n}\n\n//////////////////////////////////////////\n// ChallengeReviewer model – reviewers for a challenge, both AI and member\n//////////////////////////////////////////\n\nmodel ChallengeReviewer {\n id String @id @default(uuid())\n challengeId String\n\n // Reviewer configuration\n scorecardId String\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseId String\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n type ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n // Relation to the phase\n phase Phase @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([phaseId])\n @@index([challengeId, phaseId])\n}\n\n//////////////////////////////////////////\n// DefaultChallengeReviewer model – default reviewers by type and track\n//////////////////////////////////////////\n\nmodel DefaultChallengeReviewer {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String?\n // Reviewer configuration (mirrors ChallengeReviewer)\n scorecardId String?\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseName String\n // Optional explicit link to Phase for better fidelity\n phaseId String?\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n opportunityType ReviewOpportunityTypeEnum?\n aiConfigTemplateId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relations\n challengeType ChallengeType @relation(fields: [typeId], references: [id])\n challengeTrack ChallengeTrack @relation(fields: [trackId], references: [id])\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n // Relation to Phase (optional for backward compatibility with phaseName)\n phase Phase? @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([typeId, trackId])\n @@index([typeId, trackId, timelineTemplateId])\n @@index([phaseId])\n}\n\n//////////////////////////////////////////\n// TimelineTemplate model – defines timeline templates\n//////////////////////////////////////////\nmodel TimelineTemplate {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n phases TimelineTemplatePhase[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Opposite relation field, linking back to ChallengeTimelineTemplate.\n challengeTimelineTemplates ChallengeTimelineTemplate[]\n\n // Opposite relation field for Challenge.\n challenges Challenge[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\n//////////////////////////////////////////\n// TimelineTemplatePhase model – phases associated with a timeline template\n//////////////////////////////////////////\nmodel TimelineTemplatePhase {\n id String @id @default(uuid())\n timelineTemplateId String\n phaseId String // identifier for the phase\n predecessor String? // optional predecessor phase id\n defaultDuration Int // duration (in minutes, hours, etc.) as per business rules\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id], onDelete: Cascade)\n\n @@index([timelineTemplateId])\n @@index([timelineTemplateId, phaseId])\n}\n", + "inlineSchemaHash": "013c60d710a175acc08038f512b16e5030bd0c3b8ccf59cb118c7e55c66e6caf", "copyEngine": true } config.dirname = '/' -config.runtimeDataModel = JSON.parse("{\"models\":{\"Challenge\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"privateDescription\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeSource\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"descriptionFormat\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"projectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"overviewTotalPrizes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfRegistrants\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfCheckpointSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currentPhaseNames\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wiproAllowed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"funChallenge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"groups\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsAssigned\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskMemberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"startDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeBilling\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeLegacy\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ChallengeStatusEnum\",\"nativeType\":null,\"default\":\"NEW\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraintRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeConstraint\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"events\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeEvent\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metadata\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeMetadata\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSets\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"winners\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeWinner\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attachments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Attachment\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"terms\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTerm\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skills\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeSkill\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"auditLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AuditLog\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberAccesses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MemberChallengeAccess\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeType\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTrack\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrackEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AuditLog\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fieldName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"newValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Attachment\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeMetadata\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Prize\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSet\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[\"prizeSetId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSetId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeWinner\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"placement\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTerm\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"termId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeSkill\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skillId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeBilling\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingAccountId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"markup\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"clientBillingRate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeLegacy\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ReviewTypeEnum\",\"nativeType\":null,\"default\":\"INTERNAL\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confidentialityType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":\"public\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"forumId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"directProjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"screeningScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"useSchedulingAPI\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5Task\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfService\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfServiceCopilot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subTrack\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacySystemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeEvent\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"eventId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussion\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DiscussionTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"options\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussionOption\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussionOption\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussion\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[\"discussionId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionKey\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allowedRegistrants\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Phase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false},\"ChallengePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraints\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhaseConstraint\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePhaseConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[\"challengePhaseId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePrizeSet\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizes\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Prize\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"DefaultChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"opportunityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiConfigTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTrack\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"TimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplatePhase\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTimelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"TimelineTemplatePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultDuration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"MemberChallengeAccess\":{\"dbName\":\"MemberChallengeAccess\",\"schema\":null,\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{\"ChallengeTrackEnum\":{\"values\":[{\"name\":\"DESIGN\",\"dbName\":null},{\"name\":\"DATA_SCIENCE\",\"dbName\":null},{\"name\":\"DEVELOPMENT\",\"dbName\":null},{\"name\":\"QUALITY_ASSURANCE\",\"dbName\":null}],\"dbName\":null},\"ReviewTypeEnum\":{\"values\":[{\"name\":\"COMMUNITY\",\"dbName\":null},{\"name\":\"INTERNAL\",\"dbName\":null},{\"name\":\"SYSTEM\",\"dbName\":null},{\"name\":\"PROVISIONAL\",\"dbName\":null},{\"name\":\"EXAMPLE\",\"dbName\":null}],\"dbName\":null},\"DiscussionTypeEnum\":{\"values\":[{\"name\":\"CHALLENGE\",\"dbName\":null}],\"dbName\":null},\"ChallengeStatusEnum\":{\"values\":[{\"name\":\"NEW\",\"dbName\":null},{\"name\":\"DRAFT\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"ACTIVE\",\"dbName\":null},{\"name\":\"COMPLETED\",\"dbName\":null},{\"name\":\"DELETED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_REVIEW\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_SCREENING\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_SUBMISSIONS\",\"dbName\":null},{\"name\":\"CANCELLED_WINNER_UNRESPONSIVE\",\"dbName\":null},{\"name\":\"CANCELLED_CLIENT_REQUEST\",\"dbName\":null},{\"name\":\"CANCELLED_REQUIREMENTS_INFEASIBLE\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_REGISTRATIONS\",\"dbName\":null},{\"name\":\"CANCELLED_PAYMENT_FAILED\",\"dbName\":null}],\"dbName\":null},\"PrizeSetTypeEnum\":{\"values\":[{\"name\":\"PLACEMENT\",\"dbName\":null},{\"name\":\"COPILOT\",\"dbName\":null},{\"name\":\"REVIEWER\",\"dbName\":null},{\"name\":\"PASSED_REVIEW\",\"dbName\":null},{\"name\":\"CHECKPOINT\",\"dbName\":null}],\"dbName\":null},\"ReviewOpportunityTypeEnum\":{\"values\":[{\"name\":\"REGULAR_REVIEW\",\"dbName\":null},{\"name\":\"COMPONENT_DEV_REVIEW\",\"dbName\":null},{\"name\":\"SPEC_REVIEW\",\"dbName\":null},{\"name\":\"ITERATIVE_REVIEW\",\"dbName\":null},{\"name\":\"SCENARIOS_REVIEW\",\"dbName\":null}],\"dbName\":null}},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Challenge\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"privateDescription\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeSource\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"descriptionFormat\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"projectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"overviewTotalPrizes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfRegistrants\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfCheckpointSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currentPhaseNames\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wiproAllowed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"funChallenge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"groups\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsAssigned\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskMemberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"startDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeBilling\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeLegacy\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ChallengeStatusEnum\",\"nativeType\":null,\"default\":\"NEW\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraintRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeConstraint\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"events\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeEvent\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metadata\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeMetadata\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSets\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"winners\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeWinner\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attachments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Attachment\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"terms\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTerm\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skills\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeSkill\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"auditLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AuditLog\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberAccesses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MemberChallengeAccess\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeType\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isLegacy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTrack\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrackEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isLegacy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AuditLog\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fieldName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"newValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Attachment\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeMetadata\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Prize\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSet\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[\"prizeSetId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSetId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeWinner\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"placement\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTerm\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"termId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeSkill\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skillId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeBilling\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingAccountId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"markup\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"clientBillingRate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeLegacy\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ReviewTypeEnum\",\"nativeType\":null,\"default\":\"INTERNAL\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confidentialityType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":\"public\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"forumId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"directProjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"screeningScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"useSchedulingAPI\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5Task\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfService\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfServiceCopilot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subTrack\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacySystemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeEvent\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"eventId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussion\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DiscussionTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"options\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussionOption\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussionOption\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussion\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[\"discussionId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionKey\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allowedRegistrants\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Phase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false},\"ChallengePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraints\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhaseConstraint\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePhaseConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[\"challengePhaseId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePrizeSet\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizes\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Prize\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"DefaultChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"opportunityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiConfigTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTrack\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"TimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplatePhase\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTimelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"TimelineTemplatePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultDuration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"MemberChallengeAccess\":{\"dbName\":\"MemberChallengeAccess\",\"schema\":null,\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{\"ChallengeTrackEnum\":{\"values\":[{\"name\":\"DESIGN\",\"dbName\":null},{\"name\":\"DATA_SCIENCE\",\"dbName\":null},{\"name\":\"DEVELOPMENT\",\"dbName\":null},{\"name\":\"QUALITY_ASSURANCE\",\"dbName\":null}],\"dbName\":null},\"ReviewTypeEnum\":{\"values\":[{\"name\":\"COMMUNITY\",\"dbName\":null},{\"name\":\"INTERNAL\",\"dbName\":null},{\"name\":\"SYSTEM\",\"dbName\":null},{\"name\":\"PROVISIONAL\",\"dbName\":null},{\"name\":\"EXAMPLE\",\"dbName\":null}],\"dbName\":null},\"DiscussionTypeEnum\":{\"values\":[{\"name\":\"CHALLENGE\",\"dbName\":null}],\"dbName\":null},\"ChallengeStatusEnum\":{\"values\":[{\"name\":\"NEW\",\"dbName\":null},{\"name\":\"DRAFT\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"ACTIVE\",\"dbName\":null},{\"name\":\"COMPLETED\",\"dbName\":null},{\"name\":\"DELETED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_REVIEW\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_SCREENING\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_SUBMISSIONS\",\"dbName\":null},{\"name\":\"CANCELLED_WINNER_UNRESPONSIVE\",\"dbName\":null},{\"name\":\"CANCELLED_CLIENT_REQUEST\",\"dbName\":null},{\"name\":\"CANCELLED_REQUIREMENTS_INFEASIBLE\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_REGISTRATIONS\",\"dbName\":null},{\"name\":\"CANCELLED_PAYMENT_FAILED\",\"dbName\":null}],\"dbName\":null},\"PrizeSetTypeEnum\":{\"values\":[{\"name\":\"PLACEMENT\",\"dbName\":null},{\"name\":\"COPILOT\",\"dbName\":null},{\"name\":\"REVIEWER\",\"dbName\":null},{\"name\":\"PASSED_REVIEW\",\"dbName\":null},{\"name\":\"CHECKPOINT\",\"dbName\":null}],\"dbName\":null},\"ReviewOpportunityTypeEnum\":{\"values\":[{\"name\":\"REGULAR_REVIEW\",\"dbName\":null},{\"name\":\"COMPONENT_DEV_REVIEW\",\"dbName\":null},{\"name\":\"SPEC_REVIEW\",\"dbName\":null},{\"name\":\"ITERATIVE_REVIEW\",\"dbName\":null},{\"name\":\"SCENARIOS_REVIEW\",\"dbName\":null}],\"dbName\":null}},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.engineWasm = undefined config.compilerWasm = undefined diff --git a/packages/challenge-prisma-client/index-browser.js b/packages/challenge-prisma-client/index-browser.js index b77eec8..24545d3 100644 --- a/packages/challenge-prisma-client/index-browser.js +++ b/packages/challenge-prisma-client/index-browser.js @@ -165,6 +165,8 @@ exports.Prisma.ChallengeTypeScalarFieldEnum = { isActive: 'isActive', isTask: 'isTask', abbreviation: 'abbreviation', + legacyId: 'legacyId', + isLegacy: 'isLegacy', createdAt: 'createdAt', createdBy: 'createdBy', updatedAt: 'updatedAt', @@ -179,6 +181,7 @@ exports.Prisma.ChallengeTrackScalarFieldEnum = { abbreviation: 'abbreviation', legacyId: 'legacyId', track: 'track', + isLegacy: 'isLegacy', createdAt: 'createdAt', createdBy: 'createdBy', updatedAt: 'updatedAt', diff --git a/packages/challenge-prisma-client/index.d.ts b/packages/challenge-prisma-client/index.d.ts index ff8357e..c9c10e0 100644 --- a/packages/challenge-prisma-client/index.d.ts +++ b/packages/challenge-prisma-client/index.d.ts @@ -5545,10 +5545,20 @@ export namespace Prisma { export type AggregateChallengeType = { _count: ChallengeTypeCountAggregateOutputType | null + _avg: ChallengeTypeAvgAggregateOutputType | null + _sum: ChallengeTypeSumAggregateOutputType | null _min: ChallengeTypeMinAggregateOutputType | null _max: ChallengeTypeMaxAggregateOutputType | null } + export type ChallengeTypeAvgAggregateOutputType = { + legacyId: number | null + } + + export type ChallengeTypeSumAggregateOutputType = { + legacyId: number | null + } + export type ChallengeTypeMinAggregateOutputType = { id: string | null name: string | null @@ -5556,6 +5566,8 @@ export namespace Prisma { isActive: boolean | null isTask: boolean | null abbreviation: string | null + legacyId: number | null + isLegacy: boolean | null createdAt: Date | null createdBy: string | null updatedAt: Date | null @@ -5569,6 +5581,8 @@ export namespace Prisma { isActive: boolean | null isTask: boolean | null abbreviation: string | null + legacyId: number | null + isLegacy: boolean | null createdAt: Date | null createdBy: string | null updatedAt: Date | null @@ -5582,6 +5596,8 @@ export namespace Prisma { isActive: number isTask: number abbreviation: number + legacyId: number + isLegacy: number createdAt: number createdBy: number updatedAt: number @@ -5590,6 +5606,14 @@ export namespace Prisma { } + export type ChallengeTypeAvgAggregateInputType = { + legacyId?: true + } + + export type ChallengeTypeSumAggregateInputType = { + legacyId?: true + } + export type ChallengeTypeMinAggregateInputType = { id?: true name?: true @@ -5597,6 +5621,8 @@ export namespace Prisma { isActive?: true isTask?: true abbreviation?: true + legacyId?: true + isLegacy?: true createdAt?: true createdBy?: true updatedAt?: true @@ -5610,6 +5636,8 @@ export namespace Prisma { isActive?: true isTask?: true abbreviation?: true + legacyId?: true + isLegacy?: true createdAt?: true createdBy?: true updatedAt?: true @@ -5623,6 +5651,8 @@ export namespace Prisma { isActive?: true isTask?: true abbreviation?: true + legacyId?: true + isLegacy?: true createdAt?: true createdBy?: true updatedAt?: true @@ -5665,6 +5695,18 @@ export namespace Prisma { * Count returned ChallengeTypes **/ _count?: true | ChallengeTypeCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: ChallengeTypeAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: ChallengeTypeSumAggregateInputType /** * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} * @@ -5698,6 +5740,8 @@ export namespace Prisma { take?: number skip?: number _count?: ChallengeTypeCountAggregateInputType | true + _avg?: ChallengeTypeAvgAggregateInputType + _sum?: ChallengeTypeSumAggregateInputType _min?: ChallengeTypeMinAggregateInputType _max?: ChallengeTypeMaxAggregateInputType } @@ -5709,11 +5753,15 @@ export namespace Prisma { isActive: boolean isTask: boolean abbreviation: string + legacyId: number | null + isLegacy: boolean createdAt: Date createdBy: string updatedAt: Date updatedBy: string _count: ChallengeTypeCountAggregateOutputType | null + _avg: ChallengeTypeAvgAggregateOutputType | null + _sum: ChallengeTypeSumAggregateOutputType | null _min: ChallengeTypeMinAggregateOutputType | null _max: ChallengeTypeMaxAggregateOutputType | null } @@ -5739,6 +5787,8 @@ export namespace Prisma { isActive?: boolean isTask?: boolean abbreviation?: boolean + legacyId?: boolean + isLegacy?: boolean createdAt?: boolean createdBy?: boolean updatedAt?: boolean @@ -5756,6 +5806,8 @@ export namespace Prisma { isActive?: boolean isTask?: boolean abbreviation?: boolean + legacyId?: boolean + isLegacy?: boolean createdAt?: boolean createdBy?: boolean updatedAt?: boolean @@ -5769,6 +5821,8 @@ export namespace Prisma { isActive?: boolean isTask?: boolean abbreviation?: boolean + legacyId?: boolean + isLegacy?: boolean createdAt?: boolean createdBy?: boolean updatedAt?: boolean @@ -5782,13 +5836,15 @@ export namespace Prisma { isActive?: boolean isTask?: boolean abbreviation?: boolean + legacyId?: boolean + isLegacy?: boolean createdAt?: boolean createdBy?: boolean updatedAt?: boolean updatedBy?: boolean } - export type ChallengeTypeOmit = $Extensions.GetOmit<"id" | "name" | "description" | "isActive" | "isTask" | "abbreviation" | "createdAt" | "createdBy" | "updatedAt" | "updatedBy", ExtArgs["result"]["challengeType"]> + export type ChallengeTypeOmit = $Extensions.GetOmit<"id" | "name" | "description" | "isActive" | "isTask" | "abbreviation" | "legacyId" | "isLegacy" | "createdAt" | "createdBy" | "updatedAt" | "updatedBy", ExtArgs["result"]["challengeType"]> export type ChallengeTypeInclude = { challenges?: boolean | ChallengeType$challengesArgs timelineTemplates?: boolean | ChallengeType$timelineTemplatesArgs @@ -5812,6 +5868,8 @@ export namespace Prisma { isActive: boolean isTask: boolean abbreviation: string + legacyId: number | null + isLegacy: boolean createdAt: Date createdBy: string updatedAt: Date @@ -6248,6 +6306,8 @@ export namespace Prisma { readonly isActive: FieldRef<"ChallengeType", 'Boolean'> readonly isTask: FieldRef<"ChallengeType", 'Boolean'> readonly abbreviation: FieldRef<"ChallengeType", 'String'> + readonly legacyId: FieldRef<"ChallengeType", 'Int'> + readonly isLegacy: FieldRef<"ChallengeType", 'Boolean'> readonly createdAt: FieldRef<"ChallengeType", 'DateTime'> readonly createdBy: FieldRef<"ChallengeType", 'String'> readonly updatedAt: FieldRef<"ChallengeType", 'DateTime'> @@ -6758,6 +6818,7 @@ export namespace Prisma { abbreviation: string | null legacyId: number | null track: $Enums.ChallengeTrackEnum | null + isLegacy: boolean | null createdAt: Date | null createdBy: string | null updatedAt: Date | null @@ -6772,6 +6833,7 @@ export namespace Prisma { abbreviation: string | null legacyId: number | null track: $Enums.ChallengeTrackEnum | null + isLegacy: boolean | null createdAt: Date | null createdBy: string | null updatedAt: Date | null @@ -6786,6 +6848,7 @@ export namespace Prisma { abbreviation: number legacyId: number track: number + isLegacy: number createdAt: number createdBy: number updatedAt: number @@ -6810,6 +6873,7 @@ export namespace Prisma { abbreviation?: true legacyId?: true track?: true + isLegacy?: true createdAt?: true createdBy?: true updatedAt?: true @@ -6824,6 +6888,7 @@ export namespace Prisma { abbreviation?: true legacyId?: true track?: true + isLegacy?: true createdAt?: true createdBy?: true updatedAt?: true @@ -6838,6 +6903,7 @@ export namespace Prisma { abbreviation?: true legacyId?: true track?: true + isLegacy?: true createdAt?: true createdBy?: true updatedAt?: true @@ -6939,6 +7005,7 @@ export namespace Prisma { abbreviation: string legacyId: number | null track: $Enums.ChallengeTrackEnum | null + isLegacy: boolean createdAt: Date createdBy: string updatedAt: Date @@ -6972,6 +7039,7 @@ export namespace Prisma { abbreviation?: boolean legacyId?: boolean track?: boolean + isLegacy?: boolean createdAt?: boolean createdBy?: boolean updatedAt?: boolean @@ -6990,6 +7058,7 @@ export namespace Prisma { abbreviation?: boolean legacyId?: boolean track?: boolean + isLegacy?: boolean createdAt?: boolean createdBy?: boolean updatedAt?: boolean @@ -7004,6 +7073,7 @@ export namespace Prisma { abbreviation?: boolean legacyId?: boolean track?: boolean + isLegacy?: boolean createdAt?: boolean createdBy?: boolean updatedAt?: boolean @@ -7018,13 +7088,14 @@ export namespace Prisma { abbreviation?: boolean legacyId?: boolean track?: boolean + isLegacy?: boolean createdAt?: boolean createdBy?: boolean updatedAt?: boolean updatedBy?: boolean } - export type ChallengeTrackOmit = $Extensions.GetOmit<"id" | "name" | "description" | "isActive" | "abbreviation" | "legacyId" | "track" | "createdAt" | "createdBy" | "updatedAt" | "updatedBy", ExtArgs["result"]["challengeTrack"]> + export type ChallengeTrackOmit = $Extensions.GetOmit<"id" | "name" | "description" | "isActive" | "abbreviation" | "legacyId" | "track" | "isLegacy" | "createdAt" | "createdBy" | "updatedAt" | "updatedBy", ExtArgs["result"]["challengeTrack"]> export type ChallengeTrackInclude = { challenges?: boolean | ChallengeTrack$challengesArgs timelineTemplates?: boolean | ChallengeTrack$timelineTemplatesArgs @@ -7049,6 +7120,7 @@ export namespace Prisma { abbreviation: string legacyId: number | null track: $Enums.ChallengeTrackEnum | null + isLegacy: boolean createdAt: Date createdBy: string updatedAt: Date @@ -7486,6 +7558,7 @@ export namespace Prisma { readonly abbreviation: FieldRef<"ChallengeTrack", 'String'> readonly legacyId: FieldRef<"ChallengeTrack", 'Int'> readonly track: FieldRef<"ChallengeTrack", 'ChallengeTrackEnum'> + readonly isLegacy: FieldRef<"ChallengeTrack", 'Boolean'> readonly createdAt: FieldRef<"ChallengeTrack", 'DateTime'> readonly createdBy: FieldRef<"ChallengeTrack", 'String'> readonly updatedAt: FieldRef<"ChallengeTrack", 'DateTime'> @@ -34204,6 +34277,8 @@ export namespace Prisma { isActive: 'isActive', isTask: 'isTask', abbreviation: 'abbreviation', + legacyId: 'legacyId', + isLegacy: 'isLegacy', createdAt: 'createdAt', createdBy: 'createdBy', updatedAt: 'updatedAt', @@ -34221,6 +34296,7 @@ export namespace Prisma { abbreviation: 'abbreviation', legacyId: 'legacyId', track: 'track', + isLegacy: 'isLegacy', createdAt: 'createdAt', createdBy: 'createdBy', updatedAt: 'updatedAt', @@ -35362,6 +35438,8 @@ export namespace Prisma { isActive?: BoolFilter<"ChallengeType"> | boolean isTask?: BoolFilter<"ChallengeType"> | boolean abbreviation?: StringFilter<"ChallengeType"> | string + legacyId?: IntNullableFilter<"ChallengeType"> | number | null + isLegacy?: BoolFilter<"ChallengeType"> | boolean createdAt?: DateTimeFilter<"ChallengeType"> | Date | string createdBy?: StringFilter<"ChallengeType"> | string updatedAt?: DateTimeFilter<"ChallengeType"> | Date | string @@ -35378,6 +35456,8 @@ export namespace Prisma { isActive?: SortOrder isTask?: SortOrder abbreviation?: SortOrder + legacyId?: SortOrderInput | SortOrder + isLegacy?: SortOrder createdAt?: SortOrder createdBy?: SortOrder updatedAt?: SortOrder @@ -35398,6 +35478,8 @@ export namespace Prisma { isActive?: BoolFilter<"ChallengeType"> | boolean isTask?: BoolFilter<"ChallengeType"> | boolean abbreviation?: StringFilter<"ChallengeType"> | string + legacyId?: IntNullableFilter<"ChallengeType"> | number | null + isLegacy?: BoolFilter<"ChallengeType"> | boolean createdAt?: DateTimeFilter<"ChallengeType"> | Date | string createdBy?: StringFilter<"ChallengeType"> | string updatedAt?: DateTimeFilter<"ChallengeType"> | Date | string @@ -35414,13 +35496,17 @@ export namespace Prisma { isActive?: SortOrder isTask?: SortOrder abbreviation?: SortOrder + legacyId?: SortOrderInput | SortOrder + isLegacy?: SortOrder createdAt?: SortOrder createdBy?: SortOrder updatedAt?: SortOrder updatedBy?: SortOrder _count?: ChallengeTypeCountOrderByAggregateInput + _avg?: ChallengeTypeAvgOrderByAggregateInput _max?: ChallengeTypeMaxOrderByAggregateInput _min?: ChallengeTypeMinOrderByAggregateInput + _sum?: ChallengeTypeSumOrderByAggregateInput } export type ChallengeTypeScalarWhereWithAggregatesInput = { @@ -35433,6 +35519,8 @@ export namespace Prisma { isActive?: BoolWithAggregatesFilter<"ChallengeType"> | boolean isTask?: BoolWithAggregatesFilter<"ChallengeType"> | boolean abbreviation?: StringWithAggregatesFilter<"ChallengeType"> | string + legacyId?: IntNullableWithAggregatesFilter<"ChallengeType"> | number | null + isLegacy?: BoolWithAggregatesFilter<"ChallengeType"> | boolean createdAt?: DateTimeWithAggregatesFilter<"ChallengeType"> | Date | string createdBy?: StringWithAggregatesFilter<"ChallengeType"> | string updatedAt?: DateTimeWithAggregatesFilter<"ChallengeType"> | Date | string @@ -35450,6 +35538,7 @@ export namespace Prisma { abbreviation?: StringFilter<"ChallengeTrack"> | string legacyId?: IntNullableFilter<"ChallengeTrack"> | number | null track?: EnumChallengeTrackEnumNullableFilter<"ChallengeTrack"> | $Enums.ChallengeTrackEnum | null + isLegacy?: BoolFilter<"ChallengeTrack"> | boolean createdAt?: DateTimeFilter<"ChallengeTrack"> | Date | string createdBy?: StringFilter<"ChallengeTrack"> | string updatedAt?: DateTimeFilter<"ChallengeTrack"> | Date | string @@ -35467,6 +35556,7 @@ export namespace Prisma { abbreviation?: SortOrder legacyId?: SortOrderInput | SortOrder track?: SortOrderInput | SortOrder + isLegacy?: SortOrder createdAt?: SortOrder createdBy?: SortOrder updatedAt?: SortOrder @@ -35488,6 +35578,7 @@ export namespace Prisma { abbreviation?: StringFilter<"ChallengeTrack"> | string legacyId?: IntNullableFilter<"ChallengeTrack"> | number | null track?: EnumChallengeTrackEnumNullableFilter<"ChallengeTrack"> | $Enums.ChallengeTrackEnum | null + isLegacy?: BoolFilter<"ChallengeTrack"> | boolean createdAt?: DateTimeFilter<"ChallengeTrack"> | Date | string createdBy?: StringFilter<"ChallengeTrack"> | string updatedAt?: DateTimeFilter<"ChallengeTrack"> | Date | string @@ -35505,6 +35596,7 @@ export namespace Prisma { abbreviation?: SortOrder legacyId?: SortOrderInput | SortOrder track?: SortOrderInput | SortOrder + isLegacy?: SortOrder createdAt?: SortOrder createdBy?: SortOrder updatedAt?: SortOrder @@ -35527,6 +35619,7 @@ export namespace Prisma { abbreviation?: StringWithAggregatesFilter<"ChallengeTrack"> | string legacyId?: IntNullableWithAggregatesFilter<"ChallengeTrack"> | number | null track?: EnumChallengeTrackEnumNullableWithAggregatesFilter<"ChallengeTrack"> | $Enums.ChallengeTrackEnum | null + isLegacy?: BoolWithAggregatesFilter<"ChallengeTrack"> | boolean createdAt?: DateTimeWithAggregatesFilter<"ChallengeTrack"> | Date | string createdBy?: StringWithAggregatesFilter<"ChallengeTrack"> | string updatedAt?: DateTimeWithAggregatesFilter<"ChallengeTrack"> | Date | string @@ -37774,6 +37867,8 @@ export namespace Prisma { isActive?: boolean isTask?: boolean abbreviation: string + legacyId?: number | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -37790,6 +37885,8 @@ export namespace Prisma { isActive?: boolean isTask?: boolean abbreviation: string + legacyId?: number | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -37806,6 +37903,8 @@ export namespace Prisma { isActive?: BoolFieldUpdateOperationsInput | boolean isTask?: BoolFieldUpdateOperationsInput | boolean abbreviation?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -37822,6 +37921,8 @@ export namespace Prisma { isActive?: BoolFieldUpdateOperationsInput | boolean isTask?: BoolFieldUpdateOperationsInput | boolean abbreviation?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -37838,6 +37939,8 @@ export namespace Prisma { isActive?: boolean isTask?: boolean abbreviation: string + legacyId?: number | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -37851,6 +37954,8 @@ export namespace Prisma { isActive?: BoolFieldUpdateOperationsInput | boolean isTask?: BoolFieldUpdateOperationsInput | boolean abbreviation?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -37864,6 +37969,8 @@ export namespace Prisma { isActive?: BoolFieldUpdateOperationsInput | boolean isTask?: BoolFieldUpdateOperationsInput | boolean abbreviation?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -37878,6 +37985,7 @@ export namespace Prisma { abbreviation: string legacyId?: number | null track?: $Enums.ChallengeTrackEnum | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -37895,6 +38003,7 @@ export namespace Prisma { abbreviation: string legacyId?: number | null track?: $Enums.ChallengeTrackEnum | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -37912,6 +38021,7 @@ export namespace Prisma { abbreviation?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null track?: NullableEnumChallengeTrackEnumFieldUpdateOperationsInput | $Enums.ChallengeTrackEnum | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -37929,6 +38039,7 @@ export namespace Prisma { abbreviation?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null track?: NullableEnumChallengeTrackEnumFieldUpdateOperationsInput | $Enums.ChallengeTrackEnum | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -37946,6 +38057,7 @@ export namespace Prisma { abbreviation: string legacyId?: number | null track?: $Enums.ChallengeTrackEnum | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -37960,6 +38072,7 @@ export namespace Prisma { abbreviation?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null track?: NullableEnumChallengeTrackEnumFieldUpdateOperationsInput | $Enums.ChallengeTrackEnum | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -37974,6 +38087,7 @@ export namespace Prisma { abbreviation?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null track?: NullableEnumChallengeTrackEnumFieldUpdateOperationsInput | $Enums.ChallengeTrackEnum | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -40610,12 +40724,18 @@ export namespace Prisma { isActive?: SortOrder isTask?: SortOrder abbreviation?: SortOrder + legacyId?: SortOrder + isLegacy?: SortOrder createdAt?: SortOrder createdBy?: SortOrder updatedAt?: SortOrder updatedBy?: SortOrder } + export type ChallengeTypeAvgOrderByAggregateInput = { + legacyId?: SortOrder + } + export type ChallengeTypeMaxOrderByAggregateInput = { id?: SortOrder name?: SortOrder @@ -40623,6 +40743,8 @@ export namespace Prisma { isActive?: SortOrder isTask?: SortOrder abbreviation?: SortOrder + legacyId?: SortOrder + isLegacy?: SortOrder createdAt?: SortOrder createdBy?: SortOrder updatedAt?: SortOrder @@ -40636,12 +40758,18 @@ export namespace Prisma { isActive?: SortOrder isTask?: SortOrder abbreviation?: SortOrder + legacyId?: SortOrder + isLegacy?: SortOrder createdAt?: SortOrder createdBy?: SortOrder updatedAt?: SortOrder updatedBy?: SortOrder } + export type ChallengeTypeSumOrderByAggregateInput = { + legacyId?: SortOrder + } + export type EnumChallengeTrackEnumNullableFilter<$PrismaModel = never> = { equals?: $Enums.ChallengeTrackEnum | EnumChallengeTrackEnumFieldRefInput<$PrismaModel> | null in?: $Enums.ChallengeTrackEnum[] | ListEnumChallengeTrackEnumFieldRefInput<$PrismaModel> | null @@ -40663,6 +40791,7 @@ export namespace Prisma { abbreviation?: SortOrder legacyId?: SortOrder track?: SortOrder + isLegacy?: SortOrder createdAt?: SortOrder createdBy?: SortOrder updatedAt?: SortOrder @@ -40681,6 +40810,7 @@ export namespace Prisma { abbreviation?: SortOrder legacyId?: SortOrder track?: SortOrder + isLegacy?: SortOrder createdAt?: SortOrder createdBy?: SortOrder updatedAt?: SortOrder @@ -40695,6 +40825,7 @@ export namespace Prisma { abbreviation?: SortOrder legacyId?: SortOrder track?: SortOrder + isLegacy?: SortOrder createdAt?: SortOrder createdBy?: SortOrder updatedAt?: SortOrder @@ -44706,6 +44837,8 @@ export namespace Prisma { isActive?: boolean isTask?: boolean abbreviation: string + legacyId?: number | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -44721,6 +44854,8 @@ export namespace Prisma { isActive?: boolean isTask?: boolean abbreviation: string + legacyId?: number | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -44742,6 +44877,7 @@ export namespace Prisma { abbreviation: string legacyId?: number | null track?: $Enums.ChallengeTrackEnum | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -44758,6 +44894,7 @@ export namespace Prisma { abbreviation: string legacyId?: number | null track?: $Enums.ChallengeTrackEnum | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -45312,6 +45449,8 @@ export namespace Prisma { isActive?: BoolFieldUpdateOperationsInput | boolean isTask?: BoolFieldUpdateOperationsInput | boolean abbreviation?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -45327,6 +45466,8 @@ export namespace Prisma { isActive?: BoolFieldUpdateOperationsInput | boolean isTask?: BoolFieldUpdateOperationsInput | boolean abbreviation?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -45354,6 +45495,7 @@ export namespace Prisma { abbreviation?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null track?: NullableEnumChallengeTrackEnumFieldUpdateOperationsInput | $Enums.ChallengeTrackEnum | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -45370,6 +45512,7 @@ export namespace Prisma { abbreviation?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null track?: NullableEnumChallengeTrackEnumFieldUpdateOperationsInput | $Enums.ChallengeTrackEnum | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -46026,6 +46169,7 @@ export namespace Prisma { abbreviation: string legacyId?: number | null track?: $Enums.ChallengeTrackEnum | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -46042,6 +46186,7 @@ export namespace Prisma { abbreviation: string legacyId?: number | null track?: $Enums.ChallengeTrackEnum | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -46062,6 +46207,8 @@ export namespace Prisma { isActive?: boolean isTask?: boolean abbreviation: string + legacyId?: number | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -46077,6 +46224,8 @@ export namespace Prisma { isActive?: boolean isTask?: boolean abbreviation: string + legacyId?: number | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -46148,6 +46297,7 @@ export namespace Prisma { abbreviation?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null track?: NullableEnumChallengeTrackEnumFieldUpdateOperationsInput | $Enums.ChallengeTrackEnum | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -46164,6 +46314,7 @@ export namespace Prisma { abbreviation?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null track?: NullableEnumChallengeTrackEnumFieldUpdateOperationsInput | $Enums.ChallengeTrackEnum | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -46190,6 +46341,8 @@ export namespace Prisma { isActive?: BoolFieldUpdateOperationsInput | boolean isTask?: BoolFieldUpdateOperationsInput | boolean abbreviation?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -46205,6 +46358,8 @@ export namespace Prisma { isActive?: BoolFieldUpdateOperationsInput | boolean isTask?: BoolFieldUpdateOperationsInput | boolean abbreviation?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -50045,6 +50200,8 @@ export namespace Prisma { isActive?: boolean isTask?: boolean abbreviation: string + legacyId?: number | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -50060,6 +50217,8 @@ export namespace Prisma { isActive?: boolean isTask?: boolean abbreviation: string + legacyId?: number | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -50081,6 +50240,7 @@ export namespace Prisma { abbreviation: string legacyId?: number | null track?: $Enums.ChallengeTrackEnum | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -50097,6 +50257,7 @@ export namespace Prisma { abbreviation: string legacyId?: number | null track?: $Enums.ChallengeTrackEnum | null + isLegacy?: boolean createdAt?: Date | string createdBy: string updatedAt?: Date | string @@ -50194,6 +50355,8 @@ export namespace Prisma { isActive?: BoolFieldUpdateOperationsInput | boolean isTask?: BoolFieldUpdateOperationsInput | boolean abbreviation?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -50209,6 +50372,8 @@ export namespace Prisma { isActive?: BoolFieldUpdateOperationsInput | boolean isTask?: BoolFieldUpdateOperationsInput | boolean abbreviation?: StringFieldUpdateOperationsInput | string + legacyId?: NullableIntFieldUpdateOperationsInput | number | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -50236,6 +50401,7 @@ export namespace Prisma { abbreviation?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null track?: NullableEnumChallengeTrackEnumFieldUpdateOperationsInput | $Enums.ChallengeTrackEnum | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string @@ -50252,6 +50418,7 @@ export namespace Prisma { abbreviation?: StringFieldUpdateOperationsInput | string legacyId?: NullableIntFieldUpdateOperationsInput | number | null track?: NullableEnumChallengeTrackEnumFieldUpdateOperationsInput | $Enums.ChallengeTrackEnum | null + isLegacy?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string createdBy?: StringFieldUpdateOperationsInput | string updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string diff --git a/packages/challenge-prisma-client/index.js b/packages/challenge-prisma-client/index.js index bc269ab..f485946 100644 --- a/packages/challenge-prisma-client/index.js +++ b/packages/challenge-prisma-client/index.js @@ -138,6 +138,8 @@ exports.Prisma.ChallengeTypeScalarFieldEnum = { isActive: 'isActive', isTask: 'isTask', abbreviation: 'abbreviation', + legacyId: 'legacyId', + isLegacy: 'isLegacy', createdAt: 'createdAt', createdBy: 'createdBy', updatedAt: 'updatedAt', @@ -152,6 +154,7 @@ exports.Prisma.ChallengeTrackScalarFieldEnum = { abbreviation: 'abbreviation', legacyId: 'legacyId', track: 'track', + isLegacy: 'isLegacy', createdAt: 'createdAt', createdBy: 'createdBy', updatedAt: 'updatedAt', @@ -806,7 +809,7 @@ const config = { "value": "prisma-client-js" }, "output": { - "value": "/home/vasea/work/topcoder/challenge-api-v6/packages/challenge-prisma-client", + "value": "/home/jmgasper/Documents/Git/v6/challenge-api-v6/packages/challenge-prisma-client", "fromEnvVar": null }, "config": { @@ -828,12 +831,11 @@ const config = { "postgresqlExtensions", "views" ], - "sourceFilePath": "/home/vasea/work/topcoder/challenge-api-v6/prisma/schema.prisma", + "sourceFilePath": "/home/jmgasper/Documents/Git/v6/challenge-api-v6/prisma/schema.prisma", "isCustomOutput": true }, "relativeEnvPaths": { - "rootEnvPath": null, - "schemaEnvPath": "../../.env" + "rootEnvPath": null }, "relativePath": "../../prisma", "clientVersion": "6.19.0", @@ -851,8 +853,8 @@ const config = { } } }, - "inlineSchema": "datasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/challenge-prisma-client\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\n// Enum for allowed challenge track values (matches app-constants)\nenum ChallengeTrackEnum {\n DESIGN\n DATA_SCIENCE\n DEVELOPMENT\n QUALITY_ASSURANCE\n}\n\nenum ReviewTypeEnum {\n COMMUNITY\n INTERNAL\n SYSTEM\n PROVISIONAL\n EXAMPLE\n}\n\nenum DiscussionTypeEnum {\n CHALLENGE\n}\n\nenum ChallengeStatusEnum {\n NEW\n DRAFT\n APPROVED\n ACTIVE\n COMPLETED\n DELETED\n CANCELLED\n CANCELLED_FAILED_REVIEW\n CANCELLED_FAILED_SCREENING\n CANCELLED_ZERO_SUBMISSIONS\n CANCELLED_WINNER_UNRESPONSIVE\n CANCELLED_CLIENT_REQUEST\n CANCELLED_REQUIREMENTS_INFEASIBLE\n CANCELLED_ZERO_REGISTRATIONS\n CANCELLED_PAYMENT_FAILED\n}\n\nenum PrizeSetTypeEnum {\n PLACEMENT\n COPILOT\n REVIEWER\n PASSED_REVIEW\n CHECKPOINT\n}\n\n// Enum for review opportunity types on reviewers\nenum ReviewOpportunityTypeEnum {\n REGULAR_REVIEW\n COMPONENT_DEV_REVIEW\n SPEC_REVIEW\n ITERATIVE_REVIEW\n SCENARIOS_REVIEW\n}\n\n//////////////////////////////////////////\n// Main Challenge model\n//////////////////////////////////////////\n\nmodel Challenge {\n id String @id @default(uuid())\n name String\n description String?\n privateDescription String?\n challengeSource String?\n descriptionFormat String?\n projectId Int? // frequently queried field\n typeId String\n trackId String // FK for relation in ChallengeTrack\n timelineTemplateId String? // now used as foreign key to ChallengeTimelineTemplate\n overviewTotalPrizes Float? // stored from overview.totalPrizes\n numOfRegistrants Int @default(0)\n numOfSubmissions Int @default(0)\n numOfCheckpointSubmissions Int @default(0)\n currentPhaseNames String[] // current phase names\n\n wiproAllowed Boolean @default(false)\n funChallenge Boolean @default(false)\n\n // simple arrays for tags and groups (PostgreSQL native array type)\n tags String[]\n groups String[]\n\n // Task information (flattened from challenge.task)\n taskIsTask Boolean @default(false)\n taskIsAssigned Boolean @default(false)\n taskMemberId String?\n\n // Dates for challenge lifecycle\n submissionStartDate DateTime?\n submissionEndDate DateTime?\n registrationStartDate DateTime?\n registrationEndDate DateTime?\n startDate DateTime?\n endDate DateTime?\n\n // Normalized billing and legacy information (one-to-one)\n billingRecord ChallengeBilling?\n legacyId Int? // Legacy system ID for searching\n legacyRecord ChallengeLegacy? @relation(\"ChallengeLegacyRelation\")\n\n // Additional fields from createChallenge schema\n status ChallengeStatusEnum @default(NEW) // new challenges default to status \"New\"\n // Normalized top‑level constraints (e.g. allowedRegistrants) for a challenge\n constraintRecord ChallengeConstraint?\n\n // Additional normalized relations from createChallenge\n events ChallengeEvent[]\n discussions ChallengeDiscussion[]\n\n // Existing relations (one-to-many) for challenge metadata, phases, prize sets, winners, attachments,\n // terms and skills\n metadata ChallengeMetadata[]\n phases ChallengePhase[]\n prizeSets ChallengePrizeSet[]\n reviewers ChallengeReviewer[]\n winners ChallengeWinner[]\n attachments Attachment[]\n terms ChallengeTerm[]\n skills ChallengeSkill[]\n auditLogs AuditLog[]\n memberAccesses MemberChallengeAccess[]\n\n // Relation to ChallengeType (FK: typeId)\n type ChallengeType @relation(fields: [typeId], references: [id])\n // Relation to ChallengeTrack (FK: trackId)\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n\n // Auditing fields (present in every table)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([projectId])\n @@index([status]) // index added for optimized search by status\n @@index([createdAt])\n @@index([updatedAt])\n @@index([typeId])\n @@index([trackId])\n @@index([groups], type: Gin, map: \"challenge_groups_gin_idx\")\n @@index([submissionStartDate])\n @@index([submissionEndDate])\n @@index([registrationStartDate])\n @@index([registrationEndDate])\n @@index([startDate])\n @@index([endDate])\n @@index([status, startDate])\n @@index([trackId, typeId, status])\n @@index([status, typeId, trackId, createdAt(sort: Desc)], map: \"challenge_status_type_track_created_at_idx\")\n @@index([legacyId])\n @@index([projectId, status])\n}\n\n//////////////////////////////////////////\n// MemberChallengeAccess view – member/challenge pairs from resources schema\n//////////////////////////////////////////\n\nview MemberChallengeAccess {\n challengeId String\n memberId String\n\n challenge Challenge @relation(fields: [challengeId], references: [id])\n\n @@map(\"MemberChallengeAccess\")\n}\n\n//////////////////////////////////////////\n// ChallengeType model\n//////////////////////////////////////////\n\nmodel ChallengeType {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n isTask Boolean @default(false)\n abbreviation String\n\n challenges Challenge[]\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this type\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([abbreviation])\n}\n\n//////////////////////////////////////////\n// ChallengeTrack model\n//////////////////////////////////////////\n\nmodel ChallengeTrack {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean\n abbreviation String\n legacyId Int? // numeric legacy system id (if provided)\n track ChallengeTrackEnum? // enum value from ChallengeTrackEnum\n challenges Challenge[]\n // Opposite relation for ChallengeTimelineTemplate\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this track\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([legacyId])\n}\n\n//////////////////////////////////////////\n// ChallengeTimelineTemplate model\n//////////////////////////////////////////\n\nmodel ChallengeTimelineTemplate {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String // now required per Swagger spec\n\n // Link to the TimelineTemplate model via timelineTemplateId.\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id])\n // Link to the ChallengeTrack model via trackId.\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n // Link to the ChallengeType model via typeId.\n type ChallengeType @relation(fields: [typeId], references: [id])\n\n isDefault Boolean @default(false)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Composite index to support searches/updates by typeId, trackId and timelineTemplateId.\n @@index([typeId, trackId, timelineTemplateId])\n}\n\n//////////////////////////////////////////\n// AuditLog model – tracks field changes\n//////////////////////////////////////////\n\nmodel AuditLog {\n id String @id @default(uuid())\n challengeId String? // optional association with a challenge\n fieldName String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now())\n createdBy String\n memberId String?\n\n // Relation field to connect AuditLog to Challenge.\n challenge Challenge? @relation(fields: [challengeId], references: [id])\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Attachment model – for challenge attachments\n//////////////////////////////////////////\n\nmodel Attachment {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String\n fileSize Int\n url String\n description String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeMetadata model – key/value metadata\n//////////////////////////////////////////\n\nmodel ChallengeMetadata {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String // name of the metadata\n value String // value stored as string for flexibility\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Prize model – individual prize in a prize set\n//////////////////////////////////////////\n\nmodel Prize {\n id String @id @default(uuid())\n description String?\n prizeSet ChallengePrizeSet @relation(fields: [prizeSetId], references: [id], onDelete: Cascade)\n prizeSetId String\n type String // e.g. \"USD\", \"POINT\" (could also be converted to enum later)\n value Float\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeWinner model – record winners for a challenge\n//////////////////////////////////////////\n\nmodel ChallengeWinner {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n userId Int\n handle String\n placement Int\n type PrizeSetTypeEnum\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type, placement])\n}\n\n//////////////////////////////////////////\n// ChallengeTerm model – association of challenge and terms\n//////////////////////////////////////////\n\nmodel ChallengeTerm {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n termId String // Terms API id\n roleId String // UUID for the associated role\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeSkill model – linking challenges with skills\n//////////////////////////////////////////\n\nmodel ChallengeSkill {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n skillId String // Request provided skillId\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeBilling model – normalized billing info\n//////////////////////////////////////////\n\nmodel ChallengeBilling {\n id String @id @default(uuid())\n billingAccountId String?\n markup Float? // in range [0, 100]\n clientBillingRate Float? // in range [0, 100]. Supporting range on postgres is an open issue with prisma https://github.com/prisma/prisma/issues/3287.\n challengeId String @unique\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeLegacy model – normalized legacy info\n//////////////////////////////////////////\n\nmodel ChallengeLegacy {\n id String @id @default(uuid())\n reviewType ReviewTypeEnum @default(INTERNAL)\n confidentialityType String @default(\"public\")\n forumId Int?\n directProjectId Int?\n screeningScorecardId Int?\n reviewScorecardId Int?\n isTask Boolean @default(false)\n useSchedulingAPI Boolean @default(false)\n pureV5Task Boolean @default(false)\n pureV5 Boolean @default(false)\n selfService Boolean @default(false)\n selfServiceCopilot String?\n track String? // as provided in the legacy object\n subTrack String? // as provided in the legacy object\n legacySystemId Int? // represents the external \"legacyId\"\n challengeId String @unique\n challenge Challenge @relation(\"ChallengeLegacyRelation\", fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeEvent model – normalized challenge events\n//////////////////////////////////////////\n\nmodel ChallengeEvent {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n eventId Int\n name String?\n key String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeDiscussion and associated options – normalized discussion channels\n//////////////////////////////////////////\n\nmodel ChallengeDiscussion {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n discussionId String?\n name String\n type DiscussionTypeEnum // updated to use enum\n provider String\n url String?\n options ChallengeDiscussionOption[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\nmodel ChallengeDiscussionOption {\n id String @id @default(uuid())\n discussion ChallengeDiscussion @relation(fields: [discussionId], references: [id], onDelete: Cascade)\n discussionId String\n optionKey String\n optionValue String\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeConstraint model – top-level challenge constraints (e.g. allowed registrants)\n//////////////////////////////////////////\n\nmodel ChallengeConstraint {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String @unique\n allowedRegistrants String[] @default([])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhase – to capture per-phase info from create/update challenge operations\n// Each phase is linked with a challenge and holds a duration and any custom constraints.\n//////////////////////////////////////////\n\nmodel Phase {\n id String @id @default(uuid())\n name String\n description String?\n isOpen Boolean\n duration Int\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Inverse relation for associated challenge phases\n challengePhases ChallengePhase[]\n ChallengeReviewer ChallengeReviewer[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\nmodel ChallengePhase {\n id String @id @default(uuid())\n challengeId String\n phaseId String // foreign key to Phase\n\n name String // phase name\n description String? // description\n isOpen Boolean? @default(false) // if this phase is open\n predecessor String? // predecessor of this phase\n duration Int? // duration in seconds\n scheduledStartDate DateTime? // when the phase is scheduled to start\n scheduledEndDate DateTime?\n actualStartDate DateTime?\n actualEndDate DateTime? // when the phase actually ended\n constraints ChallengePhaseConstraint[]\n\n // Relation fields\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n phase Phase @relation(fields: [phaseId], references: [id])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, isOpen])\n @@index([challengeId, name])\n @@index([challengeId, isOpen, scheduledEndDate, actualEndDate], map: \"challenge_phase_challenge_open_end_idx\")\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhaseConstraint – to capture custom constraints for each phase\n//////////////////////////////////////////\n\nmodel ChallengePhaseConstraint {\n id String @id @default(uuid())\n challengePhaseId String\n name String // the name/key of the constraint\n value Int // numeric value of the constraint (can be changed to Float if needed)\n\n // Relation to the phase\n challengePhase ChallengePhase @relation(fields: [challengePhaseId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengePhaseId])\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePrizeSet – to group prizes for a challenge\n//////////////////////////////////////////\n\nmodel ChallengePrizeSet {\n id String @id @default(uuid())\n challengeId String\n type PrizeSetTypeEnum // using enum instead of string\n description String?\n prizes Prize[]\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type])\n}\n\n//////////////////////////////////////////\n// ChallengeReviewer model – reviewers for a challenge, both AI and member\n//////////////////////////////////////////\n\nmodel ChallengeReviewer {\n id String @id @default(uuid())\n challengeId String\n\n // Reviewer configuration\n scorecardId String\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseId String\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n type ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n // Relation to the phase\n phase Phase @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([phaseId])\n @@index([challengeId, phaseId])\n}\n\n//////////////////////////////////////////\n// DefaultChallengeReviewer model – default reviewers by type and track\n//////////////////////////////////////////\n\nmodel DefaultChallengeReviewer {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String?\n // Reviewer configuration (mirrors ChallengeReviewer)\n scorecardId String?\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseName String\n // Optional explicit link to Phase for better fidelity\n phaseId String?\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n opportunityType ReviewOpportunityTypeEnum?\n aiConfigTemplateId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relations\n challengeType ChallengeType @relation(fields: [typeId], references: [id])\n challengeTrack ChallengeTrack @relation(fields: [trackId], references: [id])\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n // Relation to Phase (optional for backward compatibility with phaseName)\n phase Phase? @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([typeId, trackId])\n @@index([typeId, trackId, timelineTemplateId])\n @@index([phaseId])\n}\n\n//////////////////////////////////////////\n// TimelineTemplate model – defines timeline templates\n//////////////////////////////////////////\nmodel TimelineTemplate {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n phases TimelineTemplatePhase[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Opposite relation field, linking back to ChallengeTimelineTemplate.\n challengeTimelineTemplates ChallengeTimelineTemplate[]\n\n // Opposite relation field for Challenge.\n challenges Challenge[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\n//////////////////////////////////////////\n// TimelineTemplatePhase model – phases associated with a timeline template\n//////////////////////////////////////////\nmodel TimelineTemplatePhase {\n id String @id @default(uuid())\n timelineTemplateId String\n phaseId String // identifier for the phase\n predecessor String? // optional predecessor phase id\n defaultDuration Int // duration (in minutes, hours, etc.) as per business rules\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id], onDelete: Cascade)\n\n @@index([timelineTemplateId])\n @@index([timelineTemplateId, phaseId])\n}\n", - "inlineSchemaHash": "a29362a60aa8828fffd5212d1cf4900622e5c305df3ed19e69c46649a22f7174", + "inlineSchema": "datasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/challenge-prisma-client\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\n// Enum for allowed challenge track values (matches app-constants)\nenum ChallengeTrackEnum {\n DESIGN\n DATA_SCIENCE\n DEVELOPMENT\n QUALITY_ASSURANCE\n}\n\nenum ReviewTypeEnum {\n COMMUNITY\n INTERNAL\n SYSTEM\n PROVISIONAL\n EXAMPLE\n}\n\nenum DiscussionTypeEnum {\n CHALLENGE\n}\n\nenum ChallengeStatusEnum {\n NEW\n DRAFT\n APPROVED\n ACTIVE\n COMPLETED\n DELETED\n CANCELLED\n CANCELLED_FAILED_REVIEW\n CANCELLED_FAILED_SCREENING\n CANCELLED_ZERO_SUBMISSIONS\n CANCELLED_WINNER_UNRESPONSIVE\n CANCELLED_CLIENT_REQUEST\n CANCELLED_REQUIREMENTS_INFEASIBLE\n CANCELLED_ZERO_REGISTRATIONS\n CANCELLED_PAYMENT_FAILED\n}\n\nenum PrizeSetTypeEnum {\n PLACEMENT\n COPILOT\n REVIEWER\n PASSED_REVIEW\n CHECKPOINT\n}\n\n// Enum for review opportunity types on reviewers\nenum ReviewOpportunityTypeEnum {\n REGULAR_REVIEW\n COMPONENT_DEV_REVIEW\n SPEC_REVIEW\n ITERATIVE_REVIEW\n SCENARIOS_REVIEW\n}\n\n//////////////////////////////////////////\n// Main Challenge model\n//////////////////////////////////////////\n\nmodel Challenge {\n id String @id @default(uuid())\n name String\n description String?\n privateDescription String?\n challengeSource String?\n descriptionFormat String?\n projectId Int? // frequently queried field\n typeId String\n trackId String // FK for relation in ChallengeTrack\n timelineTemplateId String? // now used as foreign key to ChallengeTimelineTemplate\n overviewTotalPrizes Float? // stored from overview.totalPrizes\n numOfRegistrants Int @default(0)\n numOfSubmissions Int @default(0)\n numOfCheckpointSubmissions Int @default(0)\n currentPhaseNames String[] // current phase names\n\n wiproAllowed Boolean @default(false)\n funChallenge Boolean @default(false)\n\n // simple arrays for tags and groups (PostgreSQL native array type)\n tags String[]\n groups String[]\n\n // Task information (flattened from challenge.task)\n taskIsTask Boolean @default(false)\n taskIsAssigned Boolean @default(false)\n taskMemberId String?\n\n // Dates for challenge lifecycle\n submissionStartDate DateTime?\n submissionEndDate DateTime?\n registrationStartDate DateTime?\n registrationEndDate DateTime?\n startDate DateTime?\n endDate DateTime?\n\n // Normalized billing and legacy information (one-to-one)\n billingRecord ChallengeBilling?\n legacyId Int? // Legacy system ID for searching\n legacyRecord ChallengeLegacy? @relation(\"ChallengeLegacyRelation\")\n\n // Additional fields from createChallenge schema\n status ChallengeStatusEnum @default(NEW) // new challenges default to status \"New\"\n // Normalized top‑level constraints (e.g. allowedRegistrants) for a challenge\n constraintRecord ChallengeConstraint?\n\n // Additional normalized relations from createChallenge\n events ChallengeEvent[]\n discussions ChallengeDiscussion[]\n\n // Existing relations (one-to-many) for challenge metadata, phases, prize sets, winners, attachments,\n // terms and skills\n metadata ChallengeMetadata[]\n phases ChallengePhase[]\n prizeSets ChallengePrizeSet[]\n reviewers ChallengeReviewer[]\n winners ChallengeWinner[]\n attachments Attachment[]\n terms ChallengeTerm[]\n skills ChallengeSkill[]\n auditLogs AuditLog[]\n memberAccesses MemberChallengeAccess[]\n\n // Relation to ChallengeType (FK: typeId)\n type ChallengeType @relation(fields: [typeId], references: [id])\n // Relation to ChallengeTrack (FK: trackId)\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n\n // Auditing fields (present in every table)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([projectId])\n @@index([status]) // index added for optimized search by status\n @@index([createdAt])\n @@index([updatedAt])\n @@index([typeId])\n @@index([trackId])\n @@index([groups], type: Gin, map: \"challenge_groups_gin_idx\")\n @@index([submissionStartDate])\n @@index([submissionEndDate])\n @@index([registrationStartDate])\n @@index([registrationEndDate])\n @@index([startDate])\n @@index([endDate])\n @@index([status, startDate])\n @@index([trackId, typeId, status])\n @@index([status, typeId, trackId, createdAt(sort: Desc)], map: \"challenge_status_type_track_created_at_idx\")\n @@index([legacyId])\n @@index([projectId, status])\n}\n\n//////////////////////////////////////////\n// MemberChallengeAccess view – member/challenge pairs from resources schema\n//////////////////////////////////////////\n\nview MemberChallengeAccess {\n challengeId String\n memberId String\n\n challenge Challenge @relation(fields: [challengeId], references: [id])\n\n @@map(\"MemberChallengeAccess\")\n}\n\n//////////////////////////////////////////\n// ChallengeType model\n//////////////////////////////////////////\n\nmodel ChallengeType {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n isTask Boolean @default(false)\n abbreviation String\n legacyId Int?\n isLegacy Boolean @default(false)\n\n challenges Challenge[]\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this type\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([abbreviation])\n @@index([legacyId])\n @@index([isLegacy])\n}\n\n//////////////////////////////////////////\n// ChallengeTrack model\n//////////////////////////////////////////\n\nmodel ChallengeTrack {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean\n abbreviation String\n legacyId Int? // numeric legacy system id (if provided)\n track ChallengeTrackEnum? // enum value from ChallengeTrackEnum\n isLegacy Boolean @default(false)\n challenges Challenge[]\n // Opposite relation for ChallengeTimelineTemplate\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this track\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([legacyId])\n @@index([isLegacy])\n}\n\n//////////////////////////////////////////\n// ChallengeTimelineTemplate model\n//////////////////////////////////////////\n\nmodel ChallengeTimelineTemplate {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String // now required per Swagger spec\n\n // Link to the TimelineTemplate model via timelineTemplateId.\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id])\n // Link to the ChallengeTrack model via trackId.\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n // Link to the ChallengeType model via typeId.\n type ChallengeType @relation(fields: [typeId], references: [id])\n\n isDefault Boolean @default(false)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Composite index to support searches/updates by typeId, trackId and timelineTemplateId.\n @@index([typeId, trackId, timelineTemplateId])\n}\n\n//////////////////////////////////////////\n// AuditLog model – tracks field changes\n//////////////////////////////////////////\n\nmodel AuditLog {\n id String @id @default(uuid())\n challengeId String? // optional association with a challenge\n fieldName String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now())\n createdBy String\n memberId String?\n\n // Relation field to connect AuditLog to Challenge.\n challenge Challenge? @relation(fields: [challengeId], references: [id])\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Attachment model – for challenge attachments\n//////////////////////////////////////////\n\nmodel Attachment {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String\n fileSize Int\n url String\n description String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeMetadata model – key/value metadata\n//////////////////////////////////////////\n\nmodel ChallengeMetadata {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String // name of the metadata\n value String // value stored as string for flexibility\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Prize model – individual prize in a prize set\n//////////////////////////////////////////\n\nmodel Prize {\n id String @id @default(uuid())\n description String?\n prizeSet ChallengePrizeSet @relation(fields: [prizeSetId], references: [id], onDelete: Cascade)\n prizeSetId String\n type String // e.g. \"USD\", \"POINT\" (could also be converted to enum later)\n value Float\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeWinner model – record winners for a challenge\n//////////////////////////////////////////\n\nmodel ChallengeWinner {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n userId Int\n handle String\n placement Int\n type PrizeSetTypeEnum\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type, placement])\n}\n\n//////////////////////////////////////////\n// ChallengeTerm model – association of challenge and terms\n//////////////////////////////////////////\n\nmodel ChallengeTerm {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n termId String // Terms API id\n roleId String // UUID for the associated role\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeSkill model – linking challenges with skills\n//////////////////////////////////////////\n\nmodel ChallengeSkill {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n skillId String // Request provided skillId\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeBilling model – normalized billing info\n//////////////////////////////////////////\n\nmodel ChallengeBilling {\n id String @id @default(uuid())\n billingAccountId String?\n markup Float? // in range [0, 100]\n clientBillingRate Float? // in range [0, 100]. Supporting range on postgres is an open issue with prisma https://github.com/prisma/prisma/issues/3287.\n challengeId String @unique\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeLegacy model – normalized legacy info\n//////////////////////////////////////////\n\nmodel ChallengeLegacy {\n id String @id @default(uuid())\n reviewType ReviewTypeEnum @default(INTERNAL)\n confidentialityType String @default(\"public\")\n forumId Int?\n directProjectId Int?\n screeningScorecardId Int?\n reviewScorecardId Int?\n isTask Boolean @default(false)\n useSchedulingAPI Boolean @default(false)\n pureV5Task Boolean @default(false)\n pureV5 Boolean @default(false)\n selfService Boolean @default(false)\n selfServiceCopilot String?\n track String? // as provided in the legacy object\n subTrack String? // as provided in the legacy object\n legacySystemId Int? // represents the external \"legacyId\"\n challengeId String @unique\n challenge Challenge @relation(\"ChallengeLegacyRelation\", fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeEvent model – normalized challenge events\n//////////////////////////////////////////\n\nmodel ChallengeEvent {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n eventId Int\n name String?\n key String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeDiscussion and associated options – normalized discussion channels\n//////////////////////////////////////////\n\nmodel ChallengeDiscussion {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n discussionId String?\n name String\n type DiscussionTypeEnum // updated to use enum\n provider String\n url String?\n options ChallengeDiscussionOption[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\nmodel ChallengeDiscussionOption {\n id String @id @default(uuid())\n discussion ChallengeDiscussion @relation(fields: [discussionId], references: [id], onDelete: Cascade)\n discussionId String\n optionKey String\n optionValue String\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeConstraint model – top-level challenge constraints (e.g. allowed registrants)\n//////////////////////////////////////////\n\nmodel ChallengeConstraint {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String @unique\n allowedRegistrants String[] @default([])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhase – to capture per-phase info from create/update challenge operations\n// Each phase is linked with a challenge and holds a duration and any custom constraints.\n//////////////////////////////////////////\n\nmodel Phase {\n id String @id @default(uuid())\n name String\n description String?\n isOpen Boolean\n duration Int\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Inverse relation for associated challenge phases\n challengePhases ChallengePhase[]\n ChallengeReviewer ChallengeReviewer[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\nmodel ChallengePhase {\n id String @id @default(uuid())\n challengeId String\n phaseId String // foreign key to Phase\n\n name String // phase name\n description String? // description\n isOpen Boolean? @default(false) // if this phase is open\n predecessor String? // predecessor of this phase\n duration Int? // duration in seconds\n scheduledStartDate DateTime? // when the phase is scheduled to start\n scheduledEndDate DateTime?\n actualStartDate DateTime?\n actualEndDate DateTime? // when the phase actually ended\n constraints ChallengePhaseConstraint[]\n\n // Relation fields\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n phase Phase @relation(fields: [phaseId], references: [id])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, isOpen])\n @@index([challengeId, name])\n @@index([challengeId, isOpen, scheduledEndDate, actualEndDate], map: \"challenge_phase_challenge_open_end_idx\")\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhaseConstraint – to capture custom constraints for each phase\n//////////////////////////////////////////\n\nmodel ChallengePhaseConstraint {\n id String @id @default(uuid())\n challengePhaseId String\n name String // the name/key of the constraint\n value Int // numeric value of the constraint (can be changed to Float if needed)\n\n // Relation to the phase\n challengePhase ChallengePhase @relation(fields: [challengePhaseId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengePhaseId])\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePrizeSet – to group prizes for a challenge\n//////////////////////////////////////////\n\nmodel ChallengePrizeSet {\n id String @id @default(uuid())\n challengeId String\n type PrizeSetTypeEnum // using enum instead of string\n description String?\n prizes Prize[]\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type])\n}\n\n//////////////////////////////////////////\n// ChallengeReviewer model – reviewers for a challenge, both AI and member\n//////////////////////////////////////////\n\nmodel ChallengeReviewer {\n id String @id @default(uuid())\n challengeId String\n\n // Reviewer configuration\n scorecardId String\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseId String\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n type ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n // Relation to the phase\n phase Phase @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([phaseId])\n @@index([challengeId, phaseId])\n}\n\n//////////////////////////////////////////\n// DefaultChallengeReviewer model – default reviewers by type and track\n//////////////////////////////////////////\n\nmodel DefaultChallengeReviewer {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String?\n // Reviewer configuration (mirrors ChallengeReviewer)\n scorecardId String?\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseName String\n // Optional explicit link to Phase for better fidelity\n phaseId String?\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n opportunityType ReviewOpportunityTypeEnum?\n aiConfigTemplateId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relations\n challengeType ChallengeType @relation(fields: [typeId], references: [id])\n challengeTrack ChallengeTrack @relation(fields: [trackId], references: [id])\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n // Relation to Phase (optional for backward compatibility with phaseName)\n phase Phase? @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([typeId, trackId])\n @@index([typeId, trackId, timelineTemplateId])\n @@index([phaseId])\n}\n\n//////////////////////////////////////////\n// TimelineTemplate model – defines timeline templates\n//////////////////////////////////////////\nmodel TimelineTemplate {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n phases TimelineTemplatePhase[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Opposite relation field, linking back to ChallengeTimelineTemplate.\n challengeTimelineTemplates ChallengeTimelineTemplate[]\n\n // Opposite relation field for Challenge.\n challenges Challenge[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\n//////////////////////////////////////////\n// TimelineTemplatePhase model – phases associated with a timeline template\n//////////////////////////////////////////\nmodel TimelineTemplatePhase {\n id String @id @default(uuid())\n timelineTemplateId String\n phaseId String // identifier for the phase\n predecessor String? // optional predecessor phase id\n defaultDuration Int // duration (in minutes, hours, etc.) as per business rules\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id], onDelete: Cascade)\n\n @@index([timelineTemplateId])\n @@index([timelineTemplateId, phaseId])\n}\n", + "inlineSchemaHash": "013c60d710a175acc08038f512b16e5030bd0c3b8ccf59cb118c7e55c66e6caf", "copyEngine": true } @@ -873,7 +875,7 @@ if (!fs.existsSync(path.join(__dirname, 'schema.prisma'))) { config.isBundled = true } -config.runtimeDataModel = JSON.parse("{\"models\":{\"Challenge\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"privateDescription\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeSource\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"descriptionFormat\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"projectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"overviewTotalPrizes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfRegistrants\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfCheckpointSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currentPhaseNames\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wiproAllowed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"funChallenge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"groups\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsAssigned\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskMemberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"startDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeBilling\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeLegacy\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ChallengeStatusEnum\",\"nativeType\":null,\"default\":\"NEW\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraintRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeConstraint\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"events\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeEvent\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metadata\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeMetadata\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSets\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"winners\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeWinner\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attachments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Attachment\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"terms\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTerm\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skills\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeSkill\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"auditLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AuditLog\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberAccesses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MemberChallengeAccess\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeType\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTrack\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrackEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AuditLog\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fieldName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"newValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Attachment\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeMetadata\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Prize\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSet\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[\"prizeSetId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSetId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeWinner\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"placement\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTerm\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"termId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeSkill\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skillId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeBilling\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingAccountId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"markup\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"clientBillingRate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeLegacy\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ReviewTypeEnum\",\"nativeType\":null,\"default\":\"INTERNAL\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confidentialityType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":\"public\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"forumId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"directProjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"screeningScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"useSchedulingAPI\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5Task\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfService\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfServiceCopilot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subTrack\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacySystemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeEvent\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"eventId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussion\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DiscussionTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"options\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussionOption\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussionOption\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussion\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[\"discussionId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionKey\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allowedRegistrants\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Phase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false},\"ChallengePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraints\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhaseConstraint\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePhaseConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[\"challengePhaseId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePrizeSet\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizes\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Prize\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"DefaultChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"opportunityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiConfigTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTrack\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"TimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplatePhase\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTimelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"TimelineTemplatePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultDuration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"MemberChallengeAccess\":{\"dbName\":\"MemberChallengeAccess\",\"schema\":null,\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{\"ChallengeTrackEnum\":{\"values\":[{\"name\":\"DESIGN\",\"dbName\":null},{\"name\":\"DATA_SCIENCE\",\"dbName\":null},{\"name\":\"DEVELOPMENT\",\"dbName\":null},{\"name\":\"QUALITY_ASSURANCE\",\"dbName\":null}],\"dbName\":null},\"ReviewTypeEnum\":{\"values\":[{\"name\":\"COMMUNITY\",\"dbName\":null},{\"name\":\"INTERNAL\",\"dbName\":null},{\"name\":\"SYSTEM\",\"dbName\":null},{\"name\":\"PROVISIONAL\",\"dbName\":null},{\"name\":\"EXAMPLE\",\"dbName\":null}],\"dbName\":null},\"DiscussionTypeEnum\":{\"values\":[{\"name\":\"CHALLENGE\",\"dbName\":null}],\"dbName\":null},\"ChallengeStatusEnum\":{\"values\":[{\"name\":\"NEW\",\"dbName\":null},{\"name\":\"DRAFT\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"ACTIVE\",\"dbName\":null},{\"name\":\"COMPLETED\",\"dbName\":null},{\"name\":\"DELETED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_REVIEW\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_SCREENING\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_SUBMISSIONS\",\"dbName\":null},{\"name\":\"CANCELLED_WINNER_UNRESPONSIVE\",\"dbName\":null},{\"name\":\"CANCELLED_CLIENT_REQUEST\",\"dbName\":null},{\"name\":\"CANCELLED_REQUIREMENTS_INFEASIBLE\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_REGISTRATIONS\",\"dbName\":null},{\"name\":\"CANCELLED_PAYMENT_FAILED\",\"dbName\":null}],\"dbName\":null},\"PrizeSetTypeEnum\":{\"values\":[{\"name\":\"PLACEMENT\",\"dbName\":null},{\"name\":\"COPILOT\",\"dbName\":null},{\"name\":\"REVIEWER\",\"dbName\":null},{\"name\":\"PASSED_REVIEW\",\"dbName\":null},{\"name\":\"CHECKPOINT\",\"dbName\":null}],\"dbName\":null},\"ReviewOpportunityTypeEnum\":{\"values\":[{\"name\":\"REGULAR_REVIEW\",\"dbName\":null},{\"name\":\"COMPONENT_DEV_REVIEW\",\"dbName\":null},{\"name\":\"SPEC_REVIEW\",\"dbName\":null},{\"name\":\"ITERATIVE_REVIEW\",\"dbName\":null},{\"name\":\"SCENARIOS_REVIEW\",\"dbName\":null}],\"dbName\":null}},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Challenge\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"privateDescription\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeSource\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"descriptionFormat\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"projectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"overviewTotalPrizes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfRegistrants\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"numOfCheckpointSubmissions\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"currentPhaseNames\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"wiproAllowed\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"funChallenge\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"tags\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"groups\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskIsAssigned\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"taskMemberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"submissionEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"registrationEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"startDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"endDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeBilling\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeLegacy\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ChallengeStatusEnum\",\"nativeType\":null,\"default\":\"NEW\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraintRecord\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeConstraint\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"events\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeEvent\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"metadata\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeMetadata\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSets\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"winners\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeWinner\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"attachments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Attachment\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"terms\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTerm\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skills\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeSkill\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"auditLogs\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"AuditLog\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberAccesses\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"MemberChallengeAccess\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeType\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isLegacy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTrack\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrackEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isLegacy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToChallengeType\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"AuditLog\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fieldName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"newValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AuditLogToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Attachment\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"AttachmentToChallenge\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeMetadata\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeMetadata\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Prize\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSet\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePrizeSet\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[\"prizeSetId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizeSetId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeWinner\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeWinner\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"userId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"placement\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeTerm\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeTerm\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"termId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeSkill\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeSkill\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"skillId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeBilling\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"billingAccountId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"markup\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"clientBillingRate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeBilling\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeLegacy\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"ReviewTypeEnum\",\"nativeType\":null,\"default\":\"INTERNAL\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"confidentialityType\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":\"public\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"forumId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"directProjectId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"screeningScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reviewScorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isTask\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"useSchedulingAPI\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5Task\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"pureV5\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfService\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"selfServiceCopilot\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"track\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subTrack\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"legacySystemId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeLegacyRelation\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeEvent\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeEvent\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"eventId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussion\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeDiscussion\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DiscussionTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"options\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussionOption\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeDiscussionOption\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussion\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeDiscussion\",\"nativeType\":null,\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\",\"relationFromFields\":[\"discussionId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionKey\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"optionValue\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeConstraint\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allowedRegistrants\",\"kind\":\"scalar\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Phase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeReviewer\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false},\"ChallengePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"duration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scheduledEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualStartDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"actualEndDate\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"constraints\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhaseConstraint\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePhase\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePhaseConstraint\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengePhase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengePhase\",\"nativeType\":null,\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\",\"relationFromFields\":[\"challengePhaseId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengePrizeSet\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"PrizeSetTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"prizes\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Prize\",\"nativeType\":null,\"relationName\":\"ChallengePrizeSetToPrize\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengePrizeSet\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"ChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToChallengeReviewer\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"ChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"DefaultChallengeReviewer\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"typeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseName\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Float\",\"nativeType\":null,\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"opportunityType\",\"kind\":\"enum\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ReviewOpportunityTypeEnum\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"aiConfigTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"14\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeType\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeType\",\"nativeType\":null,\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\",\"relationFromFields\":[\"typeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTrack\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTrack\",\"nativeType\":null,\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\",\"relationFromFields\":[\"trackId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phase\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Phase\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToPhase\",\"relationFromFields\":[\"phaseId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"TimelineTemplate\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phases\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplatePhase\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challengeTimelineTemplates\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"ChallengeTimelineTemplate\",\"nativeType\":null,\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenges\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DefaultChallengeReviewer\",\"nativeType\":null,\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"name\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"name\"]}],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"TimelineTemplatePhase\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"defaultDuration\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":true},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"TimelineTemplate\",\"nativeType\":null,\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\",\"relationFromFields\":[\"timelineTemplateId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"///////////////////////////////////////\\\\n///////////////////////////////////////\"},\"MemberChallengeAccess\":{\"dbName\":\"MemberChallengeAccess\",\"schema\":null,\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"memberId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Challenge\",\"nativeType\":null,\"relationName\":\"ChallengeToMemberChallengeAccess\",\"relationFromFields\":[\"challengeId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{\"ChallengeTrackEnum\":{\"values\":[{\"name\":\"DESIGN\",\"dbName\":null},{\"name\":\"DATA_SCIENCE\",\"dbName\":null},{\"name\":\"DEVELOPMENT\",\"dbName\":null},{\"name\":\"QUALITY_ASSURANCE\",\"dbName\":null}],\"dbName\":null},\"ReviewTypeEnum\":{\"values\":[{\"name\":\"COMMUNITY\",\"dbName\":null},{\"name\":\"INTERNAL\",\"dbName\":null},{\"name\":\"SYSTEM\",\"dbName\":null},{\"name\":\"PROVISIONAL\",\"dbName\":null},{\"name\":\"EXAMPLE\",\"dbName\":null}],\"dbName\":null},\"DiscussionTypeEnum\":{\"values\":[{\"name\":\"CHALLENGE\",\"dbName\":null}],\"dbName\":null},\"ChallengeStatusEnum\":{\"values\":[{\"name\":\"NEW\",\"dbName\":null},{\"name\":\"DRAFT\",\"dbName\":null},{\"name\":\"APPROVED\",\"dbName\":null},{\"name\":\"ACTIVE\",\"dbName\":null},{\"name\":\"COMPLETED\",\"dbName\":null},{\"name\":\"DELETED\",\"dbName\":null},{\"name\":\"CANCELLED\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_REVIEW\",\"dbName\":null},{\"name\":\"CANCELLED_FAILED_SCREENING\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_SUBMISSIONS\",\"dbName\":null},{\"name\":\"CANCELLED_WINNER_UNRESPONSIVE\",\"dbName\":null},{\"name\":\"CANCELLED_CLIENT_REQUEST\",\"dbName\":null},{\"name\":\"CANCELLED_REQUIREMENTS_INFEASIBLE\",\"dbName\":null},{\"name\":\"CANCELLED_ZERO_REGISTRATIONS\",\"dbName\":null},{\"name\":\"CANCELLED_PAYMENT_FAILED\",\"dbName\":null}],\"dbName\":null},\"PrizeSetTypeEnum\":{\"values\":[{\"name\":\"PLACEMENT\",\"dbName\":null},{\"name\":\"COPILOT\",\"dbName\":null},{\"name\":\"REVIEWER\",\"dbName\":null},{\"name\":\"PASSED_REVIEW\",\"dbName\":null},{\"name\":\"CHECKPOINT\",\"dbName\":null}],\"dbName\":null},\"ReviewOpportunityTypeEnum\":{\"values\":[{\"name\":\"REGULAR_REVIEW\",\"dbName\":null},{\"name\":\"COMPONENT_DEV_REVIEW\",\"dbName\":null},{\"name\":\"SPEC_REVIEW\",\"dbName\":null},{\"name\":\"ITERATIVE_REVIEW\",\"dbName\":null},{\"name\":\"SCENARIOS_REVIEW\",\"dbName\":null}],\"dbName\":null}},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.engineWasm = undefined config.compilerWasm = undefined diff --git a/packages/challenge-prisma-client/package.json b/packages/challenge-prisma-client/package.json index 9951bea..b098a5b 100644 --- a/packages/challenge-prisma-client/package.json +++ b/packages/challenge-prisma-client/package.json @@ -1,5 +1,5 @@ { - "name": "prisma-client-c91256c22675974efec9b3075e5c30ec14e519761fdaee6b32f15d38af842817", + "name": "prisma-client-e2cf38d434b78ed912a564b65835f204eb8d7146f275867a9db51b0649d6da72", "main": "index.js", "types": "index.d.ts", "browser": "default.js", diff --git a/packages/challenge-prisma-client/schema.prisma b/packages/challenge-prisma-client/schema.prisma index 8a7e73f..9e38a96 100644 --- a/packages/challenge-prisma-client/schema.prisma +++ b/packages/challenge-prisma-client/schema.prisma @@ -195,6 +195,8 @@ model ChallengeType { isActive Boolean @default(true) isTask Boolean @default(false) abbreviation String + legacyId Int? + isLegacy Boolean @default(false) challenges Challenge[] timelineTemplates ChallengeTimelineTemplate[] @@ -207,6 +209,8 @@ model ChallengeType { updatedBy String @@index([abbreviation]) + @@index([legacyId]) + @@index([isLegacy]) } ////////////////////////////////////////// @@ -221,6 +225,7 @@ model ChallengeTrack { abbreviation String legacyId Int? // numeric legacy system id (if provided) track ChallengeTrackEnum? // enum value from ChallengeTrackEnum + isLegacy Boolean @default(false) challenges Challenge[] // Opposite relation for ChallengeTimelineTemplate timelineTemplates ChallengeTimelineTemplate[] @@ -233,6 +238,7 @@ model ChallengeTrack { updatedBy String @@index([legacyId]) + @@index([isLegacy]) } ////////////////////////////////////////// diff --git a/packages/challenge-prisma-client/wasm.js b/packages/challenge-prisma-client/wasm.js index 2d9c137..0e47dd7 100644 --- a/packages/challenge-prisma-client/wasm.js +++ b/packages/challenge-prisma-client/wasm.js @@ -137,6 +137,8 @@ exports.Prisma.ChallengeTypeScalarFieldEnum = { isActive: 'isActive', isTask: 'isTask', abbreviation: 'abbreviation', + legacyId: 'legacyId', + isLegacy: 'isLegacy', createdAt: 'createdAt', createdBy: 'createdBy', updatedAt: 'updatedAt', @@ -151,6 +153,7 @@ exports.Prisma.ChallengeTrackScalarFieldEnum = { abbreviation: 'abbreviation', legacyId: 'legacyId', track: 'track', + isLegacy: 'isLegacy', createdAt: 'createdAt', createdBy: 'createdBy', updatedAt: 'updatedAt', @@ -805,7 +808,7 @@ const config = { "value": "prisma-client-js" }, "output": { - "value": "/home/vasea/work/topcoder/challenge-api-v6/packages/challenge-prisma-client", + "value": "/home/jmgasper/Documents/Git/v6/challenge-api-v6/packages/challenge-prisma-client", "fromEnvVar": null }, "config": { @@ -827,12 +830,11 @@ const config = { "postgresqlExtensions", "views" ], - "sourceFilePath": "/home/vasea/work/topcoder/challenge-api-v6/prisma/schema.prisma", + "sourceFilePath": "/home/jmgasper/Documents/Git/v6/challenge-api-v6/prisma/schema.prisma", "isCustomOutput": true }, "relativeEnvPaths": { - "rootEnvPath": null, - "schemaEnvPath": "../../.env" + "rootEnvPath": null }, "relativePath": "../../prisma", "clientVersion": "6.19.0", @@ -850,13 +852,13 @@ const config = { } } }, - "inlineSchema": "datasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/challenge-prisma-client\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\n// Enum for allowed challenge track values (matches app-constants)\nenum ChallengeTrackEnum {\n DESIGN\n DATA_SCIENCE\n DEVELOPMENT\n QUALITY_ASSURANCE\n}\n\nenum ReviewTypeEnum {\n COMMUNITY\n INTERNAL\n SYSTEM\n PROVISIONAL\n EXAMPLE\n}\n\nenum DiscussionTypeEnum {\n CHALLENGE\n}\n\nenum ChallengeStatusEnum {\n NEW\n DRAFT\n APPROVED\n ACTIVE\n COMPLETED\n DELETED\n CANCELLED\n CANCELLED_FAILED_REVIEW\n CANCELLED_FAILED_SCREENING\n CANCELLED_ZERO_SUBMISSIONS\n CANCELLED_WINNER_UNRESPONSIVE\n CANCELLED_CLIENT_REQUEST\n CANCELLED_REQUIREMENTS_INFEASIBLE\n CANCELLED_ZERO_REGISTRATIONS\n CANCELLED_PAYMENT_FAILED\n}\n\nenum PrizeSetTypeEnum {\n PLACEMENT\n COPILOT\n REVIEWER\n PASSED_REVIEW\n CHECKPOINT\n}\n\n// Enum for review opportunity types on reviewers\nenum ReviewOpportunityTypeEnum {\n REGULAR_REVIEW\n COMPONENT_DEV_REVIEW\n SPEC_REVIEW\n ITERATIVE_REVIEW\n SCENARIOS_REVIEW\n}\n\n//////////////////////////////////////////\n// Main Challenge model\n//////////////////////////////////////////\n\nmodel Challenge {\n id String @id @default(uuid())\n name String\n description String?\n privateDescription String?\n challengeSource String?\n descriptionFormat String?\n projectId Int? // frequently queried field\n typeId String\n trackId String // FK for relation in ChallengeTrack\n timelineTemplateId String? // now used as foreign key to ChallengeTimelineTemplate\n overviewTotalPrizes Float? // stored from overview.totalPrizes\n numOfRegistrants Int @default(0)\n numOfSubmissions Int @default(0)\n numOfCheckpointSubmissions Int @default(0)\n currentPhaseNames String[] // current phase names\n\n wiproAllowed Boolean @default(false)\n funChallenge Boolean @default(false)\n\n // simple arrays for tags and groups (PostgreSQL native array type)\n tags String[]\n groups String[]\n\n // Task information (flattened from challenge.task)\n taskIsTask Boolean @default(false)\n taskIsAssigned Boolean @default(false)\n taskMemberId String?\n\n // Dates for challenge lifecycle\n submissionStartDate DateTime?\n submissionEndDate DateTime?\n registrationStartDate DateTime?\n registrationEndDate DateTime?\n startDate DateTime?\n endDate DateTime?\n\n // Normalized billing and legacy information (one-to-one)\n billingRecord ChallengeBilling?\n legacyId Int? // Legacy system ID for searching\n legacyRecord ChallengeLegacy? @relation(\"ChallengeLegacyRelation\")\n\n // Additional fields from createChallenge schema\n status ChallengeStatusEnum @default(NEW) // new challenges default to status \"New\"\n // Normalized top‑level constraints (e.g. allowedRegistrants) for a challenge\n constraintRecord ChallengeConstraint?\n\n // Additional normalized relations from createChallenge\n events ChallengeEvent[]\n discussions ChallengeDiscussion[]\n\n // Existing relations (one-to-many) for challenge metadata, phases, prize sets, winners, attachments,\n // terms and skills\n metadata ChallengeMetadata[]\n phases ChallengePhase[]\n prizeSets ChallengePrizeSet[]\n reviewers ChallengeReviewer[]\n winners ChallengeWinner[]\n attachments Attachment[]\n terms ChallengeTerm[]\n skills ChallengeSkill[]\n auditLogs AuditLog[]\n memberAccesses MemberChallengeAccess[]\n\n // Relation to ChallengeType (FK: typeId)\n type ChallengeType @relation(fields: [typeId], references: [id])\n // Relation to ChallengeTrack (FK: trackId)\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n\n // Auditing fields (present in every table)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([projectId])\n @@index([status]) // index added for optimized search by status\n @@index([createdAt])\n @@index([updatedAt])\n @@index([typeId])\n @@index([trackId])\n @@index([groups], type: Gin, map: \"challenge_groups_gin_idx\")\n @@index([submissionStartDate])\n @@index([submissionEndDate])\n @@index([registrationStartDate])\n @@index([registrationEndDate])\n @@index([startDate])\n @@index([endDate])\n @@index([status, startDate])\n @@index([trackId, typeId, status])\n @@index([status, typeId, trackId, createdAt(sort: Desc)], map: \"challenge_status_type_track_created_at_idx\")\n @@index([legacyId])\n @@index([projectId, status])\n}\n\n//////////////////////////////////////////\n// MemberChallengeAccess view – member/challenge pairs from resources schema\n//////////////////////////////////////////\n\nview MemberChallengeAccess {\n challengeId String\n memberId String\n\n challenge Challenge @relation(fields: [challengeId], references: [id])\n\n @@map(\"MemberChallengeAccess\")\n}\n\n//////////////////////////////////////////\n// ChallengeType model\n//////////////////////////////////////////\n\nmodel ChallengeType {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n isTask Boolean @default(false)\n abbreviation String\n\n challenges Challenge[]\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this type\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([abbreviation])\n}\n\n//////////////////////////////////////////\n// ChallengeTrack model\n//////////////////////////////////////////\n\nmodel ChallengeTrack {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean\n abbreviation String\n legacyId Int? // numeric legacy system id (if provided)\n track ChallengeTrackEnum? // enum value from ChallengeTrackEnum\n challenges Challenge[]\n // Opposite relation for ChallengeTimelineTemplate\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this track\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([legacyId])\n}\n\n//////////////////////////////////////////\n// ChallengeTimelineTemplate model\n//////////////////////////////////////////\n\nmodel ChallengeTimelineTemplate {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String // now required per Swagger spec\n\n // Link to the TimelineTemplate model via timelineTemplateId.\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id])\n // Link to the ChallengeTrack model via trackId.\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n // Link to the ChallengeType model via typeId.\n type ChallengeType @relation(fields: [typeId], references: [id])\n\n isDefault Boolean @default(false)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Composite index to support searches/updates by typeId, trackId and timelineTemplateId.\n @@index([typeId, trackId, timelineTemplateId])\n}\n\n//////////////////////////////////////////\n// AuditLog model – tracks field changes\n//////////////////////////////////////////\n\nmodel AuditLog {\n id String @id @default(uuid())\n challengeId String? // optional association with a challenge\n fieldName String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now())\n createdBy String\n memberId String?\n\n // Relation field to connect AuditLog to Challenge.\n challenge Challenge? @relation(fields: [challengeId], references: [id])\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Attachment model – for challenge attachments\n//////////////////////////////////////////\n\nmodel Attachment {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String\n fileSize Int\n url String\n description String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeMetadata model – key/value metadata\n//////////////////////////////////////////\n\nmodel ChallengeMetadata {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String // name of the metadata\n value String // value stored as string for flexibility\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Prize model – individual prize in a prize set\n//////////////////////////////////////////\n\nmodel Prize {\n id String @id @default(uuid())\n description String?\n prizeSet ChallengePrizeSet @relation(fields: [prizeSetId], references: [id], onDelete: Cascade)\n prizeSetId String\n type String // e.g. \"USD\", \"POINT\" (could also be converted to enum later)\n value Float\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeWinner model – record winners for a challenge\n//////////////////////////////////////////\n\nmodel ChallengeWinner {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n userId Int\n handle String\n placement Int\n type PrizeSetTypeEnum\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type, placement])\n}\n\n//////////////////////////////////////////\n// ChallengeTerm model – association of challenge and terms\n//////////////////////////////////////////\n\nmodel ChallengeTerm {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n termId String // Terms API id\n roleId String // UUID for the associated role\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeSkill model – linking challenges with skills\n//////////////////////////////////////////\n\nmodel ChallengeSkill {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n skillId String // Request provided skillId\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeBilling model – normalized billing info\n//////////////////////////////////////////\n\nmodel ChallengeBilling {\n id String @id @default(uuid())\n billingAccountId String?\n markup Float? // in range [0, 100]\n clientBillingRate Float? // in range [0, 100]. Supporting range on postgres is an open issue with prisma https://github.com/prisma/prisma/issues/3287.\n challengeId String @unique\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeLegacy model – normalized legacy info\n//////////////////////////////////////////\n\nmodel ChallengeLegacy {\n id String @id @default(uuid())\n reviewType ReviewTypeEnum @default(INTERNAL)\n confidentialityType String @default(\"public\")\n forumId Int?\n directProjectId Int?\n screeningScorecardId Int?\n reviewScorecardId Int?\n isTask Boolean @default(false)\n useSchedulingAPI Boolean @default(false)\n pureV5Task Boolean @default(false)\n pureV5 Boolean @default(false)\n selfService Boolean @default(false)\n selfServiceCopilot String?\n track String? // as provided in the legacy object\n subTrack String? // as provided in the legacy object\n legacySystemId Int? // represents the external \"legacyId\"\n challengeId String @unique\n challenge Challenge @relation(\"ChallengeLegacyRelation\", fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeEvent model – normalized challenge events\n//////////////////////////////////////////\n\nmodel ChallengeEvent {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n eventId Int\n name String?\n key String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeDiscussion and associated options – normalized discussion channels\n//////////////////////////////////////////\n\nmodel ChallengeDiscussion {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n discussionId String?\n name String\n type DiscussionTypeEnum // updated to use enum\n provider String\n url String?\n options ChallengeDiscussionOption[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\nmodel ChallengeDiscussionOption {\n id String @id @default(uuid())\n discussion ChallengeDiscussion @relation(fields: [discussionId], references: [id], onDelete: Cascade)\n discussionId String\n optionKey String\n optionValue String\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeConstraint model – top-level challenge constraints (e.g. allowed registrants)\n//////////////////////////////////////////\n\nmodel ChallengeConstraint {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String @unique\n allowedRegistrants String[] @default([])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhase – to capture per-phase info from create/update challenge operations\n// Each phase is linked with a challenge and holds a duration and any custom constraints.\n//////////////////////////////////////////\n\nmodel Phase {\n id String @id @default(uuid())\n name String\n description String?\n isOpen Boolean\n duration Int\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Inverse relation for associated challenge phases\n challengePhases ChallengePhase[]\n ChallengeReviewer ChallengeReviewer[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\nmodel ChallengePhase {\n id String @id @default(uuid())\n challengeId String\n phaseId String // foreign key to Phase\n\n name String // phase name\n description String? // description\n isOpen Boolean? @default(false) // if this phase is open\n predecessor String? // predecessor of this phase\n duration Int? // duration in seconds\n scheduledStartDate DateTime? // when the phase is scheduled to start\n scheduledEndDate DateTime?\n actualStartDate DateTime?\n actualEndDate DateTime? // when the phase actually ended\n constraints ChallengePhaseConstraint[]\n\n // Relation fields\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n phase Phase @relation(fields: [phaseId], references: [id])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, isOpen])\n @@index([challengeId, name])\n @@index([challengeId, isOpen, scheduledEndDate, actualEndDate], map: \"challenge_phase_challenge_open_end_idx\")\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhaseConstraint – to capture custom constraints for each phase\n//////////////////////////////////////////\n\nmodel ChallengePhaseConstraint {\n id String @id @default(uuid())\n challengePhaseId String\n name String // the name/key of the constraint\n value Int // numeric value of the constraint (can be changed to Float if needed)\n\n // Relation to the phase\n challengePhase ChallengePhase @relation(fields: [challengePhaseId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengePhaseId])\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePrizeSet – to group prizes for a challenge\n//////////////////////////////////////////\n\nmodel ChallengePrizeSet {\n id String @id @default(uuid())\n challengeId String\n type PrizeSetTypeEnum // using enum instead of string\n description String?\n prizes Prize[]\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type])\n}\n\n//////////////////////////////////////////\n// ChallengeReviewer model – reviewers for a challenge, both AI and member\n//////////////////////////////////////////\n\nmodel ChallengeReviewer {\n id String @id @default(uuid())\n challengeId String\n\n // Reviewer configuration\n scorecardId String\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseId String\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n type ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n // Relation to the phase\n phase Phase @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([phaseId])\n @@index([challengeId, phaseId])\n}\n\n//////////////////////////////////////////\n// DefaultChallengeReviewer model – default reviewers by type and track\n//////////////////////////////////////////\n\nmodel DefaultChallengeReviewer {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String?\n // Reviewer configuration (mirrors ChallengeReviewer)\n scorecardId String?\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseName String\n // Optional explicit link to Phase for better fidelity\n phaseId String?\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n opportunityType ReviewOpportunityTypeEnum?\n aiConfigTemplateId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relations\n challengeType ChallengeType @relation(fields: [typeId], references: [id])\n challengeTrack ChallengeTrack @relation(fields: [trackId], references: [id])\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n // Relation to Phase (optional for backward compatibility with phaseName)\n phase Phase? @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([typeId, trackId])\n @@index([typeId, trackId, timelineTemplateId])\n @@index([phaseId])\n}\n\n//////////////////////////////////////////\n// TimelineTemplate model – defines timeline templates\n//////////////////////////////////////////\nmodel TimelineTemplate {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n phases TimelineTemplatePhase[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Opposite relation field, linking back to ChallengeTimelineTemplate.\n challengeTimelineTemplates ChallengeTimelineTemplate[]\n\n // Opposite relation field for Challenge.\n challenges Challenge[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\n//////////////////////////////////////////\n// TimelineTemplatePhase model – phases associated with a timeline template\n//////////////////////////////////////////\nmodel TimelineTemplatePhase {\n id String @id @default(uuid())\n timelineTemplateId String\n phaseId String // identifier for the phase\n predecessor String? // optional predecessor phase id\n defaultDuration Int // duration (in minutes, hours, etc.) as per business rules\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id], onDelete: Cascade)\n\n @@index([timelineTemplateId])\n @@index([timelineTemplateId, phaseId])\n}\n", - "inlineSchemaHash": "a29362a60aa8828fffd5212d1cf4900622e5c305df3ed19e69c46649a22f7174", + "inlineSchema": "datasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/challenge-prisma-client\"\n previewFeatures = [\"fullTextSearchPostgres\", \"postgresqlExtensions\", \"views\"]\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\n// Enum for allowed challenge track values (matches app-constants)\nenum ChallengeTrackEnum {\n DESIGN\n DATA_SCIENCE\n DEVELOPMENT\n QUALITY_ASSURANCE\n}\n\nenum ReviewTypeEnum {\n COMMUNITY\n INTERNAL\n SYSTEM\n PROVISIONAL\n EXAMPLE\n}\n\nenum DiscussionTypeEnum {\n CHALLENGE\n}\n\nenum ChallengeStatusEnum {\n NEW\n DRAFT\n APPROVED\n ACTIVE\n COMPLETED\n DELETED\n CANCELLED\n CANCELLED_FAILED_REVIEW\n CANCELLED_FAILED_SCREENING\n CANCELLED_ZERO_SUBMISSIONS\n CANCELLED_WINNER_UNRESPONSIVE\n CANCELLED_CLIENT_REQUEST\n CANCELLED_REQUIREMENTS_INFEASIBLE\n CANCELLED_ZERO_REGISTRATIONS\n CANCELLED_PAYMENT_FAILED\n}\n\nenum PrizeSetTypeEnum {\n PLACEMENT\n COPILOT\n REVIEWER\n PASSED_REVIEW\n CHECKPOINT\n}\n\n// Enum for review opportunity types on reviewers\nenum ReviewOpportunityTypeEnum {\n REGULAR_REVIEW\n COMPONENT_DEV_REVIEW\n SPEC_REVIEW\n ITERATIVE_REVIEW\n SCENARIOS_REVIEW\n}\n\n//////////////////////////////////////////\n// Main Challenge model\n//////////////////////////////////////////\n\nmodel Challenge {\n id String @id @default(uuid())\n name String\n description String?\n privateDescription String?\n challengeSource String?\n descriptionFormat String?\n projectId Int? // frequently queried field\n typeId String\n trackId String // FK for relation in ChallengeTrack\n timelineTemplateId String? // now used as foreign key to ChallengeTimelineTemplate\n overviewTotalPrizes Float? // stored from overview.totalPrizes\n numOfRegistrants Int @default(0)\n numOfSubmissions Int @default(0)\n numOfCheckpointSubmissions Int @default(0)\n currentPhaseNames String[] // current phase names\n\n wiproAllowed Boolean @default(false)\n funChallenge Boolean @default(false)\n\n // simple arrays for tags and groups (PostgreSQL native array type)\n tags String[]\n groups String[]\n\n // Task information (flattened from challenge.task)\n taskIsTask Boolean @default(false)\n taskIsAssigned Boolean @default(false)\n taskMemberId String?\n\n // Dates for challenge lifecycle\n submissionStartDate DateTime?\n submissionEndDate DateTime?\n registrationStartDate DateTime?\n registrationEndDate DateTime?\n startDate DateTime?\n endDate DateTime?\n\n // Normalized billing and legacy information (one-to-one)\n billingRecord ChallengeBilling?\n legacyId Int? // Legacy system ID for searching\n legacyRecord ChallengeLegacy? @relation(\"ChallengeLegacyRelation\")\n\n // Additional fields from createChallenge schema\n status ChallengeStatusEnum @default(NEW) // new challenges default to status \"New\"\n // Normalized top‑level constraints (e.g. allowedRegistrants) for a challenge\n constraintRecord ChallengeConstraint?\n\n // Additional normalized relations from createChallenge\n events ChallengeEvent[]\n discussions ChallengeDiscussion[]\n\n // Existing relations (one-to-many) for challenge metadata, phases, prize sets, winners, attachments,\n // terms and skills\n metadata ChallengeMetadata[]\n phases ChallengePhase[]\n prizeSets ChallengePrizeSet[]\n reviewers ChallengeReviewer[]\n winners ChallengeWinner[]\n attachments Attachment[]\n terms ChallengeTerm[]\n skills ChallengeSkill[]\n auditLogs AuditLog[]\n memberAccesses MemberChallengeAccess[]\n\n // Relation to ChallengeType (FK: typeId)\n type ChallengeType @relation(fields: [typeId], references: [id])\n // Relation to ChallengeTrack (FK: trackId)\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n\n // Auditing fields (present in every table)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([projectId])\n @@index([status]) // index added for optimized search by status\n @@index([createdAt])\n @@index([updatedAt])\n @@index([typeId])\n @@index([trackId])\n @@index([groups], type: Gin, map: \"challenge_groups_gin_idx\")\n @@index([submissionStartDate])\n @@index([submissionEndDate])\n @@index([registrationStartDate])\n @@index([registrationEndDate])\n @@index([startDate])\n @@index([endDate])\n @@index([status, startDate])\n @@index([trackId, typeId, status])\n @@index([status, typeId, trackId, createdAt(sort: Desc)], map: \"challenge_status_type_track_created_at_idx\")\n @@index([legacyId])\n @@index([projectId, status])\n}\n\n//////////////////////////////////////////\n// MemberChallengeAccess view – member/challenge pairs from resources schema\n//////////////////////////////////////////\n\nview MemberChallengeAccess {\n challengeId String\n memberId String\n\n challenge Challenge @relation(fields: [challengeId], references: [id])\n\n @@map(\"MemberChallengeAccess\")\n}\n\n//////////////////////////////////////////\n// ChallengeType model\n//////////////////////////////////////////\n\nmodel ChallengeType {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n isTask Boolean @default(false)\n abbreviation String\n legacyId Int?\n isLegacy Boolean @default(false)\n\n challenges Challenge[]\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this type\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([abbreviation])\n @@index([legacyId])\n @@index([isLegacy])\n}\n\n//////////////////////////////////////////\n// ChallengeTrack model\n//////////////////////////////////////////\n\nmodel ChallengeTrack {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean\n abbreviation String\n legacyId Int? // numeric legacy system id (if provided)\n track ChallengeTrackEnum? // enum value from ChallengeTrackEnum\n isLegacy Boolean @default(false)\n challenges Challenge[]\n // Opposite relation for ChallengeTimelineTemplate\n timelineTemplates ChallengeTimelineTemplate[]\n // Default reviewer configurations associated with this track\n defaultReviewers DefaultChallengeReviewer[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([legacyId])\n @@index([isLegacy])\n}\n\n//////////////////////////////////////////\n// ChallengeTimelineTemplate model\n//////////////////////////////////////////\n\nmodel ChallengeTimelineTemplate {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String // now required per Swagger spec\n\n // Link to the TimelineTemplate model via timelineTemplateId.\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id])\n // Link to the ChallengeTrack model via trackId.\n track ChallengeTrack @relation(fields: [trackId], references: [id])\n // Link to the ChallengeType model via typeId.\n type ChallengeType @relation(fields: [typeId], references: [id])\n\n isDefault Boolean @default(false)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Composite index to support searches/updates by typeId, trackId and timelineTemplateId.\n @@index([typeId, trackId, timelineTemplateId])\n}\n\n//////////////////////////////////////////\n// AuditLog model – tracks field changes\n//////////////////////////////////////////\n\nmodel AuditLog {\n id String @id @default(uuid())\n challengeId String? // optional association with a challenge\n fieldName String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now())\n createdBy String\n memberId String?\n\n // Relation field to connect AuditLog to Challenge.\n challenge Challenge? @relation(fields: [challengeId], references: [id])\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Attachment model – for challenge attachments\n//////////////////////////////////////////\n\nmodel Attachment {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String\n fileSize Int\n url String\n description String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeMetadata model – key/value metadata\n//////////////////////////////////////////\n\nmodel ChallengeMetadata {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n name String // name of the metadata\n value String // value stored as string for flexibility\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// Prize model – individual prize in a prize set\n//////////////////////////////////////////\n\nmodel Prize {\n id String @id @default(uuid())\n description String?\n prizeSet ChallengePrizeSet @relation(fields: [prizeSetId], references: [id], onDelete: Cascade)\n prizeSetId String\n type String // e.g. \"USD\", \"POINT\" (could also be converted to enum later)\n value Float\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeWinner model – record winners for a challenge\n//////////////////////////////////////////\n\nmodel ChallengeWinner {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n userId Int\n handle String\n placement Int\n type PrizeSetTypeEnum\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type, placement])\n}\n\n//////////////////////////////////////////\n// ChallengeTerm model – association of challenge and terms\n//////////////////////////////////////////\n\nmodel ChallengeTerm {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n termId String // Terms API id\n roleId String // UUID for the associated role\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeSkill model – linking challenges with skills\n//////////////////////////////////////////\n\nmodel ChallengeSkill {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n skillId String // Request provided skillId\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeBilling model – normalized billing info\n//////////////////////////////////////////\n\nmodel ChallengeBilling {\n id String @id @default(uuid())\n billingAccountId String?\n markup Float? // in range [0, 100]\n clientBillingRate Float? // in range [0, 100]. Supporting range on postgres is an open issue with prisma https://github.com/prisma/prisma/issues/3287.\n challengeId String @unique\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeLegacy model – normalized legacy info\n//////////////////////////////////////////\n\nmodel ChallengeLegacy {\n id String @id @default(uuid())\n reviewType ReviewTypeEnum @default(INTERNAL)\n confidentialityType String @default(\"public\")\n forumId Int?\n directProjectId Int?\n screeningScorecardId Int?\n reviewScorecardId Int?\n isTask Boolean @default(false)\n useSchedulingAPI Boolean @default(false)\n pureV5Task Boolean @default(false)\n pureV5 Boolean @default(false)\n selfService Boolean @default(false)\n selfServiceCopilot String?\n track String? // as provided in the legacy object\n subTrack String? // as provided in the legacy object\n legacySystemId Int? // represents the external \"legacyId\"\n challengeId String @unique\n challenge Challenge @relation(\"ChallengeLegacyRelation\", fields: [challengeId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeEvent model – normalized challenge events\n//////////////////////////////////////////\n\nmodel ChallengeEvent {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n eventId Int\n name String?\n key String?\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\n//////////////////////////////////////////\n// ChallengeDiscussion and associated options – normalized discussion channels\n//////////////////////////////////////////\n\nmodel ChallengeDiscussion {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String\n discussionId String?\n name String\n type DiscussionTypeEnum // updated to use enum\n provider String\n url String?\n options ChallengeDiscussionOption[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n}\n\nmodel ChallengeDiscussionOption {\n id String @id @default(uuid())\n discussion ChallengeDiscussion @relation(fields: [discussionId], references: [id], onDelete: Cascade)\n discussionId String\n optionKey String\n optionValue String\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// ChallengeConstraint model – top-level challenge constraints (e.g. allowed registrants)\n//////////////////////////////////////////\n\nmodel ChallengeConstraint {\n id String @id @default(uuid())\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n challengeId String @unique\n allowedRegistrants String[] @default([])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhase – to capture per-phase info from create/update challenge operations\n// Each phase is linked with a challenge and holds a duration and any custom constraints.\n//////////////////////////////////////////\n\nmodel Phase {\n id String @id @default(uuid())\n name String\n description String?\n isOpen Boolean\n duration Int\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Inverse relation for associated challenge phases\n challengePhases ChallengePhase[]\n ChallengeReviewer ChallengeReviewer[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\nmodel ChallengePhase {\n id String @id @default(uuid())\n challengeId String\n phaseId String // foreign key to Phase\n\n name String // phase name\n description String? // description\n isOpen Boolean? @default(false) // if this phase is open\n predecessor String? // predecessor of this phase\n duration Int? // duration in seconds\n scheduledStartDate DateTime? // when the phase is scheduled to start\n scheduledEndDate DateTime?\n actualStartDate DateTime?\n actualEndDate DateTime? // when the phase actually ended\n constraints ChallengePhaseConstraint[]\n\n // Relation fields\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n phase Phase @relation(fields: [phaseId], references: [id])\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, isOpen])\n @@index([challengeId, name])\n @@index([challengeId, isOpen, scheduledEndDate, actualEndDate], map: \"challenge_phase_challenge_open_end_idx\")\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePhaseConstraint – to capture custom constraints for each phase\n//////////////////////////////////////////\n\nmodel ChallengePhaseConstraint {\n id String @id @default(uuid())\n challengePhaseId String\n name String // the name/key of the constraint\n value Int // numeric value of the constraint (can be changed to Float if needed)\n\n // Relation to the phase\n challengePhase ChallengePhase @relation(fields: [challengePhaseId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengePhaseId])\n}\n\n//////////////////////////////////////////\n// New Model: ChallengePrizeSet – to group prizes for a challenge\n//////////////////////////////////////////\n\nmodel ChallengePrizeSet {\n id String @id @default(uuid())\n challengeId String\n type PrizeSetTypeEnum // using enum instead of string\n description String?\n prizes Prize[]\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([challengeId, type])\n}\n\n//////////////////////////////////////////\n// ChallengeReviewer model – reviewers for a challenge, both AI and member\n//////////////////////////////////////////\n\nmodel ChallengeReviewer {\n id String @id @default(uuid())\n challengeId String\n\n // Reviewer configuration\n scorecardId String\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseId String\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n type ReviewOpportunityTypeEnum?\n aiWorkflowId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relation to the challenge\n challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)\n // Relation to the phase\n phase Phase @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([challengeId])\n @@index([phaseId])\n @@index([challengeId, phaseId])\n}\n\n//////////////////////////////////////////\n// DefaultChallengeReviewer model – default reviewers by type and track\n//////////////////////////////////////////\n\nmodel DefaultChallengeReviewer {\n id String @id @default(uuid())\n typeId String\n trackId String\n timelineTemplateId String?\n // Reviewer configuration (mirrors ChallengeReviewer)\n scorecardId String?\n isMemberReview Boolean\n memberReviewerCount Int?\n phaseName String\n // Optional explicit link to Phase for better fidelity\n phaseId String?\n fixedAmount Float? @default(0)\n baseCoefficient Float?\n incrementalCoefficient Float?\n opportunityType ReviewOpportunityTypeEnum?\n aiConfigTemplateId String? @db.VarChar(14)\n shouldOpenOpportunity Boolean @default(true)\n\n // Relations\n challengeType ChallengeType @relation(fields: [typeId], references: [id])\n challengeTrack ChallengeTrack @relation(fields: [trackId], references: [id])\n timelineTemplate TimelineTemplate? @relation(fields: [timelineTemplateId], references: [id])\n // Relation to Phase (optional for backward compatibility with phaseName)\n phase Phase? @relation(fields: [phaseId], references: [id])\n\n // Auditing fields\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n @@index([typeId, trackId])\n @@index([typeId, trackId, timelineTemplateId])\n @@index([phaseId])\n}\n\n//////////////////////////////////////////\n// TimelineTemplate model – defines timeline templates\n//////////////////////////////////////////\nmodel TimelineTemplate {\n id String @id @default(uuid())\n name String\n description String?\n isActive Boolean @default(true)\n phases TimelineTemplatePhase[]\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n // Opposite relation field, linking back to ChallengeTimelineTemplate.\n challengeTimelineTemplates ChallengeTimelineTemplate[]\n\n // Opposite relation field for Challenge.\n challenges Challenge[]\n DefaultChallengeReviewer DefaultChallengeReviewer[]\n\n @@unique([name])\n}\n\n//////////////////////////////////////////\n// TimelineTemplatePhase model – phases associated with a timeline template\n//////////////////////////////////////////\nmodel TimelineTemplatePhase {\n id String @id @default(uuid())\n timelineTemplateId String\n phaseId String // identifier for the phase\n predecessor String? // optional predecessor phase id\n defaultDuration Int // duration (in minutes, hours, etc.) as per business rules\n\n createdAt DateTime @default(now())\n createdBy String\n updatedAt DateTime @updatedAt\n updatedBy String\n\n timelineTemplate TimelineTemplate @relation(fields: [timelineTemplateId], references: [id], onDelete: Cascade)\n\n @@index([timelineTemplateId])\n @@index([timelineTemplateId, phaseId])\n}\n", + "inlineSchemaHash": "013c60d710a175acc08038f512b16e5030bd0c3b8ccf59cb118c7e55c66e6caf", "copyEngine": true } config.dirname = '/' -config.runtimeDataModel = JSON.parse("{\"models\":{\"Challenge\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"privateDescription\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeSource\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descriptionFormat\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"projectId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trackId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"overviewTotalPrizes\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"numOfRegistrants\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"numOfSubmissions\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"numOfCheckpointSubmissions\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"currentPhaseNames\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"wiproAllowed\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"funChallenge\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"tags\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"groups\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"taskIsTask\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"taskIsAssigned\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"taskMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"submissionStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"submissionEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"registrationStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"registrationEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"startDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"billingRecord\",\"kind\":\"object\",\"type\":\"ChallengeBilling\",\"relationName\":\"ChallengeToChallengeBilling\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"legacyRecord\",\"kind\":\"object\",\"type\":\"ChallengeLegacy\",\"relationName\":\"ChallengeLegacyRelation\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"ChallengeStatusEnum\"},{\"name\":\"constraintRecord\",\"kind\":\"object\",\"type\":\"ChallengeConstraint\",\"relationName\":\"ChallengeToChallengeConstraint\"},{\"name\":\"events\",\"kind\":\"object\",\"type\":\"ChallengeEvent\",\"relationName\":\"ChallengeToChallengeEvent\"},{\"name\":\"discussions\",\"kind\":\"object\",\"type\":\"ChallengeDiscussion\",\"relationName\":\"ChallengeToChallengeDiscussion\"},{\"name\":\"metadata\",\"kind\":\"object\",\"type\":\"ChallengeMetadata\",\"relationName\":\"ChallengeToChallengeMetadata\"},{\"name\":\"phases\",\"kind\":\"object\",\"type\":\"ChallengePhase\",\"relationName\":\"ChallengeToChallengePhase\"},{\"name\":\"prizeSets\",\"kind\":\"object\",\"type\":\"ChallengePrizeSet\",\"relationName\":\"ChallengeToChallengePrizeSet\"},{\"name\":\"reviewers\",\"kind\":\"object\",\"type\":\"ChallengeReviewer\",\"relationName\":\"ChallengeToChallengeReviewer\"},{\"name\":\"winners\",\"kind\":\"object\",\"type\":\"ChallengeWinner\",\"relationName\":\"ChallengeToChallengeWinner\"},{\"name\":\"attachments\",\"kind\":\"object\",\"type\":\"Attachment\",\"relationName\":\"AttachmentToChallenge\"},{\"name\":\"terms\",\"kind\":\"object\",\"type\":\"ChallengeTerm\",\"relationName\":\"ChallengeToChallengeTerm\"},{\"name\":\"skills\",\"kind\":\"object\",\"type\":\"ChallengeSkill\",\"relationName\":\"ChallengeToChallengeSkill\"},{\"name\":\"auditLogs\",\"kind\":\"object\",\"type\":\"AuditLog\",\"relationName\":\"AuditLogToChallenge\"},{\"name\":\"memberAccesses\",\"kind\":\"object\",\"type\":\"MemberChallengeAccess\",\"relationName\":\"ChallengeToMemberChallengeAccess\"},{\"name\":\"type\",\"kind\":\"object\",\"type\":\"ChallengeType\",\"relationName\":\"ChallengeToChallengeType\"},{\"name\":\"track\",\"kind\":\"object\",\"type\":\"ChallengeTrack\",\"relationName\":\"ChallengeToChallengeTrack\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"ChallengeToTimelineTemplate\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeType\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isTask\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenges\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeType\"},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"type\":\"ChallengeTimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToChallengeType\"},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeTrack\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"track\",\"kind\":\"enum\",\"type\":\"ChallengeTrackEnum\"},{\"name\":\"challenges\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeTrack\"},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"type\":\"ChallengeTimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\"},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeTimelineTemplate\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trackId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\"},{\"name\":\"track\",\"kind\":\"object\",\"type\":\"ChallengeTrack\",\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\"},{\"name\":\"type\",\"kind\":\"object\",\"type\":\"ChallengeType\",\"relationName\":\"ChallengeTimelineTemplateToChallengeType\"},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"AuditLog\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fieldName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"newValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"AuditLogToChallenge\"}],\"dbName\":null},\"Attachment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"AttachmentToChallenge\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeMetadata\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeMetadata\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Prize\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prizeSet\",\"kind\":\"object\",\"type\":\"ChallengePrizeSet\",\"relationName\":\"ChallengePrizeSetToPrize\"},{\"name\":\"prizeSetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeWinner\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeWinner\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"handle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"placement\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"PrizeSetTypeEnum\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeTerm\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeTerm\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"termId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeSkill\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeSkill\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"skillId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeBilling\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"billingAccountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"markup\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"clientBillingRate\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeBilling\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeLegacy\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewType\",\"kind\":\"enum\",\"type\":\"ReviewTypeEnum\"},{\"name\":\"confidentialityType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"forumId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"directProjectId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"screeningScorecardId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"reviewScorecardId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"isTask\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"useSchedulingAPI\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"pureV5Task\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"pureV5\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"selfService\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"selfServiceCopilot\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"track\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"subTrack\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacySystemId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeLegacyRelation\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeEvent\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeEvent\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeDiscussion\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeDiscussion\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"DiscussionTypeEnum\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"options\",\"kind\":\"object\",\"type\":\"ChallengeDiscussionOption\",\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeDiscussionOption\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"discussion\",\"kind\":\"object\",\"type\":\"ChallengeDiscussion\",\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\"},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"optionKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"optionValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeConstraint\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeConstraint\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"allowedRegistrants\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Phase\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"duration\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengePhases\",\"kind\":\"object\",\"type\":\"ChallengePhase\",\"relationName\":\"ChallengePhaseToPhase\"},{\"name\":\"ChallengeReviewer\",\"kind\":\"object\",\"type\":\"ChallengeReviewer\",\"relationName\":\"ChallengeReviewerToPhase\"},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"DefaultChallengeReviewerToPhase\"}],\"dbName\":null},\"ChallengePhase\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"duration\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"scheduledStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scheduledEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"actualStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"actualEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"constraints\",\"kind\":\"object\",\"type\":\"ChallengePhaseConstraint\",\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengePhase\"},{\"name\":\"phase\",\"kind\":\"object\",\"type\":\"Phase\",\"relationName\":\"ChallengePhaseToPhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengePhaseConstraint\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengePhaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"challengePhase\",\"kind\":\"object\",\"type\":\"ChallengePhase\",\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengePrizeSet\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"PrizeSetTypeEnum\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prizes\",\"kind\":\"object\",\"type\":\"Prize\",\"relationName\":\"ChallengePrizeSetToPrize\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengePrizeSet\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeReviewer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"ReviewOpportunityTypeEnum\"},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeReviewer\"},{\"name\":\"phase\",\"kind\":\"object\",\"type\":\"Phase\",\"relationName\":\"ChallengeReviewerToPhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"DefaultChallengeReviewer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trackId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"phaseName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"opportunityType\",\"kind\":\"enum\",\"type\":\"ReviewOpportunityTypeEnum\"},{\"name\":\"aiConfigTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"challengeType\",\"kind\":\"object\",\"type\":\"ChallengeType\",\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\"},{\"name\":\"challengeTrack\",\"kind\":\"object\",\"type\":\"ChallengeTrack\",\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\"},{\"name\":\"phase\",\"kind\":\"object\",\"type\":\"Phase\",\"relationName\":\"DefaultChallengeReviewerToPhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"TimelineTemplate\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"phases\",\"kind\":\"object\",\"type\":\"TimelineTemplatePhase\",\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeTimelineTemplates\",\"kind\":\"object\",\"type\":\"ChallengeTimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\"},{\"name\":\"challenges\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToTimelineTemplate\"},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\"}],\"dbName\":null},\"TimelineTemplatePhase\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"defaultDuration\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\"}],\"dbName\":null},\"MemberChallengeAccess\":{\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToMemberChallengeAccess\"}],\"dbName\":\"MemberChallengeAccess\"}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Challenge\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"privateDescription\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeSource\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descriptionFormat\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"projectId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trackId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"overviewTotalPrizes\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"numOfRegistrants\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"numOfSubmissions\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"numOfCheckpointSubmissions\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"currentPhaseNames\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"wiproAllowed\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"funChallenge\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"tags\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"groups\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"taskIsTask\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"taskIsAssigned\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"taskMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"submissionStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"submissionEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"registrationStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"registrationEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"startDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"billingRecord\",\"kind\":\"object\",\"type\":\"ChallengeBilling\",\"relationName\":\"ChallengeToChallengeBilling\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"legacyRecord\",\"kind\":\"object\",\"type\":\"ChallengeLegacy\",\"relationName\":\"ChallengeLegacyRelation\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"ChallengeStatusEnum\"},{\"name\":\"constraintRecord\",\"kind\":\"object\",\"type\":\"ChallengeConstraint\",\"relationName\":\"ChallengeToChallengeConstraint\"},{\"name\":\"events\",\"kind\":\"object\",\"type\":\"ChallengeEvent\",\"relationName\":\"ChallengeToChallengeEvent\"},{\"name\":\"discussions\",\"kind\":\"object\",\"type\":\"ChallengeDiscussion\",\"relationName\":\"ChallengeToChallengeDiscussion\"},{\"name\":\"metadata\",\"kind\":\"object\",\"type\":\"ChallengeMetadata\",\"relationName\":\"ChallengeToChallengeMetadata\"},{\"name\":\"phases\",\"kind\":\"object\",\"type\":\"ChallengePhase\",\"relationName\":\"ChallengeToChallengePhase\"},{\"name\":\"prizeSets\",\"kind\":\"object\",\"type\":\"ChallengePrizeSet\",\"relationName\":\"ChallengeToChallengePrizeSet\"},{\"name\":\"reviewers\",\"kind\":\"object\",\"type\":\"ChallengeReviewer\",\"relationName\":\"ChallengeToChallengeReviewer\"},{\"name\":\"winners\",\"kind\":\"object\",\"type\":\"ChallengeWinner\",\"relationName\":\"ChallengeToChallengeWinner\"},{\"name\":\"attachments\",\"kind\":\"object\",\"type\":\"Attachment\",\"relationName\":\"AttachmentToChallenge\"},{\"name\":\"terms\",\"kind\":\"object\",\"type\":\"ChallengeTerm\",\"relationName\":\"ChallengeToChallengeTerm\"},{\"name\":\"skills\",\"kind\":\"object\",\"type\":\"ChallengeSkill\",\"relationName\":\"ChallengeToChallengeSkill\"},{\"name\":\"auditLogs\",\"kind\":\"object\",\"type\":\"AuditLog\",\"relationName\":\"AuditLogToChallenge\"},{\"name\":\"memberAccesses\",\"kind\":\"object\",\"type\":\"MemberChallengeAccess\",\"relationName\":\"ChallengeToMemberChallengeAccess\"},{\"name\":\"type\",\"kind\":\"object\",\"type\":\"ChallengeType\",\"relationName\":\"ChallengeToChallengeType\"},{\"name\":\"track\",\"kind\":\"object\",\"type\":\"ChallengeTrack\",\"relationName\":\"ChallengeToChallengeTrack\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"ChallengeToTimelineTemplate\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeType\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isTask\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"isLegacy\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"challenges\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeType\"},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"type\":\"ChallengeTimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToChallengeType\"},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeTrack\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"track\",\"kind\":\"enum\",\"type\":\"ChallengeTrackEnum\"},{\"name\":\"isLegacy\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"challenges\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeTrack\"},{\"name\":\"timelineTemplates\",\"kind\":\"object\",\"type\":\"ChallengeTimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\"},{\"name\":\"defaultReviewers\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeTimelineTemplate\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trackId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\"},{\"name\":\"track\",\"kind\":\"object\",\"type\":\"ChallengeTrack\",\"relationName\":\"ChallengeTimelineTemplateToChallengeTrack\"},{\"name\":\"type\",\"kind\":\"object\",\"type\":\"ChallengeType\",\"relationName\":\"ChallengeTimelineTemplateToChallengeType\"},{\"name\":\"isDefault\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"AuditLog\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fieldName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"newValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"AuditLogToChallenge\"}],\"dbName\":null},\"Attachment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"AttachmentToChallenge\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeMetadata\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeMetadata\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Prize\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prizeSet\",\"kind\":\"object\",\"type\":\"ChallengePrizeSet\",\"relationName\":\"ChallengePrizeSetToPrize\"},{\"name\":\"prizeSetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeWinner\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeWinner\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"handle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"placement\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"PrizeSetTypeEnum\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeTerm\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeTerm\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"termId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeSkill\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeSkill\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"skillId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeBilling\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"billingAccountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"markup\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"clientBillingRate\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeBilling\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeLegacy\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewType\",\"kind\":\"enum\",\"type\":\"ReviewTypeEnum\"},{\"name\":\"confidentialityType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"forumId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"directProjectId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"screeningScorecardId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"reviewScorecardId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"isTask\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"useSchedulingAPI\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"pureV5Task\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"pureV5\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"selfService\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"selfServiceCopilot\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"track\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"subTrack\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacySystemId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeLegacyRelation\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeEvent\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeEvent\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeDiscussion\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeDiscussion\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"DiscussionTypeEnum\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"options\",\"kind\":\"object\",\"type\":\"ChallengeDiscussionOption\",\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeDiscussionOption\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"discussion\",\"kind\":\"object\",\"type\":\"ChallengeDiscussion\",\"relationName\":\"ChallengeDiscussionToChallengeDiscussionOption\"},{\"name\":\"discussionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"optionKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"optionValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeConstraint\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeConstraint\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"allowedRegistrants\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Phase\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"duration\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengePhases\",\"kind\":\"object\",\"type\":\"ChallengePhase\",\"relationName\":\"ChallengePhaseToPhase\"},{\"name\":\"ChallengeReviewer\",\"kind\":\"object\",\"type\":\"ChallengeReviewer\",\"relationName\":\"ChallengeReviewerToPhase\"},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"DefaultChallengeReviewerToPhase\"}],\"dbName\":null},\"ChallengePhase\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isOpen\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"duration\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"scheduledStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scheduledEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"actualStartDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"actualEndDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"constraints\",\"kind\":\"object\",\"type\":\"ChallengePhaseConstraint\",\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengePhase\"},{\"name\":\"phase\",\"kind\":\"object\",\"type\":\"Phase\",\"relationName\":\"ChallengePhaseToPhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengePhaseConstraint\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengePhaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"challengePhase\",\"kind\":\"object\",\"type\":\"ChallengePhase\",\"relationName\":\"ChallengePhaseToChallengePhaseConstraint\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengePrizeSet\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"PrizeSetTypeEnum\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prizes\",\"kind\":\"object\",\"type\":\"Prize\",\"relationName\":\"ChallengePrizeSetToPrize\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengePrizeSet\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ChallengeReviewer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"ReviewOpportunityTypeEnum\"},{\"name\":\"aiWorkflowId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToChallengeReviewer\"},{\"name\":\"phase\",\"kind\":\"object\",\"type\":\"Phase\",\"relationName\":\"ChallengeReviewerToPhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"DefaultChallengeReviewer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trackId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scorecardId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isMemberReview\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"memberReviewerCount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"phaseName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fixedAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"baseCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"incrementalCoefficient\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"opportunityType\",\"kind\":\"enum\",\"type\":\"ReviewOpportunityTypeEnum\"},{\"name\":\"aiConfigTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"shouldOpenOpportunity\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"challengeType\",\"kind\":\"object\",\"type\":\"ChallengeType\",\"relationName\":\"ChallengeTypeToDefaultChallengeReviewer\"},{\"name\":\"challengeTrack\",\"kind\":\"object\",\"type\":\"ChallengeTrack\",\"relationName\":\"ChallengeTrackToDefaultChallengeReviewer\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\"},{\"name\":\"phase\",\"kind\":\"object\",\"type\":\"Phase\",\"relationName\":\"DefaultChallengeReviewerToPhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"TimelineTemplate\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"phases\",\"kind\":\"object\",\"type\":\"TimelineTemplatePhase\",\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeTimelineTemplates\",\"kind\":\"object\",\"type\":\"ChallengeTimelineTemplate\",\"relationName\":\"ChallengeTimelineTemplateToTimelineTemplate\"},{\"name\":\"challenges\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToTimelineTemplate\"},{\"name\":\"DefaultChallengeReviewer\",\"kind\":\"object\",\"type\":\"DefaultChallengeReviewer\",\"relationName\":\"DefaultChallengeReviewerToTimelineTemplate\"}],\"dbName\":null},\"TimelineTemplatePhase\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplateId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phaseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"predecessor\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"defaultDuration\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timelineTemplate\",\"kind\":\"object\",\"type\":\"TimelineTemplate\",\"relationName\":\"TimelineTemplateToTimelineTemplatePhase\"}],\"dbName\":null},\"MemberChallengeAccess\":{\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeToMemberChallengeAccess\"}],\"dbName\":\"MemberChallengeAccess\"}},\"enums\":{},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.engineWasm = { getRuntime: async () => require('./query_engine_bg.js'), diff --git a/prisma/migrations/20260316090000_add_legacy_type_visibility_flags/migration.sql b/prisma/migrations/20260316090000_add_legacy_type_visibility_flags/migration.sql new file mode 100644 index 0000000..9ae4872 --- /dev/null +++ b/prisma/migrations/20260316090000_add_legacy_type_visibility_flags/migration.sql @@ -0,0 +1,64 @@ +ALTER TABLE "ChallengeType" +ADD COLUMN "legacyId" INTEGER, +ADD COLUMN "isLegacy" BOOLEAN NOT NULL DEFAULT false; + +ALTER TABLE "ChallengeTrack" +ADD COLUMN "isLegacy" BOOLEAN NOT NULL DEFAULT false; + +CREATE INDEX "ChallengeType_legacyId_idx" ON "ChallengeType"("legacyId"); +CREATE INDEX "ChallengeType_isLegacy_idx" ON "ChallengeType"("isLegacy"); +CREATE INDEX "ChallengeTrack_isLegacy_idx" ON "ChallengeTrack"("isLegacy"); + +UPDATE "ChallengeType" +SET "legacyId" = 149 +WHERE "name" = 'First2Finish' + AND "legacyId" IS NULL; + +INSERT INTO "ChallengeType" ( + "id", + "name", + "description", + "isActive", + "isTask", + "abbreviation", + "legacyId", + "isLegacy", + "createdAt", + "createdBy", + "updatedAt", + "updatedBy" +) +SELECT + seed."id", + seed."name", + seed."description", + true, + false, + seed."abbreviation", + seed."legacyId", + true, + CURRENT_TIMESTAMP, + 'migration', + CURRENT_TIMESTAMP, + 'migration' +FROM ( + VALUES + ('ac043fcf-fe36-46c6-8480-2e12bd5300cd', 'SRM', 'Legacy SRM subtype retained for historical stats references.', 'SRM', NULL), + ('b02fdb46-8fad-4e91-aa81-14453f647ac9', 'CODE', 'Legacy develop subtype retained for historical stats references.', 'COD', 150), + ('7e361ed7-4846-4e8e-8cfe-d747590d2611', 'DESIGN', 'Legacy develop subtype retained for historical stats references.', 'LDES', NULL), + ('0984ef6a-e1f9-46de-8425-43b8d29f55f5', 'DEVELOPMENT', 'Legacy develop subtype retained for historical stats references.', 'LDEV', NULL), + ('ca4681e8-a4be-44f5-9ada-0b8b43428233', 'SPECIFICATION', 'Legacy develop subtype retained for historical stats references.', 'LSPC', NULL), + ('2e3a9589-21c5-42fc-bc91-27077e171c45', 'ARCHITECTURE', 'Legacy develop subtype retained for historical stats references.', 'LARC', NULL), + ('c2e6b73d-26e8-46c6-9a86-9c22144e98f2', 'TEST_SUITES', 'Legacy develop subtype retained for historical stats references.', 'LTST', NULL), + ('78253687-cc08-4aa8-b897-7a4f0c0b362d', 'ASSEMBLY_COMPETITION', 'Legacy develop subtype retained for historical stats references.', 'LASM', 125), + ('7d68e306-bc13-4c59-8481-d2b7f5d1c344', 'UI_PROTOTYPE_COMPETITION', 'Legacy develop subtype retained for historical stats references.', 'LUIP', NULL), + ('ce7fe807-fb83-4f9c-ac12-919adb89b411', 'CONCEPTUALIZATION', 'Legacy develop subtype retained for historical stats references.', 'LCON', 134), + ('dfd9b687-b1c8-4ec2-8fd2-bfbf07fe2802', 'RIA_BUILD_COMPETITION', 'Legacy develop subtype retained for historical stats references.', 'LRIA', NULL), + ('9bd8bf24-b4e9-4231-8fbf-ab1474906a5a', 'TEST_SCENARIOS', 'Legacy develop subtype retained for historical stats references.', 'LSCN', NULL), + ('cf86f84c-c601-42c5-b55b-36d82a17818b', 'COPILOT_POSTING', 'Legacy develop subtype retained for historical stats references.', 'LCOP', NULL) +) AS seed("id", "name", "description", "abbreviation", "legacyId") +WHERE NOT EXISTS ( + SELECT 1 + FROM "ChallengeType" existing + WHERE existing."name" = seed."name" +); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index ad36754..0ee5b96 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -195,6 +195,8 @@ model ChallengeType { isActive Boolean @default(true) isTask Boolean @default(false) abbreviation String + legacyId Int? + isLegacy Boolean @default(false) challenges Challenge[] timelineTemplates ChallengeTimelineTemplate[] @@ -207,6 +209,8 @@ model ChallengeType { updatedBy String @@index([abbreviation]) + @@index([legacyId]) + @@index([isLegacy]) } ////////////////////////////////////////// @@ -221,6 +225,7 @@ model ChallengeTrack { abbreviation String legacyId Int? // numeric legacy system id (if provided) track ChallengeTrackEnum? // enum value from ChallengeTrackEnum + isLegacy Boolean @default(false) challenges Challenge[] // Opposite relation for ChallengeTimelineTemplate timelineTemplates ChallengeTimelineTemplate[] @@ -233,6 +238,7 @@ model ChallengeTrack { updatedBy String @@index([legacyId]) + @@index([isLegacy]) } ////////////////////////////////////////// diff --git a/src/scripts/seed/ChallengeTrack.json b/src/scripts/seed/ChallengeTrack.json index 10ca9af..bf704a5 100644 --- a/src/scripts/seed/ChallengeTrack.json +++ b/src/scripts/seed/ChallengeTrack.json @@ -5,46 +5,50 @@ "isActive": true, "abbreviation": "Dev", "legacyId": 1, - "track": "DEVELOP", + "track": "DEVELOPMENT", + "isLegacy": false, "createdAt": "2025-03-10T13:08:02.378Z", "createdBy": "topcoder user", "updatedAt": "2025-03-10T13:08:02.378Z", "updatedBy": "topcoder user" }, { - "id": "c0f5d461-8219-4c14-878a-c3a3f356466d", - "name": "Data Science", - "isActive": true, - "abbreviation": "DS", - "legacyId": 2, - "track": "DATA_SCIENCE", - "createdAt": "2025-03-10T13:08:02.378Z", - "createdBy": "topcoder user", - "updatedAt": "2025-03-10T13:08:02.378Z", - "updatedBy": "topcoder user" + "id": "c0f5d461-8219-4c14-878a-c3a3f356466d", + "name": "Data Science", + "isActive": true, + "abbreviation": "DS", + "legacyId": 2, + "track": "DATA_SCIENCE", + "isLegacy": false, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" }, { - "id": "5fa04185-041f-49a6-bfd1-fe82533cd6c8", - "name": "Design", - "isActive": true, - "abbreviation": "Des", - "legacyId": 3, - "track": "DESIGN", - "createdAt": "2025-03-10T13:08:02.378Z", - "createdBy": "topcoder user", - "updatedAt": "2025-03-10T13:08:02.378Z", - "updatedBy": "topcoder user" + "id": "5fa04185-041f-49a6-bfd1-fe82533cd6c8", + "name": "Design", + "isActive": true, + "abbreviation": "Des", + "legacyId": 3, + "track": "DESIGN", + "isLegacy": false, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" }, { - "id": "36e6a8d0-7e1e-4608-a673-64279d99c115", - "name": "Quality Assurance", - "isActive": true, - "abbreviation": "QA", - "legacyId": 4, - "track": "QA", - "createdAt": "2025-03-10T13:08:02.378Z", - "createdBy": "topcoder user", - "updatedAt": "2025-03-10T13:08:02.378Z", - "updatedBy": "topcoder user" + "id": "36e6a8d0-7e1e-4608-a673-64279d99c115", + "name": "Quality Assurance", + "isActive": true, + "abbreviation": "QA", + "legacyId": 4, + "track": "QUALITY_ASSURANCE", + "isLegacy": false, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" } ] diff --git a/src/scripts/seed/ChallengeType.json b/src/scripts/seed/ChallengeType.json index 20ee5ad..c804563 100644 --- a/src/scripts/seed/ChallengeType.json +++ b/src/scripts/seed/ChallengeType.json @@ -1,50 +1,227 @@ [ { - "id": "ecd58c69-238f-43a4-a4bb-d172719b9f31", - "name": "Task", - "description": "An assignment earned by a sole competitor to demonstrate a specific skill set.", - "isActive": true, - "isTask": true, - "abbreviation": "TSK", - "createdAt": "2025-03-10T13:08:02.378Z", - "createdBy": "topcoder user", - "updatedAt": "2025-03-10T13:08:02.378Z", - "updatedBy": "topcoder user" - }, - { - "id": "929bc408-9cf2-4b3e-ba71-adfbf693046c", - "name": "Marathon Match", - "description": "A match predicated on solving one problem using only what is deemed the best method", - "isActive": true, - "isTask": false, - "abbreviation": "MM", - "createdAt": "2025-03-10T13:08:02.378Z", - "createdBy": "topcoder user", - "updatedAt": "2025-03-10T13:08:02.378Z", - "updatedBy": "topcoder user" - }, - { - "id": "927abff4-7af9-4145-8ba1-577c16e64e2e", - "name": "Challenge", - "description": "A competition-driven entity with a host of score-based challenges and rankings.", - "isActive": true, - "isTask": false, - "abbreviation": "CH", - "createdAt": "2025-03-10T13:08:02.378Z", - "createdBy": "topcoder user", - "updatedAt": "2025-03-10T13:08:02.378Z", - "updatedBy": "topcoder user" - }, - { - "id": "dc876fa4-ef2d-4eee-b701-b555fcc6544c", - "name": "First2Finish", - "description": "A contest in which the winner is set by being the first to submit a completed task.", - "isActive": true, - "isTask": false, - "abbreviation": "F2F", - "createdAt": "2025-03-10T13:08:02.378Z", - "createdBy": "topcoder user", - "updatedAt": "2025-03-10T13:08:02.378Z", - "updatedBy": "topcoder user" + "id": "ecd58c69-238f-43a4-a4bb-d172719b9f31", + "name": "Task", + "description": "An assignment earned by a sole competitor to demonstrate a specific skill set.", + "isActive": true, + "isTask": true, + "abbreviation": "TSK", + "isLegacy": false, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "929bc408-9cf2-4b3e-ba71-adfbf693046c", + "name": "Marathon Match", + "description": "A match predicated on solving one problem using only what is deemed the best method", + "isActive": true, + "isTask": false, + "abbreviation": "MM", + "isLegacy": false, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "927abff4-7af9-4145-8ba1-577c16e64e2e", + "name": "Challenge", + "description": "A competition-driven entity with a host of score-based challenges and rankings.", + "isActive": true, + "isTask": false, + "abbreviation": "CH", + "isLegacy": false, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "dc876fa4-ef2d-4eee-b701-b555fcc6544c", + "name": "First2Finish", + "description": "A contest in which the winner is set by being the first to submit a completed task.", + "isActive": true, + "isTask": false, + "abbreviation": "F2F", + "legacyId": 149, + "isLegacy": false, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "ac043fcf-fe36-46c6-8480-2e12bd5300cd", + "name": "SRM", + "description": "Legacy SRM subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "SRM", + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "b02fdb46-8fad-4e91-aa81-14453f647ac9", + "name": "CODE", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "COD", + "legacyId": 150, + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "7e361ed7-4846-4e8e-8cfe-d747590d2611", + "name": "DESIGN", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "LDES", + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "0984ef6a-e1f9-46de-8425-43b8d29f55f5", + "name": "DEVELOPMENT", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "LDEV", + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "ca4681e8-a4be-44f5-9ada-0b8b43428233", + "name": "SPECIFICATION", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "LSPC", + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "2e3a9589-21c5-42fc-bc91-27077e171c45", + "name": "ARCHITECTURE", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "LARC", + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "c2e6b73d-26e8-46c6-9a86-9c22144e98f2", + "name": "TEST_SUITES", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "LTST", + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "78253687-cc08-4aa8-b897-7a4f0c0b362d", + "name": "ASSEMBLY_COMPETITION", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "LASM", + "legacyId": 125, + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "7d68e306-bc13-4c59-8481-d2b7f5d1c344", + "name": "UI_PROTOTYPE_COMPETITION", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "LUIP", + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "ce7fe807-fb83-4f9c-ac12-919adb89b411", + "name": "CONCEPTUALIZATION", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "LCON", + "legacyId": 134, + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "dfd9b687-b1c8-4ec2-8fd2-bfbf07fe2802", + "name": "RIA_BUILD_COMPETITION", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "LRIA", + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "9bd8bf24-b4e9-4231-8fbf-ab1474906a5a", + "name": "TEST_SCENARIOS", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "LSCN", + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, + { + "id": "cf86f84c-c601-42c5-b55b-36d82a17818b", + "name": "COPILOT_POSTING", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "LCOP", + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" } ] diff --git a/src/services/ChallengeTrackService.js b/src/services/ChallengeTrackService.js index 6f03104..51b125c 100644 --- a/src/services/ChallengeTrackService.js +++ b/src/services/ChallengeTrackService.js @@ -77,7 +77,7 @@ function getSearchFilter(criteria) { if (!_.isEmpty(criteria.abbreviation)) { ret.abbreviation = { equals: criteria.abbreviation }; } - if (_.isUndefined(criteria.isActive)) { + if (!_.isUndefined(criteria.isActive)) { ret.isActive = { equals: criteria.isActive }; } if (criteria.legacyId) { @@ -86,6 +86,7 @@ function getSearchFilter(criteria) { if (!_.isEmpty(criteria.track)) { ret.track = { equals: normalizeTrackValue(criteria.track) }; } + ret.isLegacy = { equals: _.isUndefined(criteria.isLegacy) ? false : criteria.isLegacy }; return ret; } @@ -98,7 +99,10 @@ searchChallengeTracks.schema = { isActive: Joi.boolean(), abbreviation: Joi.string(), legacyId: Joi.number().integer().positive(), - track: Joi.string().uppercase().valid(...supportedTrackValues), + track: Joi.string() + .uppercase() + .valid(...supportedTrackValues), + isLegacy: Joi.boolean(), }), }; @@ -127,7 +131,7 @@ async function checkTrackAbrv(abbreviation) { }); if (existingByAbbr.length > 0) { throw new errors.ConflictError( - `ChallengeTrack with abbreviation ${abbreviation} already exists` + `ChallengeTrack with abbreviation ${abbreviation} already exists`, ); } } @@ -144,6 +148,7 @@ async function createChallengeTrack(authUser, type) { const normalizedTrack = normalizeTrackValue(type.track); let ret = await prisma.challengeTrack.create({ data: { + isLegacy: false, ...type, track: normalizedTrack, createdBy: authUser.userId, @@ -166,7 +171,10 @@ createChallengeTrack.schema = { isActive: Joi.boolean().required(), abbreviation: Joi.string().required(), legacyId: Joi.number().integer().positive(), - track: Joi.string().uppercase().valid(...supportedTrackValues), + track: Joi.string() + .uppercase() + .valid(...supportedTrackValues), + isLegacy: Joi.boolean().default(false), }) .required(), }; @@ -215,6 +223,9 @@ async function fullyUpdateChallengeTrack(authUser, id, data) { } else { data.track = normalizeTrackValue(data.track); } + if (_.isUndefined(data.isLegacy)) { + data.isLegacy = false; + } data.updatedBy = authUser.userId; let ret = await prisma.challengeTrack.update({ where: { id }, @@ -237,7 +248,10 @@ fullyUpdateChallengeTrack.schema = { isActive: Joi.boolean().required(), abbreviation: Joi.string().required(), legacyId: Joi.number().integer().positive(), - track: Joi.string().uppercase().valid(...supportedTrackValues), + track: Joi.string() + .uppercase() + .valid(...supportedTrackValues), + isLegacy: Joi.boolean(), }) .required(), }; @@ -282,7 +296,10 @@ partiallyUpdateChallengeTrack.schema = { isActive: Joi.boolean(), abbreviation: Joi.string(), legacyId: Joi.number().integer().positive(), - track: Joi.string().uppercase().valid(...supportedTrackValues), + track: Joi.string() + .uppercase() + .valid(...supportedTrackValues), + isLegacy: Joi.boolean(), }) .required(), }; diff --git a/src/services/ChallengeTypeService.js b/src/services/ChallengeTypeService.js index 8508f75..59edd87 100644 --- a/src/services/ChallengeTypeService.js +++ b/src/services/ChallengeTypeService.js @@ -1,5 +1,5 @@ /** - * This service provides operations of challenge tracks. + * This service provides operations of challenge types. */ const _ = require("lodash"); const Joi = require("joi"); @@ -59,6 +59,10 @@ function getSearchFilter(criteria) { if (!_.isUndefined(criteria.isTask)) { ret.isTask = { equals: criteria.isTask }; } + if (!_.isUndefined(criteria.legacyId)) { + ret.legacyId = { equals: criteria.legacyId }; + } + ret.isLegacy = { equals: _.isUndefined(criteria.isLegacy) ? false : criteria.isLegacy }; return ret; } @@ -71,6 +75,8 @@ searchChallengeTypes.schema = { isActive: Joi.boolean(), isTask: Joi.boolean(), abbreviation: Joi.string(), + legacyId: Joi.number().integer().positive(), + isLegacy: Joi.boolean(), }), }; @@ -99,11 +105,33 @@ async function checkTypeAbrv(abbreviation) { }); if (existingByAbbr && existingByAbbr.length > 0) { throw new errors.ConflictError( - `ChallengeType with abbreviation: ${abbreviation} already exist` + `ChallengeType with abbreviation: ${abbreviation} already exist`, ); } } +/** + * Check challenge type exists by same legacyId. + * @param {Number} legacyId challenge type legacy id + * @param {String} [excludeId] optional type id to exclude from the lookup + * @throws conflict error if same legacy id exists + */ +async function checkTypeLegacyId(legacyId, excludeId) { + if (_.isNil(legacyId)) { + return; + } + + const existingByLegacyId = await prisma.challengeType.findMany({ + where: { + legacyId, + ...(excludeId ? { id: { not: excludeId } } : {}), + }, + }); + if (existingByLegacyId && existingByLegacyId.length > 0) { + throw new errors.ConflictError(`ChallengeType with legacyId: ${legacyId} already exist`); + } +} + /** * Create challenge type. * @param {Object} authUser auth user info @@ -113,8 +141,10 @@ async function checkTypeAbrv(abbreviation) { async function createChallengeType(authUser, type) { await checkTypeName(type.name); await checkTypeAbrv(type.abbreviation); + await checkTypeLegacyId(type.legacyId); let ret = await prisma.challengeType.create({ data: { + isLegacy: false, ...type, createdBy: authUser.userId, updatedBy: authUser.userId, @@ -136,6 +166,8 @@ createChallengeType.schema = { isActive: Joi.boolean().required(), isTask: Joi.boolean(), abbreviation: Joi.string().required(), + legacyId: Joi.number().integer().positive(), + isLegacy: Joi.boolean().default(false), }) .required(), }; @@ -175,9 +207,18 @@ async function fullyUpdateChallengeType(authUser, id, data) { if (type.abbreviation.toLowerCase() !== data.abbreviation.toLowerCase()) { await checkTypeAbrv(data.abbreviation); } + if (type.legacyId !== data.legacyId) { + await checkTypeLegacyId(data.legacyId, id); + } if (_.isUndefined(data.description)) { data.description = null; } + if (_.isUndefined(data.legacyId)) { + data.legacyId = null; + } + if (_.isUndefined(data.isLegacy)) { + data.isLegacy = false; + } let ret = await prisma.challengeType.update({ data: { ...data, @@ -201,6 +242,8 @@ fullyUpdateChallengeType.schema = { isActive: Joi.boolean().required(), isTask: Joi.boolean(), abbreviation: Joi.string().required(), + legacyId: Joi.number().integer().positive(), + isLegacy: Joi.boolean(), }) .required(), }; @@ -220,6 +263,9 @@ async function partiallyUpdateChallengeType(authUser, id, data) { if (data.abbreviation && type.abbreviation.toLowerCase() !== data.abbreviation.toLowerCase()) { await checkTypeAbrv(data.abbreviation); } + if (!_.isUndefined(data.legacyId) && type.legacyId !== data.legacyId) { + await checkTypeLegacyId(data.legacyId, id); + } data.updatedBy = authUser.userId; let ret = await prisma.challengeType.update({ where: { id }, @@ -242,6 +288,8 @@ partiallyUpdateChallengeType.schema = { isActive: Joi.boolean(), isTask: Joi.boolean().default(false), abbreviation: Joi.string(), + legacyId: Joi.number().integer().positive(), + isLegacy: Joi.boolean(), }) .required(), }; diff --git a/test/unit/ChallengeTrackService.test.js b/test/unit/ChallengeTrackService.test.js index cebd4ec..bbe32b2 100644 --- a/test/unit/ChallengeTrackService.test.js +++ b/test/unit/ChallengeTrackService.test.js @@ -2,40 +2,40 @@ * Unit tests of challenge track service */ -require('../../app-bootstrap') -const { v4: uuid } = require('uuid') -const chai = require('chai') +require("../../app-bootstrap"); +const { v4: uuid } = require("uuid"); +const chai = require("chai"); -const service = require('../../src/services/ChallengeTrackService') -const prisma = require('../../src/common/prisma').getClient() +const service = require("../../src/services/ChallengeTrackService"); +const prisma = require("../../src/common/prisma").getClient(); -const should = chai.should() +const should = chai.should(); -describe('challenge track service unit tests', () => { - let originalFindMany - let originalCreate - let originalFindUnique - let originalUpdate +describe("challenge track service unit tests", () => { + let originalFindMany; + let originalCreate; + let originalFindUnique; + let originalUpdate; beforeEach(() => { - originalFindMany = prisma.challengeTrack.findMany - originalCreate = prisma.challengeTrack.create - originalFindUnique = prisma.challengeTrack.findUnique - originalUpdate = prisma.challengeTrack.update - }) + originalFindMany = prisma.challengeTrack.findMany; + originalCreate = prisma.challengeTrack.create; + originalFindUnique = prisma.challengeTrack.findUnique; + originalUpdate = prisma.challengeTrack.update; + }); afterEach(() => { - prisma.challengeTrack.findMany = originalFindMany - prisma.challengeTrack.create = originalCreate - prisma.challengeTrack.findUnique = originalFindUnique - prisma.challengeTrack.update = originalUpdate - }) - - it('create challenge track - accepts DEVELOP alias', async () => { - let createdPayload - prisma.challengeTrack.findMany = async () => [] + prisma.challengeTrack.findMany = originalFindMany; + prisma.challengeTrack.create = originalCreate; + prisma.challengeTrack.findUnique = originalFindUnique; + prisma.challengeTrack.update = originalUpdate; + }); + + it("create challenge track - accepts DEVELOP alias", async () => { + let createdPayload; + prisma.challengeTrack.findMany = async () => []; prisma.challengeTrack.create = async ({ data }) => { - createdPayload = data + createdPayload = data; return { id: uuid(), name: data.name, @@ -47,72 +47,93 @@ describe('challenge track service unit tests', () => { createdAt: new Date(), createdBy: data.createdBy, updatedAt: new Date(), - updatedBy: data.updatedBy - } - } + updatedBy: data.updatedBy, + }; + }; - const result = await service.createChallengeTrack({ userId: 'test-user' }, { - name: `track-${Date.now()}`, - isActive: true, - abbreviation: `abbr-${Date.now()}`, - track: 'DEVELOP' - }) + const result = await service.createChallengeTrack( + { userId: "test-user" }, + { + name: `track-${Date.now()}`, + isActive: true, + abbreviation: `abbr-${Date.now()}`, + track: "DEVELOP", + }, + ); - should.equal(createdPayload.track, 'DEVELOPMENT') - should.equal(result.track, 'DEVELOPMENT') - }) + should.equal(createdPayload.track, "DEVELOPMENT"); + should.equal(result.track, "DEVELOPMENT"); + }); - it('search challenge tracks - accepts QA alias', async () => { - let receivedFilter + it("search challenge tracks - accepts QA alias", async () => { + let receivedFilter; prisma.challengeTrack.findMany = async ({ where }) => { - receivedFilter = where - return [] - } + receivedFilter = where; + return []; + }; const result = await service.searchChallengeTracks({ page: 1, perPage: 10, - track: 'QA' - }) + track: "QA", + }); + + should.equal(result.total, 0); + should.equal(receivedFilter.track.equals, "QUALITY_ASSURANCE"); + should.equal(receivedFilter.isLegacy.equals, false); + }); - should.equal(result.total, 0) - should.equal(receivedFilter.track.equals, 'QUALITY_ASSURANCE') - }) + it("search challenge tracks - supports explicit legacy filter", async () => { + let receivedFilter; + prisma.challengeTrack.findMany = async ({ where }) => { + receivedFilter = where; + return []; + }; - it('partially update challenge track - accepts QA alias', async () => { - let updatedPayload - const id = uuid() + const result = await service.searchChallengeTracks({ + page: 1, + perPage: 10, + isLegacy: true, + }); + + should.equal(result.total, 0); + should.equal(receivedFilter.isLegacy.equals, true); + }); + + it("partially update challenge track - accepts QA alias", async () => { + let updatedPayload; + const id = uuid(); prisma.challengeTrack.findUnique = async () => ({ id, - name: 'Design', + name: "Design", description: null, isActive: true, - abbreviation: 'DS', + abbreviation: "DS", legacyId: null, - track: 'DESIGN', + track: "DESIGN", createdAt: new Date(), - createdBy: 'seed-user', + createdBy: "seed-user", updatedAt: new Date(), - updatedBy: 'seed-user' - }) - prisma.challengeTrack.findMany = async () => [] + updatedBy: "seed-user", + }); + prisma.challengeTrack.findMany = async () => []; prisma.challengeTrack.update = async ({ data }) => { - updatedPayload = data + updatedPayload = data; return { id, ...data, createdAt: new Date(), - createdBy: 'seed-user', + createdBy: "seed-user", updatedAt: new Date(), - updatedBy: data.updatedBy - } - } - - const result = await service.partiallyUpdateChallengeTrack({ userId: 'test-user' }, id, { - track: 'QA' - }) - - should.equal(updatedPayload.track, 'QUALITY_ASSURANCE') - should.equal(result.track, 'QUALITY_ASSURANCE') - }) -}) + updatedBy: data.updatedBy, + }; + }; + + const result = await service.partiallyUpdateChallengeTrack({ userId: "test-user" }, id, { + track: "QA", + }); + + should.equal(updatedPayload.track, "QUALITY_ASSURANCE"); + should.equal(result.track, "QUALITY_ASSURANCE"); + }); +}); diff --git a/test/unit/ChallengeTypeService.legacy.test.js b/test/unit/ChallengeTypeService.legacy.test.js new file mode 100644 index 0000000..e9d4a1e --- /dev/null +++ b/test/unit/ChallengeTypeService.legacy.test.js @@ -0,0 +1,100 @@ +/* + * Unit tests for legacy-specific challenge type behavior. + */ + +require("../../app-bootstrap"); +const { v4: uuid } = require("uuid"); +const chai = require("chai"); + +const service = require("../../src/services/ChallengeTypeService"); +const prisma = require("../../src/common/prisma").getClient(); + +const should = chai.should(); + +describe("challenge type service legacy unit tests", () => { + let originalFindMany; + let originalCreate; + + beforeEach(() => { + originalFindMany = prisma.challengeType.findMany; + originalCreate = prisma.challengeType.create; + }); + + afterEach(() => { + prisma.challengeType.findMany = originalFindMany; + prisma.challengeType.create = originalCreate; + }); + + it("search challenge types hides legacy records by default", async () => { + let receivedFilter; + prisma.challengeType.findMany = async ({ where }) => { + receivedFilter = where; + return []; + }; + + const result = await service.searchChallengeTypes({ + page: 1, + perPage: 10, + name: "ARCHITECTURE", + }); + + should.equal(result.total, 0); + should.equal(receivedFilter.isLegacy.equals, false); + }); + + it("search challenge types supports explicit legacy filter", async () => { + let receivedFilter; + prisma.challengeType.findMany = async ({ where }) => { + receivedFilter = where; + return []; + }; + + const result = await service.searchChallengeTypes({ + page: 1, + perPage: 10, + isLegacy: true, + }); + + should.equal(result.total, 0); + should.equal(receivedFilter.isLegacy.equals, true); + }); + + it("create challenge type accepts legacy metadata", async () => { + let createdPayload; + prisma.challengeType.findMany = async () => []; + prisma.challengeType.create = async ({ data }) => { + createdPayload = data; + return { + id: uuid(), + name: data.name, + description: data.description || null, + isActive: data.isActive, + isTask: data.isTask || false, + abbreviation: data.abbreviation, + legacyId: data.legacyId || null, + isLegacy: data.isLegacy || false, + createdAt: new Date(), + createdBy: data.createdBy, + updatedAt: new Date(), + updatedBy: data.updatedBy, + }; + }; + + const result = await service.createChallengeType( + { userId: "test-user" }, + { + name: `legacy-type-${Date.now()}`, + description: "Legacy historical subtype", + isActive: true, + abbreviation: `lg-${Date.now()}`, + legacyId: 150, + isLegacy: true, + }, + ); + + should.equal(createdPayload.legacyId, 150); + should.equal(createdPayload.isLegacy, true); + should.equal(result.legacyId, 150); + should.equal(result.isLegacy, true); + }); +}); From 1e05f2192b0f283dd0aebfbeeabb32d49bbfdadc Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 16 Mar 2026 15:13:01 +0200 Subject: [PATCH 17/43] PM-4302 - create ai screening phase before checkpoint screening --- src/common/challenge-helper.js | 169 ++++++++++++++++--------------- src/services/ChallengeService.js | 2 +- 2 files changed, 90 insertions(+), 81 deletions(-) diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index a11d2c4..fb50e57 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -15,6 +15,7 @@ const { ensureAcessibilityToModifiedGroups } = require("./group-helper"); const { ChallengeStatusEnum } = require("@prisma/client"); const SUBMISSION_PHASE_PRIORITY = ["Topgear Submission", "Topcoder Submission", "Submission"]; +const CHECKPOINT_SUBMISSION_PHASE_NAME = "Checkpoint Submission"; class ChallengeHelper { /** @@ -513,13 +514,13 @@ class ChallengeHelper { /** * Add AI Screening phase for challenges with AI reviewers. - * The AI screening phase is positioned after submission and allocated 4 hours by default. + * AI screening phases are positioned after submission/checkpoint submission and allocated 4 hours by default. * * @param {Object} challenge challenge payload (mutated in-place) * @param {Object} prisma Prisma client * @param {Function} logDebugMessage optional logging function */ - async addAIScreeningPhaseForChallengeCreation(challenge, prisma, logDebugMessage = () => {}) { + async addAIScreeningPhaseForChallenge(challenge, prisma, logDebugMessage = () => {}) { if (!challenge || !challenge.phases || !Array.isArray(challenge.reviewers)) { return; } @@ -532,21 +533,24 @@ class ChallengeHelper { return; } - // Check if AI Screening phase already exists - const aiScreeningPhaseExists = challenge.phases.some((phase) => phase.name === "AI Screening"); - if (aiScreeningPhaseExists) { - logDebugMessage("AI screening phase already exists, skipping creation"); - return; - } - - // Find the submission phase + // Find the regular submission phase const submissionPhaseName = SUBMISSION_PHASE_PRIORITY.find((name) => challenge.phases.some((phase) => phase.name === name) ); - if (!submissionPhaseName) { + const submissionPhase = submissionPhaseName + ? challenge.phases.find((phase) => phase.name === submissionPhaseName) + : null; + + // Find the checkpoint submission phase (if present) + const checkpointSubmissionPhase = challenge.phases.find( + (phase) => phase.name === CHECKPOINT_SUBMISSION_PHASE_NAME + ); + + const sourceSubmissionPhases = _.compact([checkpointSubmissionPhase, submissionPhase]); + if (sourceSubmissionPhases.length === 0) { throw new errors.BadRequestError( - `Cannot add AI screening phase: no submission phase found in challenge` + `Cannot add AI screening phase: no submission/checkpoint submission phase found in challenge` ); } @@ -564,83 +568,88 @@ class ChallengeHelper { const [aiScreeningPhaseId, aiScreeningPhaseDef] = aiScreeningPhaseDefEntry; - // Find the submission phase in the challenge phases - const submissionPhase = challenge.phases.find((phase) => phase.name === submissionPhaseName); - if (!submissionPhase) { - throw new errors.BadRequestError( - `Cannot add AI screening phase: submission phase not found in challenge phases` + sourceSubmissionPhases.forEach((sourcePhase) => { + const aiScreeningPhaseExistsForSource = challenge.phases.some( + (phase) => phase.name === "AI Screening" && phase.predecessor === sourcePhase.phaseId ); - } - - const reviewPhases = challenge.phases.filter( - (phase) => - phase.name && - phase.name.toLowerCase().includes("review") && - phase.predecessor === submissionPhase.phaseId - ); - // Create the AI Screening challenge phase - const aiScreeningPhase = { - phaseId: aiScreeningPhaseId, - name: "AI Screening", - description: aiScreeningPhaseDef.description, - duration: 14400, // 4 hours in seconds - isOpen: false, - predecessor: submissionPhase.phaseId, // predecessor is the submission phase's phaseId - constraints: [], - scheduledStartDate: undefined, - scheduledEndDate: undefined, - actualStartDate: undefined, - actualEndDate: undefined, - }; + if (aiScreeningPhaseExistsForSource) { + logDebugMessage( + `AI screening phase already exists for predecessor=${sourcePhase.phaseId}, skipping creation` + ); + return; + } - // Ensure AI Screening is ordered between submission and review phases in the phases array. - const firstReviewIndex = challenge.phases.indexOf(reviewPhases[0]); - logDebugMessage(`(firstReviewIndex=${firstReviewIndex})`) - if (firstReviewIndex >= 0) { - challenge.phases.splice(firstReviewIndex, 0, aiScreeningPhase); - } else { - challenge.phases.push(aiScreeningPhase); - } + const reviewPhases = challenge.phases.filter( + (phase) => + phase.name && + phase.name.toLowerCase().includes("review") && + phase.predecessor === sourcePhase.phaseId + ); - // Re-link review phase(s) so they start after AI Screening instead of submission. - reviewPhases.forEach((phase) => { - phase.predecessor = aiScreeningPhase.phaseId; - }); + const aiScreeningPhase = { + phaseId: aiScreeningPhaseId, + name: "AI Screening", + description: aiScreeningPhaseDef.description, + duration: 14400, // 4 hours in seconds + isOpen: false, + predecessor: sourcePhase.phaseId, + constraints: [], + scheduledStartDate: undefined, + scheduledEndDate: undefined, + actualStartDate: undefined, + actualEndDate: undefined, + }; - // Recalculate phase dates to keep timeline in sync - if (submissionPhase.scheduledEndDate) { - aiScreeningPhase.scheduledStartDate = submissionPhase.scheduledEndDate; - aiScreeningPhase.scheduledEndDate = moment(aiScreeningPhase.scheduledStartDate) - .add(aiScreeningPhase.duration, "seconds") - .toDate() - .toISOString(); - - logDebugMessage( - `AI screening phase dates calculated (start=${aiScreeningPhase.scheduledStartDate}, end=${aiScreeningPhase.scheduledEndDate})` - ); + // Ensure AI Screening is ordered between source submission and review phases. + const firstReviewIndex = challenge.phases.indexOf(reviewPhases[0]); + const sourcePhaseIndex = challenge.phases.indexOf(sourcePhase); + if (firstReviewIndex >= 0) { + challenge.phases.splice(firstReviewIndex, 0, aiScreeningPhase); + } else if (sourcePhaseIndex >= 0) { + challenge.phases.splice(sourcePhaseIndex + 1, 0, aiScreeningPhase); + } else { + challenge.phases.push(aiScreeningPhase); + } - // Update dates for review phases that now depend on AI Screening + // Re-link review phase(s) so they start after AI Screening instead of source submission. reviewPhases.forEach((phase) => { - if (_.isNil(phase.actualStartDate)) { - phase.scheduledStartDate = aiScreeningPhase.scheduledEndDate; - if (phase.duration) { - phase.scheduledEndDate = moment(phase.scheduledStartDate) - .add(phase.duration, "seconds") - .toDate() - .toISOString(); - - logDebugMessage( - `Updated ${phase.name} phase dates (start=${phase.scheduledStartDate}, end=${phase.scheduledEndDate})` - ); - } - } + phase.predecessor = aiScreeningPhase.phaseId; }); - } - logDebugMessage( - `AI screening phase added (phaseId=${aiScreeningPhase.phaseId}), updated ${reviewPhases.length} review predecessor(s)` - ); + // Recalculate phase dates to keep timeline in sync + if (sourcePhase.scheduledEndDate) { + aiScreeningPhase.scheduledStartDate = sourcePhase.scheduledEndDate; + aiScreeningPhase.scheduledEndDate = moment(aiScreeningPhase.scheduledStartDate) + .add(aiScreeningPhase.duration, "seconds") + .toDate() + .toISOString(); + + logDebugMessage( + `AI screening phase dates calculated (predecessor=${sourcePhase.phaseId}, start=${aiScreeningPhase.scheduledStartDate}, end=${aiScreeningPhase.scheduledEndDate})` + ); + + reviewPhases.forEach((phase) => { + if (_.isNil(phase.actualStartDate)) { + phase.scheduledStartDate = aiScreeningPhase.scheduledEndDate; + if (phase.duration) { + phase.scheduledEndDate = moment(phase.scheduledStartDate) + .add(phase.duration, "seconds") + .toDate() + .toISOString(); + + logDebugMessage( + `Updated ${phase.name} phase dates (start=${phase.scheduledStartDate}, end=${phase.scheduledEndDate})` + ); + } + } + }); + } + + logDebugMessage( + `AI screening phase added (phaseId=${aiScreeningPhase.phaseId}, predecessor=${sourcePhase.phaseId}), updated ${reviewPhases.length} review predecessor(s)` + ); + }); } async validateChallengeUpdateRequest(currentUser, challenge, data, challengeResources) { diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 8430254..2f17cae 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -2726,7 +2726,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { logger.debug(`updateChallenge: checking if AI screening phase needs to be added (challengeId=${challengeId})`); const tempChallenge = { phases: phasesForUpdate || challenge.phases, reviewers: data.reviewers || challenge.reviewers }; const debugLogForAI = (message) => logger.debug(`updateChallenge(AI screening): ${message} (challengeId=${challengeId})`); - await challengeHelper.addAIScreeningPhaseForChallengeCreation( + await challengeHelper.addAIScreeningPhaseForChallenge( tempChallenge, prisma, debugLogForAI, From 8754bc93a0fb04ab46f0753643c7c5b7bf5a649c Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 16 Mar 2026 15:50:03 +0200 Subject: [PATCH 18/43] PM-4308 - do not allow manual close for ai screening phase if there are running workflows --- src/common/helper.js | 73 ++++++++++++++++++++++++++++++++ src/services/ChallengeService.js | 71 +++++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+) diff --git a/src/common/helper.js b/src/common/helper.js index 74b19f8..d2a0716 100644 --- a/src/common/helper.js +++ b/src/common/helper.js @@ -1505,6 +1505,77 @@ async function getChallengeSubmissions(challengeId) { return allSubmissions; } +/** + * Get AI review config for challenge. + * @param {String} challengeId the challenge id + * @returns {Promise} AI review config or null when not found + */ +async function getAIReviewConfigByChallengeId(challengeId) { + const token = await m2mHelper.getM2MToken(); + const reviewsApiBaseUrl = _.trimEnd( + config.REVIEWS_API_URL || "https://api.topcoder-dev.com", + "/" + ); + + try { + const result = await axios.get(`${reviewsApiBaseUrl}/ai-review/configs/${challengeId}`, { + headers: { Authorization: `Bearer ${token}` }, + }); + return result.data || null; + } catch (err) { + if (_.get(err, "response.status") === HttpStatus.NOT_FOUND) { + return null; + } + throw err; + } +} + +/** + * Get all AI review decisions by AI review config id. + * @param {String} configId the AI review config id + * @returns {Promise} AI review decisions + */ +async function getAIReviewDecisionsByConfigId(configId) { + const token = await m2mHelper.getM2MToken(); + const reviewsApiBaseUrl = _.trimEnd( + config.REVIEWS_API_URL || "https://api.topcoder-dev.com", + "/" + ); + + const allDecisions = []; + let page = 1; + while (true) { + const result = await axios.get(`${reviewsApiBaseUrl}/ai-review/decisions`, { + headers: { Authorization: `Bearer ${token}` }, + params: { + configId, + page, + perPage: 100, + }, + }); + + const pageData = _.get(result, "data.data", result.data || []); + const decisions = Array.isArray(pageData) ? pageData : []; + if (decisions.length === 0) { + break; + } + + allDecisions.push(...decisions); + + const totalPages = _.get(result, "data.meta.totalPages"); + if (!totalPages) { + break; + } + + page += 1; + if (page > totalPages) { + break; + } + } + + return allDecisions; +} + /** * Get review summations for a challenge * @param {String} challengeId the challenge ID @@ -1829,6 +1900,8 @@ module.exports = { getProjectIdByRoundId, getGroupById, getChallengeSubmissions, + getAIReviewConfigByChallengeId, + getAIReviewDecisionsByConfigId, getReviewSummations, getMemberById, createSelfServiceProject, diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 2f17cae..1075404 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -105,6 +105,70 @@ const REVIEW_PHASE_NAMES = Object.freeze([ ]); const REVIEW_PHASE_NAME_SET = new Set(REVIEW_PHASE_NAMES); const REQUIRED_REVIEW_PHASE_NAME_SET = new Set([...REVIEW_PHASE_NAMES, "iterative review"]); +const AI_SCREENING_PHASE_NAME = "ai screening"; + +function normalizePhaseNameForComparison(phaseName) { + return _.toString(phaseName).replace(/-/g, " ").trim().toLowerCase(); +} + +function extractSubmissionId(submission) { + const candidate = + _.get(submission, "id") || + _.get(submission, "submissionId") || + _.get(submission, "legacySubmissionId"); + if (_.isNil(candidate)) { + return null; + } + const normalized = _.toString(candidate).trim(); + return normalized.length > 0 ? normalized : null; +} + +async function ensureAIScreeningCanBeClosed(challenge) { + const hasAIReviewers = Array.isArray(challenge.reviewers) + ? challenge.reviewers.some((reviewer) => !reviewer.isMemberReview && reviewer.aiWorkflowId) + : false; + + if (!hasAIReviewers) { + return; + } + + const aiReviewConfig = await helper.getAIReviewConfigByChallengeId(challenge.id); + if (!aiReviewConfig || !aiReviewConfig.id) { + throw new errors.BadRequestError( + "Cannot close AI Screening phase because AI review configuration could not be fetched" + ); + } + + const [submissions, decisions] = await Promise.all([ + helper.getChallengeSubmissions(challenge.id), + helper.getAIReviewDecisionsByConfigId(aiReviewConfig.id), + ]); + + const submissionIds = _.uniq( + (submissions || []).map((submission) => extractSubmissionId(submission)).filter((id) => !!id) + ); + if (submissionIds.length === 0) { + return; + } + + const finalizedDecisionSubmissionIds = new Set( + (decisions || []) + .filter((decision) => decision && decision.isFinal === true) + .map((decision) => extractSubmissionId(decision)) + .filter((id) => !!id) + ); + + const hasPendingDecision = (decisions || []).some((decision) => decision && decision.isFinal !== true); + const missingFinalizedSubmissions = submissionIds.filter( + (submissionId) => !finalizedDecisionSubmissionIds.has(submissionId) + ); + + if (hasPendingDecision || missingFinalizedSubmissions.length > 0) { + throw new errors.BadRequestError( + "Cannot close AI Screening phase because AI reviews are not complete" + ); + } +} /** * Enrich skills data with full details from standardized skills API. @@ -3988,6 +4052,13 @@ async function advancePhase(currentUser, challengeId, data) { throw new errors.BadRequestError(`Challenge with id: ${challengeId} is not in ACTIVE status.`); } + const isClosingAIScreening = + data.operation === "close" && + normalizePhaseNameForComparison(data.phase) === AI_SCREENING_PHASE_NAME; + if (isClosingAIScreening) { + await ensureAIScreeningCanBeClosed(challenge); + } + const phaseAdvancerResult = await phaseAdvancer.advancePhase( challenge.id, challenge.legacyId, From 90529e23e2d44ed29dc5594cc66ad67fccdc97fa Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 16 Mar 2026 15:55:25 +0200 Subject: [PATCH 19/43] Ensure ai screening phase preceeds review or screening phases --- src/common/challenge-helper.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index fb50e57..36284cf 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -583,7 +583,7 @@ class ChallengeHelper { const reviewPhases = challenge.phases.filter( (phase) => phase.name && - phase.name.toLowerCase().includes("review") && + (phase.name.toLowerCase().includes("review") || phase.name.toLowerCase().includes("screening")) && phase.predecessor === sourcePhase.phaseId ); @@ -601,7 +601,7 @@ class ChallengeHelper { actualEndDate: undefined, }; - // Ensure AI Screening is ordered between source submission and review phases. + // Ensure AI Screening is ordered between source submission and review (or screening) phases. const firstReviewIndex = challenge.phases.indexOf(reviewPhases[0]); const sourcePhaseIndex = challenge.phases.indexOf(sourcePhase); if (firstReviewIndex >= 0) { From aad04e9d59d1c1707baa87d552d915ca02c4c724 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 16 Mar 2026 22:10:56 +0200 Subject: [PATCH 20/43] PM-4308 #time 2h ensure user can't manually close ai screening phase when there are pending decissions --- src/common/challenge-helper.js | 7 +-- src/services/ChallengePhaseService.js | 72 +++++++++++++++++++++++++++ src/services/ChallengeService.js | 60 +--------------------- 3 files changed, 77 insertions(+), 62 deletions(-) diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index 36284cf..6e083a4 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -449,7 +449,8 @@ class ChallengeHelper { config.REVIEWS_API_URL || "https://api.topcoder-dev.com", "/" ); - const url = `${reviewsApiBaseUrl}/v6/ai-review/configs`; + + const url = `${reviewsApiBaseUrl}/ai-review/configs`; for (const aiReviewConfig of aiReviewConfigs) { const payload = { @@ -491,10 +492,10 @@ class ChallengeHelper { async getAIReviewTemplateById(templateId) { const token = await getM2MToken(); const reviewsApiBaseUrl = _.trimEnd( - config.REVIEWS_API_URL || "https://api.topcoder-dev.com", + config.REVIEWS_API_URL || "http://localhost:3002", "/" ); - const url = `${reviewsApiBaseUrl}/v6/ai-review/templates/${templateId}`; + const url = `${reviewsApiBaseUrl}/ai-review/templates/${templateId}`; try { const response = await axios.get(url, { diff --git a/src/services/ChallengePhaseService.js b/src/services/ChallengePhaseService.js index 4c6c4da..209c8ad 100644 --- a/src/services/ChallengePhaseService.js +++ b/src/services/ChallengePhaseService.js @@ -353,6 +353,73 @@ async function hasPendingAppealResponsesForChallenge(challengeId) { return Number(count) > 0; } +function extractSubmissionId(submission) { + const candidate = + _.get(submission, "id") || + _.get(submission, "submissionId") || + _.get(submission, "legacySubmissionId"); + if (_.isNil(candidate)) { + return null; + } + const normalized = _.toString(candidate).trim(); + return normalized.length > 0 ? normalized : null; +} + +async function ensureChallengeHasAiReviewers(challengeId) { + const reviewers = await prisma.challengeReviewer.findMany({ + where: { challengeId, isMemberReview: false, aiWorkflowId: { not: null } }, + }); + + const hasAIReviewers = Array.isArray(reviewers) && reviewers.length > 0; + + if (!hasAIReviewers) { + throw new errors.BadRequestError( + `Challenge does not have any AI reviewers assigned` + ); + } +} + +async function ensureAIScreeningCanBeClosed(challengeId) { + await ensureChallengeHasAiReviewers(challengeId); + + const aiReviewConfig = await helper.getAIReviewConfigByChallengeId(challengeId); + if (!aiReviewConfig || !aiReviewConfig.id) { + throw new errors.BadRequestError( + "Cannot close AI Screening phase because AI review configuration could not be fetched" + ); + } + + const [submissions, decisions] = await Promise.all([ + helper.getChallengeSubmissions(challengeId), + helper.getAIReviewDecisionsByConfigId(aiReviewConfig.id), + ]); + + const submissionIds = _.uniq( + (submissions || []).map((submission) => extractSubmissionId(submission)).filter((id) => !!id) + ); + if (submissionIds.length === 0) { + return; + } + + const finalizedDecisionSubmissionIds = new Set( + (decisions || []) + .filter((decision) => decision && decision.isFinal === true) + .map((decision) => extractSubmissionId(decision)) + .filter((id) => !!id) + ); + + const hasPendingDecision = (decisions || []).some((decision) => decision && decision.isFinal !== true); + const missingFinalizedSubmissions = submissionIds.filter( + (submissionId) => !finalizedDecisionSubmissionIds.has(submissionId) + ); + + if (hasPendingDecision || missingFinalizedSubmissions.length > 0) { + throw new errors.BadRequestError( + "Cannot close AI Screening phase because AI reviews are not complete" + ); + } +} + async function checkChallengeExists(challengeId) { const challenge = await prisma.challenge.findUnique({ where: { id: challengeId } }); if (!challenge) { @@ -612,6 +679,11 @@ async function partiallyUpdateChallengePhase(currentUser, challengeId, id, data) "Appeals Response phase can't be closed because there are still appeals that haven't been responded to" ); } + + if (String(closingPhaseName || "").toLowerCase() === "ai screening") { + await ensureAIScreeningCanBeClosed(challenge); + } + if (!("actualEndDate" in data) || _.isNil(data.actualEndDate)) { data.actualEndDate = new Date(); } diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 1075404..88cf8f5 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -34,6 +34,7 @@ const { PrizeSetTypeEnum, ReviewOpportunityTypeEnum, } = require("../common/prisma"); +const { ensureAIScreeningCanBeClosed } = require("./ChallengePhaseService"); const prisma = getClient(); // Provide aliases for friendlier sortBy query params @@ -111,65 +112,6 @@ function normalizePhaseNameForComparison(phaseName) { return _.toString(phaseName).replace(/-/g, " ").trim().toLowerCase(); } -function extractSubmissionId(submission) { - const candidate = - _.get(submission, "id") || - _.get(submission, "submissionId") || - _.get(submission, "legacySubmissionId"); - if (_.isNil(candidate)) { - return null; - } - const normalized = _.toString(candidate).trim(); - return normalized.length > 0 ? normalized : null; -} - -async function ensureAIScreeningCanBeClosed(challenge) { - const hasAIReviewers = Array.isArray(challenge.reviewers) - ? challenge.reviewers.some((reviewer) => !reviewer.isMemberReview && reviewer.aiWorkflowId) - : false; - - if (!hasAIReviewers) { - return; - } - - const aiReviewConfig = await helper.getAIReviewConfigByChallengeId(challenge.id); - if (!aiReviewConfig || !aiReviewConfig.id) { - throw new errors.BadRequestError( - "Cannot close AI Screening phase because AI review configuration could not be fetched" - ); - } - - const [submissions, decisions] = await Promise.all([ - helper.getChallengeSubmissions(challenge.id), - helper.getAIReviewDecisionsByConfigId(aiReviewConfig.id), - ]); - - const submissionIds = _.uniq( - (submissions || []).map((submission) => extractSubmissionId(submission)).filter((id) => !!id) - ); - if (submissionIds.length === 0) { - return; - } - - const finalizedDecisionSubmissionIds = new Set( - (decisions || []) - .filter((decision) => decision && decision.isFinal === true) - .map((decision) => extractSubmissionId(decision)) - .filter((id) => !!id) - ); - - const hasPendingDecision = (decisions || []).some((decision) => decision && decision.isFinal !== true); - const missingFinalizedSubmissions = submissionIds.filter( - (submissionId) => !finalizedDecisionSubmissionIds.has(submissionId) - ); - - if (hasPendingDecision || missingFinalizedSubmissions.length > 0) { - throw new errors.BadRequestError( - "Cannot close AI Screening phase because AI reviews are not complete" - ); - } -} - /** * Enrich skills data with full details from standardized skills API. * @param {Object} challenge the challenge object From 7b66fd0993e27f43858ef660f2d7c3b81a33d8c5 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 16 Mar 2026 22:32:14 +0200 Subject: [PATCH 21/43] undo mess --- src/common/challenge-helper.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index 6e083a4..a319c36 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -450,7 +450,7 @@ class ChallengeHelper { "/" ); - const url = `${reviewsApiBaseUrl}/ai-review/configs`; + const url = `${reviewsApiBaseUrl}/v6/ai-review/configs`; for (const aiReviewConfig of aiReviewConfigs) { const payload = { @@ -492,10 +492,10 @@ class ChallengeHelper { async getAIReviewTemplateById(templateId) { const token = await getM2MToken(); const reviewsApiBaseUrl = _.trimEnd( - config.REVIEWS_API_URL || "http://localhost:3002", + config.REVIEWS_API_URL || "https://api.topcoder-dev.com", "/" ); - const url = `${reviewsApiBaseUrl}/ai-review/templates/${templateId}`; + const url = `${reviewsApiBaseUrl}/v6/ai-review/templates/${templateId}`; try { const response = await axios.get(url, { From e52728a6ccd7d2e5f8a7cb47e8b1c7dd8de3a728 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 16 Mar 2026 22:46:09 +0200 Subject: [PATCH 22/43] fix challenge check --- src/services/ChallengePhaseService.js | 2 +- src/services/ChallengeService.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/services/ChallengePhaseService.js b/src/services/ChallengePhaseService.js index 209c8ad..ffa64dd 100644 --- a/src/services/ChallengePhaseService.js +++ b/src/services/ChallengePhaseService.js @@ -681,7 +681,7 @@ async function partiallyUpdateChallengePhase(currentUser, challengeId, id, data) } if (String(closingPhaseName || "").toLowerCase() === "ai screening") { - await ensureAIScreeningCanBeClosed(challenge); + await ensureAIScreeningCanBeClosed(challengePhase.challengeId); } if (!("actualEndDate" in data) || _.isNil(data.actualEndDate)) { diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 88cf8f5..8a46907 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -3998,7 +3998,7 @@ async function advancePhase(currentUser, challengeId, data) { data.operation === "close" && normalizePhaseNameForComparison(data.phase) === AI_SCREENING_PHASE_NAME; if (isClosingAIScreening) { - await ensureAIScreeningCanBeClosed(challenge); + await ensureAIScreeningCanBeClosed(challenge.id); } const phaseAdvancerResult = await phaseAdvancer.advancePhase( From ea5868b06ada26b186a23c5177687fb0cd486dbf Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 16 Mar 2026 23:00:17 +0200 Subject: [PATCH 23/43] fix url --- src/common/helper.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/helper.js b/src/common/helper.js index d2a0716..1a650ca 100644 --- a/src/common/helper.js +++ b/src/common/helper.js @@ -1518,7 +1518,7 @@ async function getAIReviewConfigByChallengeId(challengeId) { ); try { - const result = await axios.get(`${reviewsApiBaseUrl}/ai-review/configs/${challengeId}`, { + const result = await axios.get(`${reviewsApiBaseUrl}/v6/ai-review/configs/${challengeId}`, { headers: { Authorization: `Bearer ${token}` }, }); return result.data || null; @@ -1545,7 +1545,7 @@ async function getAIReviewDecisionsByConfigId(configId) { const allDecisions = []; let page = 1; while (true) { - const result = await axios.get(`${reviewsApiBaseUrl}/ai-review/decisions`, { + const result = await axios.get(`${reviewsApiBaseUrl}/v6/ai-review/decisions`, { headers: { Authorization: `Bearer ${token}` }, params: { configId, From 6d80030e62e0e9514f50543540c8accb473a3af7 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 16 Mar 2026 23:14:00 +0200 Subject: [PATCH 24/43] add logging --- src/services/ChallengePhaseService.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/services/ChallengePhaseService.js b/src/services/ChallengePhaseService.js index ffa64dd..82a09e6 100644 --- a/src/services/ChallengePhaseService.js +++ b/src/services/ChallengePhaseService.js @@ -380,24 +380,41 @@ async function ensureChallengeHasAiReviewers(challengeId) { } async function ensureAIScreeningCanBeClosed(challengeId) { + logger.debug(`Validating AI Screening closure for challenge ${challengeId}`); await ensureChallengeHasAiReviewers(challengeId); const aiReviewConfig = await helper.getAIReviewConfigByChallengeId(challengeId); if (!aiReviewConfig || !aiReviewConfig.id) { + logger.debug( + `AI Screening closure blocked for challenge ${challengeId}: AI review configuration not found` + ); throw new errors.BadRequestError( "Cannot close AI Screening phase because AI review configuration could not be fetched" ); } + logger.debug( + `Found AI review configuration ${aiReviewConfig.id} for challenge ${challengeId}` + ); + const [submissions, decisions] = await Promise.all([ helper.getChallengeSubmissions(challengeId), helper.getAIReviewDecisionsByConfigId(aiReviewConfig.id), ]); + logger.debug( + `AI Screening data for challenge ${challengeId}: submissions=${(submissions || []).length}, decisions=${ + (decisions || []).length + }` + ); + const submissionIds = _.uniq( (submissions || []).map((submission) => extractSubmissionId(submission)).filter((id) => !!id) ); if (submissionIds.length === 0) { + logger.debug( + `AI Screening closure allowed for challenge ${challengeId}: no submissions found` + ); return; } @@ -414,10 +431,15 @@ async function ensureAIScreeningCanBeClosed(challengeId) { ); if (hasPendingDecision || missingFinalizedSubmissions.length > 0) { + logger.debug( + `AI Screening closure blocked for challenge ${challengeId}: hasPendingDecision=${hasPendingDecision}, missingFinalizedSubmissions=${missingFinalizedSubmissions.length}` + ); throw new errors.BadRequestError( "Cannot close AI Screening phase because AI reviews are not complete" ); } + + logger.debug(`AI Screening closure allowed for challenge ${challengeId}: all reviews finalized`); } async function checkChallengeExists(challengeId) { From a49d89c0ccd1dfacabfe8f3bd9a3715831387095 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 16 Mar 2026 23:37:44 +0200 Subject: [PATCH 25/43] Use review client instead of api call --- src/common/helper.js | 47 --------------------------- src/services/ChallengePhaseService.js | 36 +++++++++++++++++--- 2 files changed, 32 insertions(+), 51 deletions(-) diff --git a/src/common/helper.js b/src/common/helper.js index 1a650ca..995f49c 100644 --- a/src/common/helper.js +++ b/src/common/helper.js @@ -1530,52 +1530,6 @@ async function getAIReviewConfigByChallengeId(challengeId) { } } -/** - * Get all AI review decisions by AI review config id. - * @param {String} configId the AI review config id - * @returns {Promise} AI review decisions - */ -async function getAIReviewDecisionsByConfigId(configId) { - const token = await m2mHelper.getM2MToken(); - const reviewsApiBaseUrl = _.trimEnd( - config.REVIEWS_API_URL || "https://api.topcoder-dev.com", - "/" - ); - - const allDecisions = []; - let page = 1; - while (true) { - const result = await axios.get(`${reviewsApiBaseUrl}/v6/ai-review/decisions`, { - headers: { Authorization: `Bearer ${token}` }, - params: { - configId, - page, - perPage: 100, - }, - }); - - const pageData = _.get(result, "data.data", result.data || []); - const decisions = Array.isArray(pageData) ? pageData : []; - if (decisions.length === 0) { - break; - } - - allDecisions.push(...decisions); - - const totalPages = _.get(result, "data.meta.totalPages"); - if (!totalPages) { - break; - } - - page += 1; - if (page > totalPages) { - break; - } - } - - return allDecisions; -} - /** * Get review summations for a challenge * @param {String} challengeId the challenge ID @@ -1901,7 +1855,6 @@ module.exports = { getGroupById, getChallengeSubmissions, getAIReviewConfigByChallengeId, - getAIReviewDecisionsByConfigId, getReviewSummations, getMemberById, createSelfServiceProject, diff --git a/src/services/ChallengePhaseService.js b/src/services/ChallengePhaseService.js index 82a09e6..09660ec 100644 --- a/src/services/ChallengePhaseService.js +++ b/src/services/ChallengePhaseService.js @@ -397,10 +397,38 @@ async function ensureAIScreeningCanBeClosed(challengeId) { `Found AI review configuration ${aiReviewConfig.id} for challenge ${challengeId}` ); - const [submissions, decisions] = await Promise.all([ - helper.getChallengeSubmissions(challengeId), - helper.getAIReviewDecisionsByConfigId(aiReviewConfig.id), - ]); + const reviewPrisma = getReviewClient(); + const reviewSchema = config.REVIEW_DB_SCHEMA; + const submissionTable = Prisma.raw(`"${reviewSchema}"."submission"`); + const aiReviewDecisionTable = Prisma.raw(`"${reviewSchema}"."aiReviewDecision"`); + + let submissions; + let decisions; + try { + [submissions, decisions] = await Promise.all([ + reviewPrisma.$queryRaw( + Prisma.sql` + SELECT "id", "legacySubmissionId" + FROM ${submissionTable} + WHERE "challengeId" = ${challengeId} + AND "status"::text <> 'DELETED' + ` + ), + reviewPrisma.$queryRaw( + Prisma.sql` + SELECT "submissionId", "isFinal" + FROM ${aiReviewDecisionTable} + WHERE "configId" = ${aiReviewConfig.id} + ` + ), + ]); + } catch (err) { + logger.error( + `Failed to fetch AI screening submissions/decisions for challenge ${challengeId}: ${err.message}`, + err + ); + throw err; + } logger.debug( `AI Screening data for challenge ${challengeId}: submissions=${(submissions || []).length}, decisions=${ From 9225cad68794d9514474e3e5f7c5769e8f89ef40 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Tue, 17 Mar 2026 21:30:12 +0200 Subject: [PATCH 26/43] PM-4318 - move to next phase when user manually closes a phase --- .circleci/config.yml | 2 +- src/services/ChallengePhaseService.js | 92 +++++++++++++++++++++++++ test/unit/ChallengePhaseService.test.js | 84 ++++++++++++++++++++++ 3 files changed, 177 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index d8c0ec4..4cceaad 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -92,7 +92,7 @@ workflows: - develop - security - PM-3351 - - PM-3926_ai-screening-phase + - PM-4318_move-to-next-phase-when-manually-closing - "build-qa": context: org-global diff --git a/src/services/ChallengePhaseService.js b/src/services/ChallengePhaseService.js index 09660ec..6e53342 100644 --- a/src/services/ChallengePhaseService.js +++ b/src/services/ChallengePhaseService.js @@ -154,6 +154,84 @@ async function recalculateDependentPhaseDates(tx, challengeId, predecessorPhase, } } +async function shiftDependentPhaseDates(tx, challengeId, predecessorPhase, deltaMs, currentUserId) { + if (!predecessorPhase || !Number.isFinite(deltaMs) || deltaMs === 0) { + return; + } + + const phases = await tx.challengePhase.findMany({ + where: { challengeId }, + }); + + const successorsByPredecessor = new Map(); + for (const phase of phases) { + if (_.isNil(phase.predecessor)) { + continue; + } + const key = String(phase.predecessor); + if (!successorsByPredecessor.has(key)) { + successorsByPredecessor.set(key, []); + } + successorsByPredecessor.get(key).push(phase); + } + + const queue = [predecessorPhase]; + const visited = new Set(); + + while (queue.length > 0) { + const currentPhase = queue.shift(); + const predecessorKeys = buildPhaseIdentifiers(currentPhase); + + for (const predecessorKey of predecessorKeys) { + const successors = successorsByPredecessor.get(predecessorKey) || []; + for (const successor of successors) { + if (visited.has(successor.id)) { + continue; + } + + let successorForQueue = successor; + if (_.isNil(successor.actualStartDate)) { + const scheduledStartTime = successor.scheduledStartDate + ? new Date(successor.scheduledStartDate).getTime() + : Number.NaN; + const scheduledEndTime = successor.scheduledEndDate + ? new Date(successor.scheduledEndDate).getTime() + : Number.NaN; + + if (Number.isFinite(scheduledStartTime) && Number.isFinite(scheduledEndTime)) { + const desiredStartDate = new Date(scheduledStartTime + deltaMs); + const desiredEndDate = new Date(scheduledEndTime + deltaMs); + const startChanged = !datesAreSame(successor.scheduledStartDate, desiredStartDate); + const endChanged = !datesAreSame(successor.scheduledEndDate, desiredEndDate); + + if (startChanged || endChanged) { + successorForQueue = await tx.challengePhase.update({ + data: { + scheduledStartDate: desiredStartDate, + scheduledEndDate: desiredEndDate, + updatedBy: currentUserId, + }, + where: { + id: successor.id, + }, + }); + } else { + successorForQueue = { + ...successor, + scheduledStartDate: successor.scheduledStartDate, + scheduledEndDate: successor.scheduledEndDate, + }; + } + } + } + + visited.add(successor.id); + queue.push(successorForQueue); + } + } + } +} + async function hasPendingScorecardsForPhase(challengePhaseId) { if (!config.REVIEW_DB_URL) { logger.debug( @@ -884,6 +962,20 @@ async function partiallyUpdateChallengePhase(currentUser, challengeId, id, data) await recalculateDependentPhaseDates(tx, challengeId, updatedPhase, currentUserId); } } + if (isClosingPhase && !_.isNil(originalScheduledEndDate) && !_.isNil(updatedPhase.actualEndDate)) { + const scheduledEndTime = new Date(originalScheduledEndDate).getTime(); + const actualEndTime = new Date(updatedPhase.actualEndDate).getTime(); + + if (Number.isFinite(scheduledEndTime) && Number.isFinite(actualEndTime)) { + await shiftDependentPhaseDates( + tx, + challengeId, + updatedPhase, + actualEndTime - scheduledEndTime, + currentUserId + ); + } + } if (data["constraints"]) { for (const constraint of data["constraints"]) { if (constraint.id) { diff --git a/test/unit/ChallengePhaseService.test.js b/test/unit/ChallengePhaseService.test.js index 89631b5..c828f44 100644 --- a/test/unit/ChallengePhaseService.test.js +++ b/test/unit/ChallengePhaseService.test.js @@ -227,6 +227,90 @@ describe('challenge phase service unit tests', () => { actualEndMs.should.be.at.most(after.getTime()) }) + it('partially update challenge phase - closing shifts successor schedules to actual end date', async () => { + const aiScreeningTemplateId = uuid() + const aiScreeningPhaseId = uuid() + const submissionStartDate = new Date('2025-03-01T00:00:00.000Z') + const submissionScheduledEndDate = new Date('2025-03-03T00:00:00.000Z') + const aiScreeningScheduledStartDate = new Date('2025-03-03T00:00:00.000Z') + const aiScreeningScheduledEndDate = new Date('2025-03-04T00:00:00.000Z') + + await prisma.phase.create({ + data: { + id: aiScreeningTemplateId, + name: `AI Screening ${Date.now()}`, + description: 'ai screening test phase', + isOpen: true, + duration: 86400, + createdBy: 'admin', + updatedBy: 'admin' + } + }) + + await prisma.challengePhase.update({ + where: { id: data.challengePhase2Id }, + data: { + isOpen: true, + actualStartDate: submissionStartDate, + actualEndDate: null, + scheduledStartDate: submissionStartDate, + scheduledEndDate: submissionScheduledEndDate + } + }) + + await prisma.challengePhase.create({ + data: { + id: aiScreeningPhaseId, + challengeId: data.challenge.id, + phaseId: aiScreeningTemplateId, + name: 'AI Screening', + duration: 86400, + predecessor: data.challengePhase2Id, + scheduledStartDate: aiScreeningScheduledStartDate, + scheduledEndDate: aiScreeningScheduledEndDate, + createdBy: 'admin', + updatedBy: 'admin' + } + }) + + try { + const before = new Date() + const challengePhase = await service.partiallyUpdateChallengePhase( + authUser, + data.challenge.id, + data.challengePhase2Id, + { + isOpen: false + } + ) + const after = new Date() + + const successorPhase = await prisma.challengePhase.findUnique({ + where: { id: aiScreeningPhaseId } + }) + + should.equal(challengePhase.isOpen, false) + should.exist(successorPhase) + + const actualEndMs = new Date(challengePhase.actualEndDate).getTime() + const successorStartMs = new Date(successorPhase.scheduledStartDate).getTime() + const successorEndMs = new Date(successorPhase.scheduledEndDate).getTime() + const aiScreeningDurationMs = aiScreeningScheduledEndDate.getTime() - aiScreeningScheduledStartDate.getTime() + + actualEndMs.should.be.at.least(before.getTime()) + actualEndMs.should.be.at.most(after.getTime()) + successorStartMs.should.equal(actualEndMs) + successorEndMs.should.equal(actualEndMs + aiScreeningDurationMs) + } finally { + await prisma.challengePhase.delete({ + where: { id: aiScreeningPhaseId } + }) + await prisma.phase.delete({ + where: { id: aiScreeningTemplateId } + }) + } + }) + it('partially update challenge phase - reopening clears actual end date and sets start date', async () => { const previousEndDate = new Date() await prisma.challengePhase.update({ From 90dbd0a2c80a204fc4ffa40f6d1c265b57080ca0 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Tue, 17 Mar 2026 22:10:26 +0200 Subject: [PATCH 27/43] fix dependency --- src/services/ChallengePhaseService.js | 119 +------------------------- src/services/ChallengeService.js | 118 ++++++++++++++++++++++++- 2 files changed, 118 insertions(+), 119 deletions(-) diff --git a/src/services/ChallengePhaseService.js b/src/services/ChallengePhaseService.js index 6e53342..22e2b5e 100644 --- a/src/services/ChallengePhaseService.js +++ b/src/services/ChallengePhaseService.js @@ -11,7 +11,7 @@ const logger = require("../common/logger"); const errors = require("../common/errors"); const constants = require("../../app-constants"); const { getReviewClient } = require("../common/review-prisma"); -const { indexChallengeAndPostToKafka } = require("./ChallengeService"); +const { indexChallengeAndPostToKafka, ensureAIScreeningCanBeClosed } = require("./ChallengeService"); const { getClient } = require("../common/prisma"); const prisma = getClient(); @@ -431,123 +431,6 @@ async function hasPendingAppealResponsesForChallenge(challengeId) { return Number(count) > 0; } -function extractSubmissionId(submission) { - const candidate = - _.get(submission, "id") || - _.get(submission, "submissionId") || - _.get(submission, "legacySubmissionId"); - if (_.isNil(candidate)) { - return null; - } - const normalized = _.toString(candidate).trim(); - return normalized.length > 0 ? normalized : null; -} - -async function ensureChallengeHasAiReviewers(challengeId) { - const reviewers = await prisma.challengeReviewer.findMany({ - where: { challengeId, isMemberReview: false, aiWorkflowId: { not: null } }, - }); - - const hasAIReviewers = Array.isArray(reviewers) && reviewers.length > 0; - - if (!hasAIReviewers) { - throw new errors.BadRequestError( - `Challenge does not have any AI reviewers assigned` - ); - } -} - -async function ensureAIScreeningCanBeClosed(challengeId) { - logger.debug(`Validating AI Screening closure for challenge ${challengeId}`); - await ensureChallengeHasAiReviewers(challengeId); - - const aiReviewConfig = await helper.getAIReviewConfigByChallengeId(challengeId); - if (!aiReviewConfig || !aiReviewConfig.id) { - logger.debug( - `AI Screening closure blocked for challenge ${challengeId}: AI review configuration not found` - ); - throw new errors.BadRequestError( - "Cannot close AI Screening phase because AI review configuration could not be fetched" - ); - } - - logger.debug( - `Found AI review configuration ${aiReviewConfig.id} for challenge ${challengeId}` - ); - - const reviewPrisma = getReviewClient(); - const reviewSchema = config.REVIEW_DB_SCHEMA; - const submissionTable = Prisma.raw(`"${reviewSchema}"."submission"`); - const aiReviewDecisionTable = Prisma.raw(`"${reviewSchema}"."aiReviewDecision"`); - - let submissions; - let decisions; - try { - [submissions, decisions] = await Promise.all([ - reviewPrisma.$queryRaw( - Prisma.sql` - SELECT "id", "legacySubmissionId" - FROM ${submissionTable} - WHERE "challengeId" = ${challengeId} - AND "status"::text <> 'DELETED' - ` - ), - reviewPrisma.$queryRaw( - Prisma.sql` - SELECT "submissionId", "isFinal" - FROM ${aiReviewDecisionTable} - WHERE "configId" = ${aiReviewConfig.id} - ` - ), - ]); - } catch (err) { - logger.error( - `Failed to fetch AI screening submissions/decisions for challenge ${challengeId}: ${err.message}`, - err - ); - throw err; - } - - logger.debug( - `AI Screening data for challenge ${challengeId}: submissions=${(submissions || []).length}, decisions=${ - (decisions || []).length - }` - ); - - const submissionIds = _.uniq( - (submissions || []).map((submission) => extractSubmissionId(submission)).filter((id) => !!id) - ); - if (submissionIds.length === 0) { - logger.debug( - `AI Screening closure allowed for challenge ${challengeId}: no submissions found` - ); - return; - } - - const finalizedDecisionSubmissionIds = new Set( - (decisions || []) - .filter((decision) => decision && decision.isFinal === true) - .map((decision) => extractSubmissionId(decision)) - .filter((id) => !!id) - ); - - const hasPendingDecision = (decisions || []).some((decision) => decision && decision.isFinal !== true); - const missingFinalizedSubmissions = submissionIds.filter( - (submissionId) => !finalizedDecisionSubmissionIds.has(submissionId) - ); - - if (hasPendingDecision || missingFinalizedSubmissions.length > 0) { - logger.debug( - `AI Screening closure blocked for challenge ${challengeId}: hasPendingDecision=${hasPendingDecision}, missingFinalizedSubmissions=${missingFinalizedSubmissions.length}` - ); - throw new errors.BadRequestError( - "Cannot close AI Screening phase because AI reviews are not complete" - ); - } - - logger.debug(`AI Screening closure allowed for challenge ${challengeId}: all reviews finalized`); -} - async function checkChallengeExists(challengeId) { const challenge = await prisma.challenge.findUnique({ where: { id: challengeId } }); if (!challenge) { diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 8a46907..cbbd9b6 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -34,7 +34,6 @@ const { PrizeSetTypeEnum, ReviewOpportunityTypeEnum, } = require("../common/prisma"); -const { ensureAIScreeningCanBeClosed } = require("./ChallengePhaseService"); const prisma = getClient(); // Provide aliases for friendlier sortBy query params @@ -112,6 +111,123 @@ function normalizePhaseNameForComparison(phaseName) { return _.toString(phaseName).replace(/-/g, " ").trim().toLowerCase(); } +function extractSubmissionId(submission) { + const candidate = + _.get(submission, "id") || + _.get(submission, "submissionId") || + _.get(submission, "legacySubmissionId"); + if (_.isNil(candidate)) { + return null; + } + const normalized = _.toString(candidate).trim(); + return normalized.length > 0 ? normalized : null; +} + +async function ensureChallengeHasAiReviewers(challengeId) { + const reviewers = await prisma.challengeReviewer.findMany({ + where: { challengeId, isMemberReview: false, aiWorkflowId: { not: null } }, + }); + + const hasAIReviewers = Array.isArray(reviewers) && reviewers.length > 0; + + if (!hasAIReviewers) { + throw new errors.BadRequestError( + `Challenge does not have any AI reviewers assigned` + ); + } +} + +async function ensureAIScreeningCanBeClosed(challengeId) { + logger.debug(`Validating AI Screening closure for challenge ${challengeId}`); + await ensureChallengeHasAiReviewers(challengeId); + + const aiReviewConfig = await helper.getAIReviewConfigByChallengeId(challengeId); + if (!aiReviewConfig || !aiReviewConfig.id) { + logger.debug( + `AI Screening closure blocked for challenge ${challengeId}: AI review configuration not found` + ); + throw new errors.BadRequestError( + "Cannot close AI Screening phase because AI review configuration could not be fetched" + ); + } + + logger.debug( + `Found AI review configuration ${aiReviewConfig.id} for challenge ${challengeId}` + ); + + const reviewPrisma = getReviewClient(); + const reviewSchema = config.REVIEW_DB_SCHEMA; + const submissionTable = Prisma.raw(`"${reviewSchema}"."submission"`); + const aiReviewDecisionTable = Prisma.raw(`"${reviewSchema}"."aiReviewDecision"`); + + let submissions; + let decisions; + try { + [submissions, decisions] = await Promise.all([ + reviewPrisma.$queryRaw( + Prisma.sql` + SELECT "id", "legacySubmissionId" + FROM ${submissionTable} + WHERE "challengeId" = ${challengeId} + AND "status"::text <> 'DELETED' + ` + ), + reviewPrisma.$queryRaw( + Prisma.sql` + SELECT "submissionId", "isFinal" + FROM ${aiReviewDecisionTable} + WHERE "configId" = ${aiReviewConfig.id} + ` + ), + ]); + } catch (err) { + logger.error( + `Failed to fetch AI screening submissions/decisions for challenge ${challengeId}: ${err.message}`, + err + ); + throw err; + } + + logger.debug( + `AI Screening data for challenge ${challengeId}: submissions=${(submissions || []).length}, decisions=${ + (decisions || []).length + }` + ); + + const submissionIds = _.uniq( + (submissions || []).map((submission) => extractSubmissionId(submission)).filter((id) => !!id) + ); + if (submissionIds.length === 0) { + logger.debug( + `AI Screening closure allowed for challenge ${challengeId}: no submissions found` + ); + return; + } + + const finalizedDecisionSubmissionIds = new Set( + (decisions || []) + .filter((decision) => decision && decision.isFinal === true) + .map((decision) => extractSubmissionId(decision)) + .filter((id) => !!id) + ); + + const hasPendingDecision = (decisions || []).some((decision) => decision && decision.isFinal !== true); + const missingFinalizedSubmissions = submissionIds.filter( + (submissionId) => !finalizedDecisionSubmissionIds.has(submissionId) + ); + + if (hasPendingDecision || missingFinalizedSubmissions.length > 0) { + logger.debug( + `AI Screening closure blocked for challenge ${challengeId}: hasPendingDecision=${hasPendingDecision}, missingFinalizedSubmissions=${missingFinalizedSubmissions.length}` + ); + throw new errors.BadRequestError( + "Cannot close AI Screening phase because AI reviews are not complete" + ); + } + + logger.debug(`AI Screening closure allowed for challenge ${challengeId}: all reviews finalized`); +} + /** * Enrich skills data with full details from standardized skills API. * @param {Object} challenge the challenge object From 7c648eb1e97b73eb5ec23587e4b836645aec193d Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 18 Mar 2026 07:40:49 +0200 Subject: [PATCH 28/43] PM-4363 - do not allow review phase to be clsoed, appeals to be open if there are pending escalation requests --- src/services/ChallengePhaseService.js | 66 ++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/src/services/ChallengePhaseService.js b/src/services/ChallengePhaseService.js index 22e2b5e..79a4b78 100644 --- a/src/services/ChallengePhaseService.js +++ b/src/services/ChallengePhaseService.js @@ -431,6 +431,48 @@ async function hasPendingAppealResponsesForChallenge(challengeId) { return Number(count) > 0; } +async function hasPendingEscalationRequestsForChallenge(challengeId) { + if (!config.REVIEW_DB_URL) { + logger.debug( + `Skipping pending escalation request check for challenge ${challengeId} because REVIEW_DB_URL is not configured` + ); + return false; + } + + const reviewPrisma = getReviewClient(); + const reviewSchema = config.REVIEW_DB_SCHEMA; + const escalationTable = Prisma.raw(`"${reviewSchema}"."aiReviewDecisionEscalation"`); + const decisionTable = Prisma.raw(`"${reviewSchema}"."aiReviewDecision"`); + const submissionTable = Prisma.raw(`"${reviewSchema}"."submission"`); + + let rows; + try { + rows = await reviewPrisma.$queryRaw( + Prisma.sql` + SELECT COUNT(DISTINCT arde."id")::int AS count + FROM ${escalationTable} arde + INNER JOIN ${decisionTable} ard ON ard."id" = arde."aiReviewDecisionId" + WHERE arde."status" = 'PENDING_APPROVAL' + AND EXISTS ( + SELECT 1 + FROM ${submissionTable} s + WHERE s."challengeId" = ${challengeId} + AND s."id" = ard."submissionId" + ) + ` + ); + } catch (err) { + logger.error( + `Failed to check pending escalation requests for challenge ${challengeId}: ${err.message}`, + err + ); + throw err; + } + + const [{ count = 0 } = {}] = rows || []; + return Number(count) > 0; +} + async function checkChallengeExists(challengeId) { const challenge = await prisma.challenge.findUnique({ where: { id: challengeId } }); if (!challenge) { @@ -637,6 +679,17 @@ async function partiallyUpdateChallengePhase(currentUser, challengeId, id, data) if (isOpeningPhase) { const phaseName = data.name || challengePhase.name; await ensureRequiredResourcesBeforeOpeningPhase(challengeId, phaseName); + + // Check if this is the Appeals phase + const normalizedPhaseName = normalizePhaseName(phaseName); + if (normalizedPhaseName === "appeals") { + const hasPendingEscalations = await hasPendingEscalationRequestsForChallenge(challengeId); + if (hasPendingEscalations) { + throw new errors.BadRequestError( + "Cannot open Appeals phase because there are pending escalation requests that need to be resolved first" + ); + } + } } if (data["scheduledStartDate"] || data["scheduledEndDate"]) { @@ -675,6 +728,7 @@ async function partiallyUpdateChallengePhase(currentUser, challengeId, id, data) "isOpen" in data && data["isOpen"] === true && !challengePhase.isOpen; if (isClosingPhase) { const closingPhaseName = data.name || challengePhase.name; + const normalizedClosingPhaseName = normalizePhaseName(closingPhaseName); const pendingScorecards = await hasPendingScorecardsForPhase(challengePhase.id); if (pendingScorecards) { const phaseName = closingPhaseName || "phase"; @@ -683,7 +737,15 @@ async function partiallyUpdateChallengePhase(currentUser, challengeId, id, data) ); } if ( - String(closingPhaseName || "").toLowerCase() === "appeals response" && + normalizedClosingPhaseName === "review" && + (await hasPendingEscalationRequestsForChallenge(challengePhase.challengeId)) + ) { + throw new errors.BadRequestError( + "Cannot close Review phase because there are pending escalation requests that need to be resolved first" + ); + } + if ( + normalizedClosingPhaseName === "appeals response" && (await hasPendingAppealResponsesForChallenge(challengePhase.challengeId)) ) { throw new errors.BadRequestError( @@ -691,7 +753,7 @@ async function partiallyUpdateChallengePhase(currentUser, challengeId, id, data) ); } - if (String(closingPhaseName || "").toLowerCase() === "ai screening") { + if (normalizedClosingPhaseName === "ai screening") { await ensureAIScreeningCanBeClosed(challengePhase.challengeId); } From 02e7b6cbadf88e0de90be3905289deaeec929e30 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 18 Mar 2026 13:33:19 +0200 Subject: [PATCH 29/43] export function --- src/services/ChallengeService.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index cbbd9b6..69c4836 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -4382,6 +4382,7 @@ module.exports = { getDefaultReviewers, setDefaultReviewers, indexChallengeAndPostToKafka, + ensureAIScreeningCanBeClosed, }; logger.buildService(module.exports); From 2f47a6f01fa04b1bcfd041e86ad1d24e8e2e9fb0 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 18 Mar 2026 17:17:44 +0200 Subject: [PATCH 30/43] PM-4318 avoid double successor date shift on close with schedule extension --- src/services/ChallengePhaseService.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/services/ChallengePhaseService.js b/src/services/ChallengePhaseService.js index 79a4b78..a019d8a 100644 --- a/src/services/ChallengePhaseService.js +++ b/src/services/ChallengePhaseService.js @@ -898,8 +898,9 @@ async function partiallyUpdateChallengePhase(currentUser, challengeId, id, data) id: challengePhase.id, }, }); + let scheduleExtended = false; if (shouldAttemptSuccessorRecalc) { - const scheduleExtended = dateIsAfter( + scheduleExtended = dateIsAfter( updatedPhase.scheduledEndDate, originalScheduledEndDate ); @@ -908,7 +909,11 @@ async function partiallyUpdateChallengePhase(currentUser, challengeId, id, data) } } if (isClosingPhase && !_.isNil(originalScheduledEndDate) && !_.isNil(updatedPhase.actualEndDate)) { - const scheduledEndTime = new Date(originalScheduledEndDate).getTime(); + const shiftBaselineScheduledEndDate = + scheduleExtended && !_.isNil(updatedPhase.scheduledEndDate) + ? updatedPhase.scheduledEndDate + : originalScheduledEndDate; + const scheduledEndTime = new Date(shiftBaselineScheduledEndDate).getTime(); const actualEndTime = new Date(updatedPhase.actualEndDate).getTime(); if (Number.isFinite(scheduledEndTime) && Number.isFinite(actualEndTime)) { From 6bdfb01e0667744a4f288b700abf73292c74acc1 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 20 Mar 2026 10:11:19 +1100 Subject: [PATCH 31/43] Allow Talent Manager to create challenges --- app-constants.js | 1 + src/routes.js | 55 ++++++++++++++----------------- test/unit/ChallengeRoutes.test.js | 35 ++++++++++++++++++++ 3 files changed, 61 insertions(+), 30 deletions(-) create mode 100644 test/unit/ChallengeRoutes.test.js diff --git a/app-constants.js b/app-constants.js index 5c8d576..c4aa466 100644 --- a/app-constants.js +++ b/app-constants.js @@ -7,6 +7,7 @@ const UserRoles = { Admin: "administrator", Copilot: "copilot", Manager: "Connect Manager", + TalentManager: "Talent Manager", User: "Topcoder User", SelfServiceCustomer: "Self-Service Customer", }; diff --git a/src/routes.js b/src/routes.js index 9178920..a55bc46 100644 --- a/src/routes.js +++ b/src/routes.js @@ -7,6 +7,21 @@ const { SCOPES: { READ, CREATE, UPDATE, DELETE, ALL }, } = require("config"); +const CHALLENGE_EDITOR_ACCESS_ROLES = [ + constants.UserRoles.Admin, + constants.UserRoles.Copilot, + constants.UserRoles.Manager, + constants.UserRoles.TalentManager, +]; + +const CHALLENGE_EDITOR_ACCESS_ROLES_WITH_SELF_SERVICE = [ + constants.UserRoles.Admin, + constants.UserRoles.SelfServiceCustomer, + constants.UserRoles.Copilot, + constants.UserRoles.Manager, + constants.UserRoles.TalentManager, +]; + module.exports = { "/challenges": { get: { @@ -25,12 +40,7 @@ module.exports = { controller: "ChallengeController", method: "createChallenge", auth: "jwt", - access: [ - constants.UserRoles.Admin, - constants.UserRoles.SelfServiceCustomer, - constants.UserRoles.Copilot, - constants.UserRoles.Manager, - ], + access: CHALLENGE_EDITOR_ACCESS_ROLES_WITH_SELF_SERVICE, scopes: [CREATE, ALL], }, }, @@ -78,36 +88,21 @@ module.exports = { controller: "ChallengeController", method: "updateChallenge", auth: "jwt", - access: [ - constants.UserRoles.Admin, - constants.UserRoles.SelfServiceCustomer, - constants.UserRoles.Copilot, - constants.UserRoles.Manager, - ], + access: CHALLENGE_EDITOR_ACCESS_ROLES_WITH_SELF_SERVICE, scopes: [UPDATE, ALL], }, patch: { controller: "ChallengeController", method: "updateChallenge", auth: "jwt", - access: [ - constants.UserRoles.Admin, - constants.UserRoles.SelfServiceCustomer, - constants.UserRoles.Copilot, - constants.UserRoles.Manager, - ], + access: CHALLENGE_EDITOR_ACCESS_ROLES_WITH_SELF_SERVICE, scopes: [UPDATE, ALL], }, delete: { controller: "ChallengeController", method: "deleteChallenge", auth: "jwt", - access: [ - constants.UserRoles.Admin, - constants.UserRoles.Copilot, - constants.UserRoles.SelfServiceCustomer, - constants.UserRoles.Manager, - ], + access: CHALLENGE_EDITOR_ACCESS_ROLES_WITH_SELF_SERVICE, scopes: [DELETE, ALL], }, }, @@ -411,7 +406,7 @@ module.exports = { controller: "AttachmentController", method: "createAttachment", auth: "jwt", - access: [constants.UserRoles.Admin, constants.UserRoles.Copilot, constants.UserRoles.Manager], + access: CHALLENGE_EDITOR_ACCESS_ROLES, scopes: [CREATE, ALL], }, }, @@ -426,21 +421,21 @@ module.exports = { controller: "AttachmentController", method: "updateAttachment", auth: "jwt", - access: [constants.UserRoles.Admin, constants.UserRoles.Copilot, constants.UserRoles.Manager], + access: CHALLENGE_EDITOR_ACCESS_ROLES, scopes: [UPDATE, ALL], }, patch: { controller: "AttachmentController", method: "partiallyUpdateAttachment", auth: "jwt", - access: [constants.UserRoles.Admin, constants.UserRoles.Copilot, constants.UserRoles.Manager], + access: CHALLENGE_EDITOR_ACCESS_ROLES, scopes: [UPDATE, ALL], }, delete: { controller: "AttachmentController", method: "deleteAttachment", auth: "jwt", - access: [constants.UserRoles.Admin, constants.UserRoles.Copilot, constants.UserRoles.Manager], + access: CHALLENGE_EDITOR_ACCESS_ROLES, scopes: [DELETE, ALL], }, }, @@ -469,14 +464,14 @@ module.exports = { controller: "ChallengePhaseController", method: "partiallyUpdateChallengePhase", auth: "jwt", - access: [constants.UserRoles.Admin, constants.UserRoles.SelfServiceCustomer, constants.UserRoles.Copilot, constants.UserRoles.Manager], + access: CHALLENGE_EDITOR_ACCESS_ROLES_WITH_SELF_SERVICE, scopes: [UPDATE, ALL], }, delete: { controller: "ChallengePhaseController", method: "deleteChallengePhase", auth: "jwt", - access: [constants.UserRoles.Admin, constants.UserRoles.SelfServiceCustomer, constants.UserRoles.Copilot, constants.UserRoles.Manager], + access: CHALLENGE_EDITOR_ACCESS_ROLES_WITH_SELF_SERVICE, scopes: [DELETE, ALL], }, }, diff --git a/test/unit/ChallengeRoutes.test.js b/test/unit/ChallengeRoutes.test.js new file mode 100644 index 0000000..81dedb7 --- /dev/null +++ b/test/unit/ChallengeRoutes.test.js @@ -0,0 +1,35 @@ +const { expect } = require("chai"); + +const constants = require("../../app-constants"); +const routes = require("../../src/routes"); + +describe("Challenge route access", () => { + const talentManagerRoles = [ + constants.UserRoles.TalentManager, + ]; + + const challengeEditRoutes = [ + ["/challenges", "post"], + ["/challenges/:challengeId", "put"], + ["/challenges/:challengeId", "patch"], + ["/challenges/:challengeId", "delete"], + ["/challenges/:challengeId/attachments", "post"], + ["/challenges/:challengeId/attachments/:attachmentId", "put"], + ["/challenges/:challengeId/attachments/:attachmentId", "patch"], + ["/challenges/:challengeId/attachments/:attachmentId", "delete"], + ["/challenges/:challengeId/phases/:id", "patch"], + ["/challenges/:challengeId/phases/:id", "delete"], + ]; + + it("allows talent manager roles on challenge create and edit routes", () => { + challengeEditRoutes.forEach(([path, method]) => { + const accessRoles = routes[path][method].access || []; + + talentManagerRoles.forEach((role) => { + expect(accessRoles, `${method.toUpperCase()} ${path} should allow ${role}`).to.include( + role, + ); + }); + }); + }); +}); From 0a1f43c09152e4c72c9e9f94cfcdfe0986d20f50 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Fri, 20 Mar 2026 09:42:21 +0200 Subject: [PATCH 32/43] gen review context --- config/default.js | 19 +- src/common/challenge-review-context-helper.js | 286 +++++++++ src/common/review-context-generation-guard.js | 82 +++ src/services/ChallengeService.js | 566 +++++++++--------- 4 files changed, 677 insertions(+), 276 deletions(-) create mode 100644 src/common/challenge-review-context-helper.js create mode 100644 src/common/review-context-generation-guard.js diff --git a/config/default.js b/config/default.js index 51a3e43..cb0d509 100644 --- a/config/default.js +++ b/config/default.js @@ -44,8 +44,10 @@ module.exports = { SUBMISSIONS_API_URL: process.env.SUBMISSIONS_API_URL || "https://api.topcoder-dev.com/v5/submissions", MEMBERS_API_URL: process.env.MEMBERS_API_URL || "https://api.topcoder-dev.com/v6/members", - REVIEW_SUMMATIONS_API_URL: process.env.REVIEW_SUMMATIONS_API_URL || "https://api.topcoder-dev.com/v6/reviewSummations", + REVIEW_SUMMATIONS_API_URL: + process.env.REVIEW_SUMMATIONS_API_URL || "https://api.topcoder-dev.com/v6/reviewSummations", REVIEWS_API_URL: process.env.REVIEWS_API_URL || "https://api.topcoder-dev.com", + TC_AI_API_URL: process.env.TC_AI_API_URL || "https://api.topcoder-dev.com/v6/ai", RESOURCES_API_URL: process.env.RESOURCES_API_URL || "http://localhost:4000/v5/resources", // TODO: change this to localhost RESOURCE_ROLES_API_URL: @@ -61,15 +63,14 @@ module.exports = { // copilot resource role ids allowed to upload attachment COPILOT_RESOURCE_ROLE_IDS: process.env.COPILOT_RESOURCE_ROLE_IDS ? process.env.COPILOT_RESOURCE_ROLE_IDS.split(",") - : [ - "10ba038e-48da-487b-96e8-8d3b99b6d18b", - "cfe12b3f-2a24-4639-9d8b-ec86726f76bd", - ], + : ["10ba038e-48da-487b-96e8-8d3b99b6d18b", "cfe12b3f-2a24-4639-9d8b-ec86726f76bd"], SUBMITTER_ROLE_ID: process.env.SUBMITTER_ROLE_ID || "732339e7-8e30-49d7-9198-cccf9451e221", SUBMITTER_ROLE_NAME: process.env.SUBMITTER_ROLE_NAME || "Submitter", // registrant role id (defaults to SUBMITTER_ROLE_ID) REGISTRANT_ROLE_ID: - process.env.REGISTRANT_ROLE_ID || process.env.SUBMITTER_ROLE_ID || "732339e7-8e30-49d7-9198-cccf9451e221", + process.env.REGISTRANT_ROLE_ID || + process.env.SUBMITTER_ROLE_ID || + "732339e7-8e30-49d7-9198-cccf9451e221", MANAGER_ROLE_ID: process.env.MANAGER_ROLE_ID || "0e9c6879-39e4-4eb6-b8df-92407890faf1", OBSERVER_ROLE_ID: process.env.OBSERVER_ROLE_ID || "2a4dc376-a31c-4d00-b173-13934d89e286", @@ -133,7 +134,9 @@ module.exports = { // Database schemas for direct counts (shared DB) RESOURCES_DB_SCHEMA: process.env.RESOURCES_DB_SCHEMA || "resources", REVIEW_DB_SCHEMA: process.env.REVIEW_DB_SCHEMA || "reviews", - CHALLENGE_SERVICE_PRISMA_TIMEOUT: process.env.CHALLENGE_SERVICE_PRISMA_TIMEOUT ? parseInt(process.env.CHALLENGE_SERVICE_PRISMA_TIMEOUT, 10) : 10000, - CHALLENGE_URL: process.env.CHALLENGE_URL || 'https://www.topcoder-dev.com/challenges' , + CHALLENGE_SERVICE_PRISMA_TIMEOUT: process.env.CHALLENGE_SERVICE_PRISMA_TIMEOUT + ? parseInt(process.env.CHALLENGE_SERVICE_PRISMA_TIMEOUT, 10) + : 10000, + CHALLENGE_URL: process.env.CHALLENGE_URL || "https://www.topcoder-dev.com/challenges", PHASE_CHANGE_SENDGRID_TEMPLATE_ID: process.env.PHASE_CHANGE_SENDGRID_TEMPLATE_ID || "", }; diff --git a/src/common/challenge-review-context-helper.js b/src/common/challenge-review-context-helper.js new file mode 100644 index 0000000..2437aa5 --- /dev/null +++ b/src/common/challenge-review-context-helper.js @@ -0,0 +1,286 @@ +/** + * Helper module for triggering Challenge Review Context generation + * via tc-ai-api workflow and saving results to review-api. + */ + +const _ = require("lodash"); +const config = require("config"); +const axios = require("axios"); +const logger = require("./logger"); +const m2mHelper = require("./m2m-helper"); +const { + getRunId, + markGenerationStarted, + setRunId, + clearGeneration, +} = require("./review-context-generation-guard"); + +const WORKFLOW_POLL_INTERVAL_MS = 10000; +const WORKFLOW_POLL_TIMEOUT_MS = 15 * 60 * 1000; // 15 minutes max wait + +/** + * Check if a challenge has AI Review Config that requires context generation. + * @param {Object} challenge - The challenge object with reviewers + * @returns {boolean} - True if challenge has AI reviewers with aiWorkflowId + */ +function shouldGenerateChallengeReviewContext(challenge) { + const reviewers = _.get(challenge, "reviewers", []); + if (!Array.isArray(reviewers) || reviewers.length === 0) { + return false; + } + return reviewers.some( + (reviewer) => reviewer && !reviewer.isMemberReview && reviewer.aiWorkflowId, + ); +} + +/** + * Trigger challenge context generation in the background (fire-and-forget). + * If a previous run is in progress, it will be cancelled first. + * This function returns immediately and runs the actual work asynchronously. + * @param {string} challengeId - The challenge ID + */ +function triggerChallengeReviewContextGeneration(challengeId) { + const existingRunId = getRunId(challengeId); + + if (existingRunId) { + logger.info( + `[ChallengeReviewContextHelper] Cancelling existing run ${existingRunId} for challenge ${challengeId}`, + ); + cancelWorkflowRun(existingRunId, "Challenge updated, regenerating context").catch((err) => { + logger.warn( + `[ChallengeReviewContextHelper] Failed to cancel run ${existingRunId}: ${err.message}`, + ); + }); + clearGeneration(challengeId); + } + + markGenerationStarted(challengeId); + logger.info( + `[ChallengeReviewContextHelper] Triggering context generation for challenge ${challengeId}`, + ); + + runReviewContextGenerationAsync(challengeId).catch((err) => { + logger.error( + `[ChallengeReviewContextHelper] Context generation failed for challenge ${challengeId}: ${err.message}`, + err, + ); + clearGeneration(challengeId); + }); +} + +/** + * Cancel a workflow run via tc-ai-api. + * @param {string} runId - The workflow run ID to cancel + * @param {string} message - Cancellation reason message + */ +async function cancelWorkflowRun(runId, message) { + const tcAiApiUrl = _.trimEnd(config.TC_AI_API_URL, "/"); + const workflowId = "challenge-context"; + + let token; + try { + token = await m2mHelper.getM2MToken(); + } catch (tokenErr) { + logger.error(`[ChallengeReviewContextHelper] Failed to get M2M token for cancel: ${tokenErr.message}`); + return; + } + + const cancelUrl = `${tcAiApiUrl}/workflows/${workflowId}/runs/${runId}/cancel`; + await axios.post( + cancelUrl, + { message }, + { + headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json" }, + timeout: 15000, + }, + ); + logger.info(`[ChallengeReviewContextHelper] Cancelled workflow run ${runId}`); +} + +/** + * Internal async function that performs the actual context generation workflow. + * @param {string} challengeId - The challenge ID + */ +async function runReviewContextGenerationAsync(challengeId) { + const tcAiApiUrl = _.trimEnd(config.TC_AI_API_URL, "/"); + const reviewsApiUrl = _.trimEnd(config.REVIEWS_API_URL, "/"); + + let token; + try { + token = await m2mHelper.getM2MToken(); + } catch (tokenErr) { + logger.error( + `[ChallengeReviewContextHelper] Failed to get M2M token for challenge ${challengeId}: ${tokenErr.message}`, + ); + clearGeneration(challengeId); + return; + } + + const authHeader = { Authorization: `Bearer ${token}` }; + const workflowId = "challenge-context"; + + // Step 1: Create the workflow run + const createRunUrl = `${tcAiApiUrl}/workflows/${workflowId}/create-run`; + let runId; + + try { + logger.debug( + `[ChallengeReviewContextHelper] Creating workflow run at ${createRunUrl} for challenge ${challengeId}`, + ); + const createResponse = await axios.post( + createRunUrl, + {}, + { + headers: { ...authHeader, "Content-Type": "application/json" }, + timeout: 30000, + }, + ); + runId = _.get(createResponse, "data.runId"); + if (!runId) { + throw new Error("No runId returned from workflow creation"); + } + setRunId(challengeId, runId); + logger.debug( + `[ChallengeReviewContextHelper] Created run ${runId} for challenge ${challengeId}`, + ); + } catch (createErr) { + logger.error( + `[ChallengeReviewContextHelper] Failed to create workflow run for challenge ${challengeId}: ${createErr.message}`, + ); + clearGeneration(challengeId); + return; + } + + // Step 2: Start the run with input data + const startRunUrl = `${tcAiApiUrl}/workflows/${workflowId}/start?runId=${runId}`; + + try { + logger.debug( + `[ChallengeReviewContextHelper] Starting workflow run ${runId} for challenge ${challengeId}`, + ); + await axios.post( + startRunUrl, + { inputData: { challengeId } }, + { headers: { ...authHeader, "Content-Type": "application/json" }, timeout: 30000 }, + ); + logger.info( + `[ChallengeReviewContextHelper] Workflow started for challenge ${challengeId}, runId: ${runId}`, + ); + } catch (startErr) { + logger.error( + `[ChallengeReviewContextHelper] Failed to start workflow run for challenge ${challengeId}: ${startErr.message}`, + ); + clearGeneration(challengeId); + return; + } + + // Step 3: Poll for workflow completion + const workflowStatusUrl = `${tcAiApiUrl}/workflows/${workflowId}/runs/${runId}`; + const startTime = Date.now(); + let workflowResult = null; + + while (Date.now() - startTime < WORKFLOW_POLL_TIMEOUT_MS) { + try { + await sleep(WORKFLOW_POLL_INTERVAL_MS); + const statusResponse = await axios.get(workflowStatusUrl, { + headers: authHeader, + timeout: 15000, + }); + const result = _.get(statusResponse, "data", {}); + const status = result.status; + logger.debug(`[ChallengeReviewContextHelper] Workflow ${runId} status: ${status}`); + + if (status === "success") { + workflowResult = result.result; + break; + } else if (status === "failed") { + const errorMsg = + _.get(result, "error.message") || _.get(result, "error") || "Workflow execution failed"; + throw new Error(`Workflow failed: ${errorMsg}`); + } + } catch (pollErr) { + if (pollErr.message.includes("Workflow failed")) { + throw pollErr; + } + // For network errors, log and continue polling + logger.warn( + `[ChallengeReviewContextHelper] Polling error for workflow ${runId}: ${pollErr.message}`, + ); + } + } + + if (!workflowResult) { + logger.error( + `[ChallengeReviewContextHelper] Workflow ${runId} timed out or returned no result for challenge ${challengeId}`, + ); + clearGeneration(challengeId); + return; + } + + logger.info( + `[ChallengeReviewContextHelper] Workflow completed for challenge ${challengeId}, saving context`, + ); + + // Step 3: Check if context already exists + const contextGetUrl = `${reviewsApiUrl}/v6/ai-review/context/${challengeId}`; + let existingContext = null; + + try { + const getResponse = await axios.get(contextGetUrl, { + headers: authHeader, + timeout: 15000, + validateStatus: (status) => status < 500, + }); + if (getResponse.status === 200 && getResponse.data) { + existingContext = getResponse.data; + } + } catch (getErr) { + logger.debug( + `[ChallengeReviewContextHelper] No existing context found for challenge ${challengeId}`, + ); + } + + // Step 4: Save or update context in review-api + const contextPayload = { + challengeId, + context: workflowResult, + }; + + try { + if (existingContext) { + const contextPutUrl = `${reviewsApiUrl}/v6/ai-review/context/${challengeId}`; + await axios.put(contextPutUrl, contextPayload, { + headers: { ...authHeader, "Content-Type": "application/json" }, + timeout: 30000, + }); + logger.info(`[ChallengeReviewContextHelper] Updated context for challenge ${challengeId}`); + } else { + const contextPostUrl = `${reviewsApiUrl}/v6/ai-review/context`; + await axios.post(contextPostUrl, contextPayload, { + headers: { ...authHeader, "Content-Type": "application/json" }, + timeout: 30000, + }); + logger.info(`[ChallengeReviewContextHelper] Created context for challenge ${challengeId}`); + } + } catch (saveErr) { + logger.error( + `[ChallengeReviewContextHelper] Failed to save context for challenge ${challengeId}: ${saveErr.message}`, + ); + clearGeneration(challengeId); + return; + } + + clearGeneration(challengeId); + logger.info( + `[ChallengeReviewContextHelper] Context generation complete for challenge ${challengeId}`, + ); +} + +function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +module.exports = { + shouldGenerateChallengeReviewContext, + triggerChallengeReviewContextGeneration, +}; diff --git a/src/common/review-context-generation-guard.js b/src/common/review-context-generation-guard.js new file mode 100644 index 0000000..b0aecf1 --- /dev/null +++ b/src/common/review-context-generation-guard.js @@ -0,0 +1,82 @@ +/** + * In-memory guard to prevent duplicate context generation triggers. + * Tracks challengeId -> { timestamp, runId } of ongoing context generation. + * Entries auto-expire after EXPIRY_MS to handle failed processes. + */ + +const EXPIRY_MS = 15 * 60 * 1000; // 15 minutes + +const generationCache = new Map(); + +/** + * Check if context generation is currently in progress for a challenge. + * @param {string} challengeId - The challenge ID + * @returns {boolean} - True if generation is in progress (started within EXPIRY_MS) + */ +function isGenerationInProgress(challengeId) { + const entry = generationCache.get(challengeId); + if (!entry) { + return false; + } + const elapsed = Date.now() - entry.timestamp; + if (elapsed > EXPIRY_MS) { + generationCache.delete(challengeId); + return false; + } + return true; +} + +/** + * Get the current runId for a challenge's in-progress generation. + * @param {string} challengeId - The challenge ID + * @returns {string|null} - The runId if in progress, null otherwise + */ +function getRunId(challengeId) { + const entry = generationCache.get(challengeId); + if (!entry) { + return null; + } + const elapsed = Date.now() - entry.timestamp; + if (elapsed > EXPIRY_MS) { + generationCache.delete(challengeId); + return null; + } + return entry.runId || null; +} + +/** + * Mark that context generation has started for a challenge. + * @param {string} challengeId - The challenge ID + * @param {string} runId - The workflow run ID (optional, can be set later) + */ +function markGenerationStarted(challengeId, runId = null) { + generationCache.set(challengeId, { timestamp: Date.now(), runId }); +} + +/** + * Update the runId for an in-progress generation. + * @param {string} challengeId - The challenge ID + * @param {string} runId - The workflow run ID + */ +function setRunId(challengeId, runId) { + const entry = generationCache.get(challengeId); + if (entry) { + entry.runId = runId; + } +} + +/** + * Clear the generation entry for a challenge (on completion or failure). + * @param {string} challengeId - The challenge ID + */ +function clearGeneration(challengeId) { + generationCache.delete(challengeId); +} + +module.exports = { + isGenerationInProgress, + getRunId, + markGenerationStarted, + setRunId, + clearGeneration, +}; diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 69c4836..d9dc588 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -4,7 +4,7 @@ const _ = require("lodash"); const Joi = require("joi"); const { Prisma } = require("@prisma/client"); -const { v4: uuid } = require('uuid'); +const { v4: uuid } = require("uuid"); const config = require("config"); const xss = require("xss"); const helper = require("../common/helper"); @@ -25,6 +25,10 @@ const { hasAdminRole } = require("../common/role-helper"); const { enrichChallengeForResponse, convertToISOString } = require("../common/challenge-helper"); const deepEqual = require("deep-equal"); const prismaHelper = require("../common/prisma-helper"); +const { + shouldGenerateChallengeReviewContext, + triggerChallengeReviewContextGeneration, +} = require("../common/challenge-review-context-helper"); const { getClient, @@ -131,9 +135,7 @@ async function ensureChallengeHasAiReviewers(challengeId) { const hasAIReviewers = Array.isArray(reviewers) && reviewers.length > 0; if (!hasAIReviewers) { - throw new errors.BadRequestError( - `Challenge does not have any AI reviewers assigned` - ); + throw new errors.BadRequestError(`Challenge does not have any AI reviewers assigned`); } } @@ -144,16 +146,14 @@ async function ensureAIScreeningCanBeClosed(challengeId) { const aiReviewConfig = await helper.getAIReviewConfigByChallengeId(challengeId); if (!aiReviewConfig || !aiReviewConfig.id) { logger.debug( - `AI Screening closure blocked for challenge ${challengeId}: AI review configuration not found` + `AI Screening closure blocked for challenge ${challengeId}: AI review configuration not found`, ); throw new errors.BadRequestError( - "Cannot close AI Screening phase because AI review configuration could not be fetched" + "Cannot close AI Screening phase because AI review configuration could not be fetched", ); } - logger.debug( - `Found AI review configuration ${aiReviewConfig.id} for challenge ${challengeId}` - ); + logger.debug(`Found AI review configuration ${aiReviewConfig.id} for challenge ${challengeId}`); const reviewPrisma = getReviewClient(); const reviewSchema = config.REVIEW_DB_SCHEMA; @@ -170,20 +170,20 @@ async function ensureAIScreeningCanBeClosed(challengeId) { FROM ${submissionTable} WHERE "challengeId" = ${challengeId} AND "status"::text <> 'DELETED' - ` + `, ), reviewPrisma.$queryRaw( Prisma.sql` SELECT "submissionId", "isFinal" FROM ${aiReviewDecisionTable} WHERE "configId" = ${aiReviewConfig.id} - ` + `, ), ]); } catch (err) { logger.error( `Failed to fetch AI screening submissions/decisions for challenge ${challengeId}: ${err.message}`, - err + err, ); throw err; } @@ -191,16 +191,14 @@ async function ensureAIScreeningCanBeClosed(challengeId) { logger.debug( `AI Screening data for challenge ${challengeId}: submissions=${(submissions || []).length}, decisions=${ (decisions || []).length - }` + }`, ); const submissionIds = _.uniq( - (submissions || []).map((submission) => extractSubmissionId(submission)).filter((id) => !!id) + (submissions || []).map((submission) => extractSubmissionId(submission)).filter((id) => !!id), ); if (submissionIds.length === 0) { - logger.debug( - `AI Screening closure allowed for challenge ${challengeId}: no submissions found` - ); + logger.debug(`AI Screening closure allowed for challenge ${challengeId}: no submissions found`); return; } @@ -208,20 +206,22 @@ async function ensureAIScreeningCanBeClosed(challengeId) { (decisions || []) .filter((decision) => decision && decision.isFinal === true) .map((decision) => extractSubmissionId(decision)) - .filter((id) => !!id) + .filter((id) => !!id), ); - const hasPendingDecision = (decisions || []).some((decision) => decision && decision.isFinal !== true); + const hasPendingDecision = (decisions || []).some( + (decision) => decision && decision.isFinal !== true, + ); const missingFinalizedSubmissions = submissionIds.filter( - (submissionId) => !finalizedDecisionSubmissionIds.has(submissionId) + (submissionId) => !finalizedDecisionSubmissionIds.has(submissionId), ); if (hasPendingDecision || missingFinalizedSubmissions.length > 0) { logger.debug( - `AI Screening closure blocked for challenge ${challengeId}: hasPendingDecision=${hasPendingDecision}, missingFinalizedSubmissions=${missingFinalizedSubmissions.length}` + `AI Screening closure blocked for challenge ${challengeId}: hasPendingDecision=${hasPendingDecision}, missingFinalizedSubmissions=${missingFinalizedSubmissions.length}`, ); throw new errors.BadRequestError( - "Cannot close AI Screening phase because AI reviews are not complete" + "Cannot close AI Screening phase because AI reviews are not complete", ); } @@ -279,30 +279,32 @@ async function enrichSkillsData(challenge, { skillLookup } = {}) { return lookup[skillId]; }; - challenge.skills = _.uniqBy(challenge.skills, (skill) => skill.skillId || skill.id).map((skill) => { - const skillId = skill.skillId || skill.id; - const found = getFromLookup(skillId); - if (found) { - const enrichedSkill = { - id: skillId, - name: found.name, - }; - - if (found.category) { - enrichedSkill.category = { - id: found.category.id, - name: found.category.name, + challenge.skills = _.uniqBy(challenge.skills, (skill) => skill.skillId || skill.id).map( + (skill) => { + const skillId = skill.skillId || skill.id; + const found = getFromLookup(skillId); + if (found) { + const enrichedSkill = { + id: skillId, + name: found.name, }; - } - return enrichedSkill; - } + if (found.category) { + enrichedSkill.category = { + id: found.category.id, + name: found.category.name, + }; + } - return { - id: skillId, - name: skill.name || "", - }; - }); + return enrichedSkill; + } + + return { + id: skillId, + name: skill.name || "", + }; + }, + ); } /** @@ -311,7 +313,7 @@ async function enrichSkillsData(challenge, { skillLookup } = {}) { */ async function enrichSkillsDataBulk(challenges) { const challengesWithSkills = challenges.filter( - (challenge) => Array.isArray(challenge.skills) && challenge.skills.length > 0 + (challenge) => Array.isArray(challenge.skills) && challenge.skills.length > 0, ); if (challengesWithSkills.length === 0) { @@ -320,7 +322,7 @@ async function enrichSkillsDataBulk(challenges) { const uniqueSkillIds = _(challengesWithSkills) .flatMap((challenge) => - challenge.skills.map((skill) => skill.skillId || skill.id).filter((id) => !_.isNil(id)) + challenge.skills.map((skill) => skill.skillId || skill.id).filter((id) => !_.isNil(id)), ) .uniq() .value(); @@ -345,7 +347,7 @@ async function enrichSkillsDataBulk(challenges) { } await Promise.all( - challengesWithSkills.map((challenge) => enrichSkillsData(challenge, { skillLookup: lookup })) + challengesWithSkills.map((challenge) => enrichSkillsData(challenge, { skillLookup: lookup })), ); } @@ -371,11 +373,11 @@ const includeReturnFields = { }, events: true, prizeSets: { - include: { + include: { prizes: { orderBy: { value: "desc" }, }, - } + }, }, reviewers: { orderBy: { createdAt: "asc" }, @@ -487,7 +489,9 @@ async function setDefaultReviewers(currentUser, data) { incrementalCoefficient: Joi.number().min(0).max(1).optional().allow(null), type: Joi.when("isMemberReview", { is: true, - then: Joi.string().valid(..._.values(ReviewOpportunityTypeEnum)).insensitive(), + then: Joi.string() + .valid(..._.values(ReviewOpportunityTypeEnum)) + .insensitive(), otherwise: Joi.forbidden(), }), aiConfigTemplateId: Joi.when("isMemberReview", { @@ -495,7 +499,7 @@ async function setDefaultReviewers(currentUser, data) { then: Joi.string().required(), otherwise: Joi.forbidden(), }), - }) + }), ) .default([]), }) @@ -519,7 +523,7 @@ async function setDefaultReviewers(currentUser, data) { }); if (!timelineTemplate) { throw new errors.NotFoundError( - `TimelineTemplate with id: ${value.timelineTemplateId} doesn't exist` + `TimelineTemplate with id: ${value.timelineTemplateId} doesn't exist`, ); } } @@ -555,7 +559,7 @@ async function setDefaultReviewers(currentUser, data) { timelineTemplateId: _.isNil(value.timelineTemplateId) ? null : value.timelineTemplateId, scorecardId: String(r.scorecardId), isMemberReview: !!r.isMemberReview, - aiConfigTemplateId:_.isNil(r.aiConfigTemplateId) ? null : r.aiConfigTemplateId, + aiConfigTemplateId: _.isNil(r.aiConfigTemplateId) ? null : r.aiConfigTemplateId, memberReviewerCount: _.isNil(r.memberReviewerCount) ? null : Number(r.memberReviewerCount), @@ -824,7 +828,7 @@ async function searchChallenges(currentUser, criteria) { } const arrayValue = Array.isArray(list) ? list : [list]; return _.uniq( - arrayValue.map((value) => normalizeGroupIdValue(value)).filter((value) => !_.isNil(value)) + arrayValue.map((value) => normalizeGroupIdValue(value)).filter((value) => !_.isNil(value)), ); }; @@ -855,7 +859,7 @@ async function searchChallenges(currentUser, criteria) { if (typeIds.length > 0) { includedTypeIds = _.concat( includedTypeIds, - typeIds.map((t) => t.id) + typeIds.map((t) => t.id), ); } } @@ -867,7 +871,7 @@ async function searchChallenges(currentUser, criteria) { if (trackIds.length > 0) { includedTrackIds = _.concat( includedTrackIds, - trackIds.map((t) => t.id) + trackIds.map((t) => t.id), ); } } @@ -1161,29 +1165,22 @@ async function searchChallenges(currentUser, criteria) { } } - const requestedMemberId = !_.isNil(criteria.memberId) - ? _.toString(criteria.memberId) - : null; + const requestedMemberId = !_.isNil(criteria.memberId) ? _.toString(criteria.memberId) : null; const currentUserMemberId = - currentUser && !_hasAdminRole && !_isMachineToken - ? _.toString(currentUser.userId) - : null; + currentUser && !_hasAdminRole && !_isMachineToken ? _.toString(currentUser.userId) : null; const memberIdForTaskFilter = requestedMemberId || currentUserMemberId; - const isSelfMemberSearch = - Boolean(requestedMemberId && currentUserMemberId && requestedMemberId === currentUserMemberId); - const shouldApplyGroupVisibilityFilter = - Boolean(currentUser && !_isMachineToken && !_hasAdminRole && !isSelfMemberSearch); + const isSelfMemberSearch = Boolean( + requestedMemberId && currentUserMemberId && requestedMemberId === currentUserMemberId, + ); + const shouldApplyGroupVisibilityFilter = Boolean( + currentUser && !_isMachineToken && !_hasAdminRole && !isSelfMemberSearch, + ); let hasProjectManagerAccessForSearch = false; - if ( - currentUser && - !_hasAdminRole && - !_isMachineToken && - !_.isNil(criteria.projectId) - ) { + if (currentUser && !_hasAdminRole && !_isMachineToken && !_.isNil(criteria.projectId)) { hasProjectManagerAccessForSearch = await helper.userHasProjectManagerAccess( criteria.projectId, - currentUser + currentUser, ); } @@ -1448,9 +1445,7 @@ async function searchChallenges(currentUser, criteria) { }); const sortDirection = sortOrderProp === "asc" ? 1 : -1; - summaryRecords.sort( - (a, b) => compareStatusSortValues(a.status, b.status) * sortDirection - ); + summaryRecords.sort((a, b) => compareStatusSortValues(a.status, b.status) * sortDirection); total = summaryRecords.length; const offset = (page - 1) * perPage; @@ -1498,7 +1493,7 @@ async function searchChallenges(currentUser, criteria) { }); if (taskSyncTargets.length > 0) { await Promise.all( - taskSyncTargets.map((challenge) => helper.syncTaskAssignmentFromResources(challenge)) + taskSyncTargets.map((challenge) => helper.syncTaskAssignmentFromResources(challenge)), ); } if (!currentUser) { @@ -1533,8 +1528,7 @@ async function searchChallenges(currentUser, criteria) { if (!currentUser.isMachine && !_hasAdminRole) { result.forEach((challenge) => { _.unset(challenge, "billing"); - const hasCurrentUserAccess = - _.get(challenge, "memberAccesses.length", 0) > 0; + const hasCurrentUserAccess = _.get(challenge, "memberAccesses.length", 0) > 0; if (!hasCurrentUserAccess) { _.unset(challenge, "privateDescription"); } @@ -1575,7 +1569,7 @@ async function searchChallenges(currentUser, criteria) { `SearchChallenges timings (page=${page}, perPage=${perPage}): ${JSON.stringify({ totalElapsedMs: Date.now() - searchTimingStart, marks: searchTimingMarks, - })}` + })}`, ); } @@ -1611,7 +1605,9 @@ searchChallenges.schema = { projectId: Joi.number().integer().positive(), forumId: Joi.number().integer(), legacyId: Joi.number().integer().positive(), - status: Joi.string().valid(..._.values(ChallengeStatusEnum)).insensitive(), + status: Joi.string() + .valid(..._.values(ChallengeStatusEnum)) + .insensitive(), group: Joi.string(), startDateStart: Joi.date(), startDateEnd: Joi.date(), @@ -1678,25 +1674,25 @@ async function createChallenge(currentUser, challenge, userToken) { logger.debug(`createChallenge: request payload validated ${buildLogContext()}`); const prizeTypeTmp = challengeHelper.validatePrizeSetsAndGetPrizeType(challenge.prizeSets); logger.debug( - `createChallenge: initial prize validation complete (prizeType=${prizeTypeTmp}) ${buildLogContext()}` + `createChallenge: initial prize validation complete (prizeType=${prizeTypeTmp}) ${buildLogContext()}`, ); if (challenge.legacy && challenge.legacy.selfService) { // if self-service, create a new project (what about if projectId is provided in the payload? confirm with business!) if (!challenge.projectId && challengeHelper.isProjectIdRequired(challenge.timelineTemplateId)) { const selfServiceProjectName = `Self service - ${currentUser.handle} - ${challenge.name}`; logger.info( - `createChallenge: creating self-service project (name=${selfServiceProjectName}) ${buildLogContext()}` + `createChallenge: creating self-service project (name=${selfServiceProjectName}) ${buildLogContext()}`, ); challenge.projectId = await helper.createSelfServiceProject( selfServiceProjectName, "N/A", config.NEW_SELF_SERVICE_PROJECT_TYPE, - userToken + userToken, ); logger.info( `createChallenge: self-service project created (projectId=${ challenge.projectId - }) ${buildLogContext()}` + }) ${buildLogContext()}`, ); } @@ -1727,21 +1723,20 @@ async function createChallenge(currentUser, challenge, userToken) { normalizedDirectProjectId = _.toNumber(directProjectId); if (!Number.isInteger(normalizedDirectProjectId)) { throw new errors.BadRequestError( - `Project with id: ${projectId} has invalid directProjectId: ${directProjectId}` + `Project with id: ${projectId} has invalid directProjectId: ${directProjectId}`, ); } } logger.debug( - `createChallenge: fetched project details (directProjectId=${normalizedDirectProjectId}) ${buildLogContext()}` + `createChallenge: fetched project details (directProjectId=${normalizedDirectProjectId}) ${buildLogContext()}`, ); logger.debug(`createChallenge: fetching billing information ${buildLogContext()}`); - const { billingAccountId, markup } = await projectHelper.getProjectBillingInformation( - projectId - ); + const { billingAccountId, markup } = + await projectHelper.getProjectBillingInformation(projectId); logger.debug( `createChallenge: billing information retrieved (hasAccount=${ billingAccountId !== null && billingAccountId !== undefined - }, markup=${markup}) ${buildLogContext()}` + }, markup=${markup}) ${buildLogContext()}`, ); _.set(challenge, "legacy.directProjectId", normalizedDirectProjectId); @@ -1773,8 +1768,8 @@ async function createChallenge(currentUser, challenge, userToken) { logger.debug( `createChallenge: resolved challenge track/type (trackId=${_.get(track, "id")}, typeId=${_.get( type, - "id" - )}) ${buildLogContext()}` + "id", + )}) ${buildLogContext()}`, ); if (_.get(type, "isTask")) { @@ -1798,7 +1793,7 @@ async function createChallenge(currentUser, challenge, userToken) { logger.debug( `createChallenge: validating provided phases (count=${ challenge.phases.length - }) ${buildLogContext()}` + }) ${buildLogContext()}`, ); await phaseHelper.validatePhases(challenge.phases); logger.debug(`createChallenge: provided phases validated ${buildLogContext()}`); @@ -1810,7 +1805,7 @@ async function createChallenge(currentUser, challenge, userToken) { logger.debug( `createChallenge: fetching default timeline template (trackId=${ challenge.trackId - }, typeId=${challenge.typeId}) ${buildLogContext()}` + }, typeId=${challenge.typeId}) ${buildLogContext()}`, ); const supportedTemplates = await ChallengeTimelineTemplateService.searchChallengeTimelineTemplates({ @@ -1821,19 +1816,19 @@ async function createChallenge(currentUser, challenge, userToken) { logger.debug( `createChallenge: retrieved ${ supportedTemplates.result.length - } supported templates ${buildLogContext()}` + } supported templates ${buildLogContext()}`, ); const challengeTimelineTemplate = supportedTemplates.result[0]; if (!challengeTimelineTemplate) { throw new errors.BadRequestError( - `The selected trackId ${challenge.trackId} and typeId: ${challenge.typeId} does not have a default timeline template. Please provide a timelineTemplateId` + `The selected trackId ${challenge.trackId} and typeId: ${challenge.typeId} does not have a default timeline template. Please provide a timelineTemplateId`, ); } challenge.timelineTemplateId = challengeTimelineTemplate.timelineTemplateId; logger.debug( `createChallenge: using timelineTemplateId=${ challenge.timelineTemplateId - } ${buildLogContext()}` + } ${buildLogContext()}`, ); } else { throw new errors.BadRequestError(`trackId and typeId are required to create a challenge`); @@ -1842,15 +1837,15 @@ async function createChallenge(currentUser, challenge, userToken) { logger.debug( `createChallenge: populating phases for challenge creation (templateId=${ challenge.timelineTemplateId - }) ${buildLogContext()}` + }) ${buildLogContext()}`, ); challenge.phases = await phaseHelper.populatePhasesForChallengeCreation( challenge.phases, challenge.startDate, - challenge.timelineTemplateId + challenge.timelineTemplateId, ); logger.debug( - `createChallenge: phases populated (count=${challenge.phases.length}) ${buildLogContext()}` + `createChallenge: phases populated (count=${challenge.phases.length}) ${buildLogContext()}`, ); // populate challenge terms @@ -1862,8 +1857,8 @@ async function createChallenge(currentUser, challenge, userToken) { `createChallenge: validating challenge terms (count=${_.get( challenge.terms, "length", - 0 - )}) ${buildLogContext()}` + 0, + )}) ${buildLogContext()}`, ); challenge.terms = await helper.validateChallengeTerms(challenge.terms || []); logger.debug(`createChallenge: challenge terms validated ${buildLogContext()}`); @@ -1899,7 +1894,7 @@ async function createChallenge(currentUser, challenge, userToken) { // The amountInCents field doesn't exist in the database schema const prizeType = challengeHelper.validatePrizeSetsAndGetPrizeType(challenge.prizeSets); logger.debug( - `createChallenge: final prize validation complete (prizeType=${prizeType}) ${buildLogContext()}` + `createChallenge: final prize validation complete (prizeType=${prizeType}) ${buildLogContext()}`, ); // If reviewers are not provided, apply defaults for this challenge. @@ -1909,11 +1904,9 @@ async function createChallenge(currentUser, challenge, userToken) { prisma, debugLog, ); - const aiReviewConfigsForCreation = !hasProvidedReviewers ? await challengeHelper.applyDefaultAIConfigForChallengeCreation( - challenge, - prisma, - debugLog, - ) : []; + const aiReviewConfigsForCreation = !hasProvidedReviewers + ? await challengeHelper.applyDefaultAIConfigForChallengeCreation(challenge, prisma, debugLog) + : []; // AI screening phase will be added when challenge is launched (status changed to ACTIVE) @@ -1922,8 +1915,8 @@ async function createChallenge(currentUser, challenge, userToken) { `createChallenge: creating challenge record via prisma ${buildLogContext()} phaseCount=${_.get( challenge, "phases.length", - 0 - )} prizeSetCount=${_.get(challenge, "prizeSets.length", 0)}` + 0, + )} prizeSetCount=${_.get(challenge, "prizeSets.length", 0)}`, ); const ret = await prisma.challenge.create({ data: prismaModel, @@ -1954,13 +1947,13 @@ async function createChallenge(currentUser, challenge, userToken) { logger.debug( `createChallenge: assigning CLIENT_MANAGER role to creator (challengeId=${ ret.id - }) ${buildLogContext()}` + }) ${buildLogContext()}`, ); await helper.createResource(ret.id, ret.createdBy, config.CLIENT_MANAGER_ROLE_ID); logger.debug( `createChallenge: CLIENT_MANAGER role assignment complete (challengeId=${ ret.id - }) ${buildLogContext()}` + }) ${buildLogContext()}`, ); } } else { @@ -1968,13 +1961,13 @@ async function createChallenge(currentUser, challenge, userToken) { logger.debug( `createChallenge: assigning MANAGER role to creator (challengeId=${ ret.id - }) ${buildLogContext()}` + }) ${buildLogContext()}`, ); await helper.createResource(ret.id, ret.createdBy, config.MANAGER_ROLE_ID); logger.debug( `createChallenge: MANAGER role assignment complete (challengeId=${ ret.id - }) ${buildLogContext()}` + }) ${buildLogContext()}`, ); } } @@ -1983,13 +1976,13 @@ async function createChallenge(currentUser, challenge, userToken) { logger.info( `createChallenge: posting bus event ${constants.Topics.ChallengeCreated} (challengeId=${ ret.id - }) ${buildLogContext()}` + }) ${buildLogContext()}`, ); await helper.postBusEvent(constants.Topics.ChallengeCreated, ret); logger.info( `createChallenge: bus event posted ${constants.Topics.ChallengeCreated} (challengeId=${ ret.id - }) ${buildLogContext()}` + }) ${buildLogContext()}`, ); return helper.removeNullProperties(ret); @@ -2044,7 +2037,7 @@ createChallenge.schema = { Joi.object().keys({ name: Joi.string().required(), value: Joi.required(), - }) + }), ) .unique((a, b) => a.name === b.name), timelineTemplateId: Joi.string(), // Joi.optionalId(), @@ -2059,27 +2052,29 @@ createChallenge.schema = { name: Joi.string(), value: Joi.number().integer().min(0), }) - .optional() + .optional(), ) .optional(), - }) + }), ), events: Joi.array().items( Joi.object().keys({ id: Joi.number().required(), name: Joi.string(), key: Joi.string(), - }) + }), ), discussions: Joi.array().items( Joi.object().keys({ id: Joi.optionalId(), name: Joi.string().required(), - type: Joi.string().required().valid(..._.values(DiscussionTypeEnum)), + type: Joi.string() + .required() + .valid(..._.values(DiscussionTypeEnum)), provider: Joi.string().required(), url: Joi.string(), options: Joi.array().items(Joi.object()), - }) + }), ), reviewers: Joi.array().items( Joi.object().keys({ @@ -2094,7 +2089,9 @@ createChallenge.schema = { phaseId: Joi.id().required(), type: Joi.when("isMemberReview", { is: true, - then: Joi.string().valid(..._.values(ReviewOpportunityTypeEnum)).insensitive(), + then: Joi.string() + .valid(..._.values(ReviewOpportunityTypeEnum)) + .insensitive(), otherwise: Joi.forbidden(), }), aiWorkflowId: Joi.when("isMemberReview", { @@ -2105,11 +2102,13 @@ createChallenge.schema = { fixedAmount: Joi.number().min(0).optional().allow(null), baseCoefficient: Joi.number().min(0).max(1).optional().allow(null), incrementalCoefficient: Joi.number().min(0).max(1).optional().allow(null), - }) + }), ), prizeSets: Joi.array().items( Joi.object().keys({ - type: Joi.string().valid(..._.values(PrizeSetTypeEnum)).required(), + type: Joi.string() + .valid(..._.values(PrizeSetTypeEnum)) + .required(), description: Joi.string(), prizes: Joi.array() .items( @@ -2117,11 +2116,11 @@ createChallenge.schema = { description: Joi.string(), type: Joi.string().required(), value: Joi.number().min(0).required(), - }) + }), ) .min(1) .required(), - }) + }), ), tags: Joi.array().items(Joi.string()), // tag names projectId: Joi.number().integer().positive(), @@ -2136,7 +2135,7 @@ createChallenge.schema = { ChallengeStatusEnum.ACTIVE, ChallengeStatusEnum.NEW, ChallengeStatusEnum.DRAFT, - ChallengeStatusEnum.APPROVED + ChallengeStatusEnum.APPROVED, ), groups: Joi.array().items(Joi.optionalId()).unique(), // gitRepoURLs: Joi.array().items(Joi.string().uri()), @@ -2144,7 +2143,7 @@ createChallenge.schema = { Joi.object().keys({ id: Joi.id(), roleId: Joi.id(), - }) + }), ), skills: Joi.array() .items( @@ -2152,7 +2151,7 @@ createChallenge.schema = { .keys({ id: Joi.id(), }) - .unknown(true) + .unknown(true), ) .optional(), }) @@ -2189,18 +2188,15 @@ async function getChallenge(currentUser, id, checkIfExists) { _.unset(challenge, "billing"); if (_.isEmpty(challenge.privateDescription)) { _.unset(challenge, "privateDescription"); - } else if ( - !taskInfo.isTask || - !taskInfo.isAssigned - ) { + } else if (!taskInfo.isTask || !taskInfo.isAssigned) { const hasProjectWriteAccess = await helper.userHasProjectWriteAccess( challenge.projectId, - currentUser + currentUser, ); if (!hasProjectWriteAccess) { const memberResources = await helper.listResourcesByMemberAndChallenge( currentUser.userId, - challenge.id + challenge.id, ); if (_.isEmpty(memberResources)) { _.unset(challenge, "privateDescription"); @@ -2276,7 +2272,7 @@ async function getChallengeStatistics(currentUser, id) { score: _.get( _.find(submission.review || [], (r) => r.metadata), "score", - 0 + 0, ), }); } @@ -2309,7 +2305,7 @@ function buildCombinedWinnerPayload(data = {}) { ...data.winners.map((winner) => ({ ...winner, type: _.toUpper(winner.type || PrizeSetTypeEnum.PLACEMENT), - })) + })), ); } if (Array.isArray(data.checkpointWinners)) { @@ -2317,7 +2313,7 @@ function buildCombinedWinnerPayload(data = {}) { ...data.checkpointWinners.map((winner) => ({ ...winner, type: _.toUpper(winner.type || PrizeSetTypeEnum.CHECKPOINT), - })) + })), ); } return combined; @@ -2330,13 +2326,13 @@ async function validateWinners(winners, challengeResources) { for (const winner of filteredWinners) { if (!_.find(registrants, (r) => _.toString(r.memberId) === _.toString(winner.userId))) { throw new errors.BadRequestError( - `Member with userId: ${winner.userId} is not registered on the challenge` + `Member with userId: ${winner.userId} is not registered on the challenge`, ); } const diffWinners = _.differenceWith(filteredWinners, [winner], _.isEqual); if (diffWinners.length + 1 !== filteredWinners.length) { throw new errors.BadRequestError( - `Duplicate member with placement: ${helper.toString(winner)}` + `Duplicate member with placement: ${helper.toString(winner)}`, ); } @@ -2349,7 +2345,7 @@ async function validateWinners(winners, challengeResources) { (placementExists.userId !== winner.userId || placementExists.handle !== winner.handle) ) { throw new errors.BadRequestError( - `Only one member can have a placement: ${winner.placement}` + `Only one member can have a placement: ${winner.placement}`, ); } @@ -2359,7 +2355,7 @@ async function validateWinners(winners, challengeResources) { }); if (memberExists && memberExists.placement !== winner.placement) { throw new errors.BadRequestError( - `The same member ${winner.userId} cannot have multiple placements` + `The same member ${winner.userId} cannot have multiple placements`, ); } } @@ -2401,14 +2397,14 @@ function validateTask(currentUser, challenge, data, challengeResources) { challengeResources, (r) => r.roleId === config.SUBMITTER_ROLE_ID && - _.toString(r.memberId) === _.toString(currentUser.userId) + _.toString(r.memberId) === _.toString(currentUser.userId), ).length > 0; if (assignedToCurrentUser) { throw new errors.ForbiddenError( `You are not allowed to ${ data.status === ChallengeStatusEnum.ACTIVE ? "lanuch" : "complete" - } task assigned to yourself. Please contact manager to operate.` + } task assigned to yourself. Please contact manager to operate.`, ); } } @@ -2426,7 +2422,7 @@ function prepareTaskCompletionData(challenge, challengeResources, data) { const submitters = _.filter( challengeResources, - (resource) => resource.roleId === config.SUBMITTER_ROLE_ID + (resource) => resource.roleId === config.SUBMITTER_ROLE_ID, ); if (!submitters || submitters.length === 0) { @@ -2511,13 +2507,13 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { projectId = _.get(challenge, "projectId"); logger.debug( - `updateChallenge(${challengeId}): requesting billing information for project ${projectId}` + `updateChallenge(${challengeId}): requesting billing information for project ${projectId}`, ); ({ billingAccountId, markup } = await projectHelper.getProjectBillingInformation(projectId)); logger.debug( `updateChallenge(${challengeId}): billing lookup complete (hasAccount=${ billingAccountId != null - })` + })`, ); if (billingAccountId && _.isUndefined(_.get(challenge, "billing.billingAccountId"))) { @@ -2558,7 +2554,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { logger.debug(`updateChallenge(${challengeId}): fetching challenge resources`); const challengeResources = await helper.getChallengeResources(challengeId); logger.debug( - `updateChallenge(${challengeId}): fetched ${challengeResources.length} challenge resources` + `updateChallenge(${challengeId}): fetched ${challengeResources.length} challenge resources`, ); logger.debug(`updateChallenge(${challengeId}): validating update payload`); @@ -2566,7 +2562,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { currentUser, challenge, data, - challengeResources + challengeResources, ); logger.debug(`updateChallenge(${challengeId}): payload validation complete`); validateTask(currentUser, challenge, data, challengeResources); @@ -2608,16 +2604,16 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { const workItemSummary = _.get( _.find(_.get(challenge, "metadata", []), (m) => m.name === "websitePurpose.description"), "value", - "N/A" + "N/A", ); logger.debug( - `updateChallenge(${challengeId}): activating self-service project ${projectId}` + `updateChallenge(${challengeId}): activating self-service project ${projectId}`, ); await helper.activateProject( projectId, currentUser, selfServiceProjectName, - workItemSummary + workItemSummary, ); sendActivationEmail = data.status === ChallengeStatusEnum.ACTIVE; @@ -2629,13 +2625,13 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { ...data, status: ChallengeStatusEnum.CANCELLED_PAYMENT_FAILED, cancelReason: `Failed to activate project. Error: ${e.message}. JSON: ${JSON.stringify( - e + e, )}`, }, - false + false, ); throw new errors.BadRequestError( - "Failed to activate the challenge! The challenge has been canceled!" + "Failed to activate the challenge! The challenge has been canceled!", ); } } @@ -2646,12 +2642,12 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { ) { try { logger.debug( - `updateChallenge(${challengeId}): updating self-service project info for project ${projectId}` + `updateChallenge(${challengeId}): updating self-service project info for project ${projectId}`, ); await helper.updateSelfServiceProjectInfo( projectId, data.endDate || challenge.endDate, - currentUser + currentUser, ); } catch (e) { logger.debug(`There was an error trying to update the project: ${e.message}`); @@ -2665,7 +2661,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { ) { try { logger.debug( - `updateChallenge(${challengeId}): cancelling self-service project ${challenge.projectId}` + `updateChallenge(${challengeId}): cancelling self-service project ${challenge.projectId}`, ); await helper.cancelProject(challenge.projectId, data.cancelReason, currentUser); } catch (e) { @@ -2688,7 +2684,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { challengeHelper.isProjectIdRequired(challenge.timelineTemplateId) ) { throw new errors.BadRequestError( - "Cannot Activate this project, it has no active billing account." + "Cannot Activate this project, it has no active billing account.", ); } } @@ -2706,7 +2702,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { ChallengeStatusEnum.CANCELLED_CLIENT_REQUEST, ChallengeStatusEnum.CANCELLED_ZERO_REGISTRATIONS, ], - data.status + data.status, ) ) { isChallengeBeingCancelled = true; @@ -2737,7 +2733,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { } else if (!currentUser.isMachine) { const existingDiscussion = _.find( _.get(challenge, "discussions", []), - (d) => d.id === data.discussions[i].id + (d) => d.id === data.discussions[i].id, ); if (existingDiscussion) { _.assign(data.discussions[i], _.pick(existingDiscussion, ["url", "options"])); @@ -2752,7 +2748,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { data.discussions[i].id = uuid(); data.discussions[i].name = data.discussions[i].name.substring( 0, - config.FORUM_TITLE_LENGTH_LIMIT + config.FORUM_TITLE_LENGTH_LIMIT, ); } } @@ -2773,7 +2769,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { finalTimelineTemplateId !== challenge.timelineTemplateId ) { throw new errors.BadRequestError( - `Cannot change the timelineTemplateId for challenges with status: ${finalStatus}` + `Cannot change the timelineTemplateId for challenges with status: ${finalStatus}`, ); } } else if (finalTimelineTemplateId !== challenge.timelineTemplateId) { @@ -2790,7 +2786,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { // Allow only M2M to update prizeSets for completed challenges if (!currentUser.isMachine || (challenge.task != null && challenge.task.isTask !== true)) { throw new errors.BadRequestError( - `Cannot update prizeSets for challenges with status: ${finalStatus}!` + `Cannot update prizeSets for challenges with status: ${finalStatus}!`, ); } } @@ -2815,7 +2811,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { challenge.status.indexOf(ChallengeStatusEnum.CANCELLED) > -1 ) { throw new BadRequestError( - `Challenge phase/start date can not be modified for COMPLETED or CANCELLED challenges.` + `Challenge phase/start date can not be modified for COMPLETED or CANCELLED challenges.`, ); } const newStartDate = data.startDate || challenge.startDate; @@ -2824,14 +2820,14 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { newPhases = await phaseHelper.populatePhasesForChallengeCreation( data.phases, newStartDate, - finalTimelineTemplateId + finalTimelineTemplateId, ); } else { newPhases = await phaseHelper.populatePhasesForChallengeUpdate( challenge.phases, data.phases, challenge.timelineTemplateId, - isChallengeBeingActivated + isChallengeBeingActivated, ); } phasesUpdated = true; @@ -2845,14 +2841,16 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { } // Add AI screening phase if AI reviewers are assigned and challenge is being activated if (isStatusChangingToActive) { - logger.debug(`updateChallenge: checking if AI screening phase needs to be added (challengeId=${challengeId})`); - const tempChallenge = { phases: phasesForUpdate || challenge.phases, reviewers: data.reviewers || challenge.reviewers }; - const debugLogForAI = (message) => logger.debug(`updateChallenge(AI screening): ${message} (challengeId=${challengeId})`); - await challengeHelper.addAIScreeningPhaseForChallenge( - tempChallenge, - prisma, - debugLogForAI, + logger.debug( + `updateChallenge: checking if AI screening phase needs to be added (challengeId=${challengeId})`, ); + const tempChallenge = { + phases: phasesForUpdate || challenge.phases, + reviewers: data.reviewers || challenge.reviewers, + }; + const debugLogForAI = (message) => + logger.debug(`updateChallenge(AI screening): ${message} (challengeId=${challengeId})`); + await challengeHelper.addAIScreeningPhaseForChallenge(tempChallenge, prisma, debugLogForAI); // Update phasesForUpdate with the updated phases after AI screening addition phasesForUpdate = tempChallenge.phases; phasesUpdated = true; @@ -2918,13 +2916,13 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { logger.info( `User ${ currentUser.handle || currentUser.sub - } is not allowed to modify the task information on challenge ${challengeId}` + } is not allowed to modify the task information on challenge ${challengeId}`, ); data.task = challenge.task; logger.info( `Task information on challenge ${challengeId} is reset to ${JSON.stringify( - challenge.task - )}. Original data: ${JSON.stringify(data.task)}` + challenge.task, + )}. Original data: ${JSON.stringify(data.task)}`, ); } else { delete data.task; @@ -2939,8 +2937,8 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { logger.info( `Setting task.memberId to ${winnerMemberId} for challenge ${challengeId}. Task ${_.get( data, - "task" - )} - ${_.get(challenge, "task")}` + "task", + )} - ${_.get(challenge, "task")}`, ); if (winnerMemberId != null && _.get(data, "task.memberId") !== winnerMemberId) { @@ -2951,7 +2949,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { memberId: winnerMemberId, }; logger.warn( - `task.memberId mismatched with winner memberId. task.memberId is updated to ${winnerMemberId}` + `task.memberId mismatched with winner memberId. task.memberId is updated to ${winnerMemberId}`, ); } else { logger.info(`task ${challengeId} has no winner set yet.`); @@ -2976,19 +2974,19 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { if (!_.isEmpty(_.get(data, "task.memberId"))) { const registrants = _.filter( challengeResources, - (r) => r.roleId === config.SUBMITTER_ROLE_ID + (r) => r.roleId === config.SUBMITTER_ROLE_ID, ); if ( !_.find( registrants, - (r) => _.toString(r.memberId) === _.toString(_.get(data, "task.memberId")) + (r) => _.toString(r.memberId) === _.toString(_.get(data, "task.memberId")), ) ) { throw new errors.BadRequestError( `Member ${_.get( data, - "task.memberId" - )} is not a submitter resource of challenge ${challengeId}` + "task.memberId", + )} is not a submitter resource of challenge ${challengeId}`, ); } } @@ -3031,7 +3029,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { // Validate all referenced Phase ids exist const uniquePhaseIds = _.uniq( - data.reviewers.filter((r) => r && r.phaseId).map((r) => r.phaseId) + data.reviewers.filter((r) => r && r.phaseId).map((r) => r.phaseId), ); if (uniquePhaseIds.length > 0) { const foundPhases = await prisma.phase.findMany({ where: { id: { in: uniquePhaseIds } } }); @@ -3039,7 +3037,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { const missing = uniquePhaseIds.filter((id) => !foundIds.has(id)); if (missing.length > 0) { throw new errors.BadRequestError( - `Invalid reviewer.phaseId value(s); Phase not found: ${missing.join(", ")}` + `Invalid reviewer.phaseId value(s); Phase not found: ${missing.join(", ")}`, ); } } @@ -3069,8 +3067,8 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { const effectiveReviewers = Array.isArray(data.reviewers) ? data.reviewers : Array.isArray(challenge.reviewers) - ? challenge.reviewers - : []; + ? challenge.reviewers + : []; const reviewersMissingFields = []; effectiveReviewers.forEach((reviewer, index) => { @@ -3090,24 +3088,27 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { if (reviewersMissingFields.length > 0) { throw new errors.BadRequestError( `Cannot activate challenge; reviewers are missing required fields: ${reviewersMissingFields.join( - "; " - )}` + "; ", + )}`, ); } const reviewerPhaseIds = new Set( effectiveReviewers .filter((reviewer) => reviewer && reviewer.phaseId) - .map((reviewer) => String(reviewer.phaseId)) + .map((reviewer) => String(reviewer.phaseId)), ); if (reviewerPhaseIds.size === 0) { throw new errors.BadRequestError( - "Cannot activate a challenge without at least one reviewer configured" + "Cannot activate a challenge without at least one reviewer configured", ); } - const normalizePhaseName = (name) => String(name || "").trim().toLowerCase(); + const normalizePhaseName = (name) => + String(name || "") + .trim() + .toLowerCase(); const effectivePhases = (Array.isArray(phasesForUpdate) && phasesForUpdate.length > 0 ? phasesForUpdate @@ -3131,8 +3132,8 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { if (missingPhaseNames.size > 0) { throw new errors.BadRequestError( `Cannot activate challenge; missing reviewers for phase(s): ${Array.from( - missingPhaseNames - ).join(", ")}` + missingPhaseNames, + ).join(", ")}`, ); } } @@ -3140,7 +3141,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { // convert data to prisma models const updateData = prismaHelper.convertChallengeSchemaToPrisma( currentUser, - _.omit(data, ["cancelReason"]) + _.omit(data, ["cancelReason"]), ); updateData.updatedBy = _.toString(currentUser.userId); // reset createdBy @@ -3156,7 +3157,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { challengeId, phasesForUpdate, auditUserId, - originalChallengePhases + originalChallengePhases, ); } // drop nested data if updated @@ -3211,9 +3212,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { logger.warn(`Failed to generate payments for Task challenge ${challengeId}`); } } catch (err) { - logger.error( - `Error generating payments for Task challenge ${challengeId}: ${err.message}` - ); + logger.error(`Error generating payments for Task challenge ${challengeId}: ${err.message}`); } } // Re-fetch the challenge outside the transaction to ensure we publish @@ -3240,7 +3239,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { { handle: creator.handle, workItemName: updatedChallenge.name, - } + }, ); } if (sendActivationEmail) { @@ -3251,7 +3250,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { handle: creator.handle, workItemName: updatedChallenge.name, workItemUrl: `${config.SELF_SERVICE_APP_URL}/work-items/${updatedChallenge.id}`, - } + }, ); } if (sendCompletedEmail) { @@ -3262,7 +3261,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { handle: creator.handle, workItemName: updatedChallenge.name, workItemUrl: `${config.SELF_SERVICE_APP_URL}/work-items/${updatedChallenge.id}?tab=solutions`, - } + }, ); } if (sendRejectedEmail || data.cancelReason) { @@ -3273,8 +3272,27 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { { handle: creator.handle, workItemName: updatedChallenge.name, - } + }, + ); + } + } + + // Trigger challenge review context generation for AI review if applicable + const currentStatus = updatedChallenge.status; + const isActive = currentStatus === ChallengeStatusEnum.ACTIVE; + if (shouldGenerateChallengeReviewContext(updatedChallenge)) { + if (isStatusChangingToActive) { + // Trigger 1: Challenge is being activated + logger.info( + `updateChallenge(${challengeId}): triggering review context generation on activation`, + ); + triggerChallengeReviewContextGeneration(challengeId); + } else if (isActive && !isStatusChangingToActive) { + // Trigger 2: Challenge updated while in ACTIVE (and not just activated) + logger.info( + `updateChallenge(${challengeId}): triggering review context generation on update (status: ${currentStatus})`, ); + triggerChallengeReviewContextGeneration(challengeId); } } @@ -3341,7 +3359,7 @@ updateChallenge.schema = { name: Joi.string().required(), value: Joi.required(), }) - .unknown(true) + .unknown(true), ) .unique((a, b) => a.name === b.name), timelineTemplateId: Joi.string().optional(), // changing this to update migrated challenges @@ -3361,11 +3379,11 @@ updateChallenge.schema = { name: Joi.string(), value: Joi.number().integer().min(0), }) - .optional() + .optional(), ) .optional(), }) - .unknown(true) + .unknown(true), ) .min(1) .optional(), @@ -3377,18 +3395,20 @@ updateChallenge.schema = { key: Joi.string(), }) .unknown(true) - .optional() + .optional(), ), discussions: Joi.array() .items( Joi.object().keys({ id: Joi.optionalId(), name: Joi.string().required(), - type: Joi.string().required().valid(..._.values(DiscussionTypeEnum)), + type: Joi.string() + .required() + .valid(..._.values(DiscussionTypeEnum)), provider: Joi.string().required(), url: Joi.string(), options: Joi.array().items(Joi.object()), - }) + }), ) .optional(), reviewers: Joi.array() @@ -3405,7 +3425,9 @@ updateChallenge.schema = { phaseId: Joi.id().required(), type: Joi.when("isMemberReview", { is: true, - then: Joi.string().valid(..._.values(ReviewOpportunityTypeEnum)).insensitive(), + then: Joi.string() + .valid(..._.values(ReviewOpportunityTypeEnum)) + .insensitive(), otherwise: Joi.forbidden(), }), aiWorkflowId: Joi.when("isMemberReview", { @@ -3416,7 +3438,7 @@ updateChallenge.schema = { fixedAmount: Joi.number().min(0).optional().allow(null), baseCoefficient: Joi.number().min(0).max(1).optional().allow(null), incrementalCoefficient: Joi.number().min(0).max(1).optional().allow(null), - }) + }), ) .optional(), startDate: Joi.date().iso(), @@ -3424,7 +3446,9 @@ updateChallenge.schema = { .items( Joi.object() .keys({ - type: Joi.string().valid(..._.values(PrizeSetTypeEnum)).required(), + type: Joi.string() + .valid(..._.values(PrizeSetTypeEnum)) + .required(), description: Joi.string(), prizes: Joi.array() .items( @@ -3432,12 +3456,12 @@ updateChallenge.schema = { description: Joi.string(), type: Joi.string().required(), value: Joi.number().min(0).required(), - }) + }), ) .min(1) .required(), }) - .unknown(true) + .unknown(true), ) .min(1), tags: Joi.array().items(Joi.string()), // tag names @@ -3448,7 +3472,9 @@ updateChallenge.schema = { allowedRegistrants: Joi.array().items(Joi.string().trim().lowercase()).optional(), }) .optional(), - status: Joi.string().valid(..._.values(ChallengeStatusEnum)).insensitive(), + status: Joi.string() + .valid(..._.values(ChallengeStatusEnum)) + .insensitive(), attachments: Joi.array().items( Joi.object().keys({ id: Joi.id(), @@ -3457,7 +3483,7 @@ updateChallenge.schema = { url: Joi.string().uri().required(), fileSize: Joi.fileSize(), description: Joi.string(), - }) + }), ), groups: Joi.array().items(Joi.optionalId()).unique(), // gitRepoURLs: Joi.array().items(Joi.string().uri()), @@ -3470,7 +3496,7 @@ updateChallenge.schema = { placement: Joi.number().integer().positive().required(), type: Joi.string().valid(..._.values(PrizeSetTypeEnum)), }) - .unknown(true) + .unknown(true), ) .optional(), checkpointWinners: Joi.array() @@ -3482,14 +3508,14 @@ updateChallenge.schema = { placement: Joi.number().integer().positive().required(), type: Joi.string().valid(..._.values(PrizeSetTypeEnum)), }) - .unknown(true) + .unknown(true), ) .optional(), terms: Joi.array().items( Joi.object().keys({ id: Joi.id(), roleId: Joi.id(), - }) + }), ), skills: Joi.array() .items( @@ -3497,7 +3523,7 @@ updateChallenge.schema = { .keys({ id: Joi.id(), }) - .unknown(true) + .unknown(true), ) .optional(), overview: Joi.any().forbidden(), @@ -3522,7 +3548,7 @@ async function sendNotifications(currentUser, challengeId) { handle: creator.handle, workItemName: challenge.name, workItemUrl: `${config.SELF_SERVICE_APP_URL}/work-items/${challenge.id}?tab=solutions`, - } + }, ); return { type: constants.SelfServiceNotificationTypes.WORK_COMPLETED }; } @@ -3581,8 +3607,8 @@ async function ensureScorecardChangeDoesNotConflict({ new Set( originalList .map((r) => (!_.isNil(r) && !_.isNil(r.scorecardId) ? String(r.scorecardId) : null)) - .filter((scorecardId) => !_.isNil(scorecardId)) - ) + .filter((scorecardId) => !_.isNil(scorecardId)), + ), ); if (originalScorecards.length === 0) { @@ -3593,12 +3619,12 @@ async function ensureScorecardChangeDoesNotConflict({ new Set( updatedList .map((r) => (!_.isNil(r) && !_.isNil(r.scorecardId) ? String(r.scorecardId) : null)) - .filter((scorecardId) => !_.isNil(scorecardId)) - ) + .filter((scorecardId) => !_.isNil(scorecardId)), + ), ); const removedScorecards = originalScorecards.filter( - (scorecardId) => !updatedScorecards.includes(scorecardId) + (scorecardId) => !updatedScorecards.includes(scorecardId), ); if (removedScorecards.length > 0) { @@ -3624,7 +3650,7 @@ async function ensureScorecardChangeDoesNotConflict({ if (!config.REVIEW_DB_URL) { logger.debug( - `Skipping scorecard change guard for challenge ${challengeId} because REVIEW_DB_URL is not configured` + `Skipping scorecard change guard for challenge ${challengeId} because REVIEW_DB_URL is not configured`, ); return; } @@ -3634,19 +3660,17 @@ async function ensureScorecardChangeDoesNotConflict({ reviewClient = getReviewClient(); } catch (error) { logger.warn( - `Unable to initialize review Prisma client for challenge ${challengeId}: ${error.message}` + `Unable to initialize review Prisma client for challenge ${challengeId}: ${error.message}`, ); throw new errors.ServiceUnavailableError( - "Cannot change the scorecard because review status could not be verified. Please try again later." + "Cannot change the scorecard because review status could not be verified. Please try again later.", ); } if (!reviewClient || typeof reviewClient.$queryRaw !== "function") { - logger.warn( - `Prisma review client does not support raw queries for challenge ${challengeId}` - ); + logger.warn(`Prisma review client does not support raw queries for challenge ${challengeId}`); throw new errors.ServiceUnavailableError( - "Cannot change the scorecard because review status could not be verified. Please try again later." + "Cannot change the scorecard because review status could not be verified. Please try again later.", ); } @@ -3671,7 +3695,7 @@ async function ensureScorecardChangeDoesNotConflict({ } const reviewPhaseKeysToCheck = Array.from(removedScorecardsByPhase.keys()).filter((phaseKey) => - openReviewPhaseNameByKey.has(phaseKey) + openReviewPhaseNameByKey.has(phaseKey), ); const reviewPhaseKeysSet = new Set(removedScorecardsByPhase.keys()); @@ -3695,9 +3719,7 @@ async function ensureScorecardChangeDoesNotConflict({ if (challengePhaseIdList.length > 0) { const reviewSchema = String(config.REVIEW_DB_SCHEMA || "").trim(); const reviewTableIdentifier = Prisma.raw( - reviewSchema - ? `"${reviewSchema.replace(/"/g, '""')}"."review"` - : '"review"' + reviewSchema ? `"${reviewSchema.replace(/"/g, '""')}"."review"` : '"review"', ); let blockingReviewRows = []; @@ -3711,10 +3733,10 @@ async function ensureScorecardChangeDoesNotConflict({ `; } catch (error) { logger.warn( - `Failed to query the review database for challenge ${challengeId}: ${error.message}` + `Failed to query the review database for challenge ${challengeId}: ${error.message}`, ); throw new errors.ServiceUnavailableError( - "Cannot change the scorecard because review status could not be verified. Please try again later." + "Cannot change the scorecard because review status could not be verified. Please try again later.", ); } @@ -3735,7 +3757,7 @@ async function ensureScorecardChangeDoesNotConflict({ const scorecardKey = `${phaseId}|${scorecardId}`; blockingCountByPhaseAndScorecard.set( scorecardKey, - (blockingCountByPhaseAndScorecard.get(scorecardKey) || 0) + countValue + (blockingCountByPhaseAndScorecard.get(scorecardKey) || 0) + countValue, ); } } @@ -3746,7 +3768,7 @@ async function ensureScorecardChangeDoesNotConflict({ const challengePhaseIds = Array.from(phaseIdToChallengePhaseIds.get(phaseKey) || []); if (challengePhaseIds.length === 0) { logger.debug( - `Skipping active phase scorecard guard for challenge ${challengeId} phase ${phaseKey} because no matching challenge phases were found` + `Skipping active phase scorecard guard for challenge ${challengeId} phase ${phaseKey} because no matching challenge phases were found`, ); continue; } @@ -3759,7 +3781,7 @@ async function ensureScorecardChangeDoesNotConflict({ if (activePhaseReviewCount > 0) { const phaseName = openReviewPhaseNameByKey.get(phaseKey) || "phase"; throw new BadRequestError( - `Cannot change the scorecard for phase '${phaseName}' because reviews are already in progress or completed` + `Cannot change the scorecard for phase '${phaseName}' because reviews are already in progress or completed`, ); } } @@ -3770,7 +3792,7 @@ async function ensureScorecardChangeDoesNotConflict({ if (challengePhaseIds.length === 0) { logger.debug( - `Skipping scorecard change guard for challenge ${challengeId} phase ${phaseKey} because no matching challenge phases were found` + `Skipping scorecard change guard for challenge ${challengeId} phase ${phaseKey} because no matching challenge phases were found`, ); continue; } @@ -3789,7 +3811,7 @@ async function ensureScorecardChangeDoesNotConflict({ if (conflictingReviews > 0) { throw new BadRequestError( - "Can't change the scorecard at this time because at least one review has already started with the old scorecard" + "Can't change the scorecard at this time because at least one review has already started with the old scorecard", ); } } @@ -3862,7 +3884,7 @@ function sanitizeChallenge(challenge) { } if (challenge.phases) { sanitized.phases = _.map(challenge.phases, (phase) => - _.pick(phase, ["phaseId", "duration", "scheduledStartDate", "constraints"]) + _.pick(phase, ["phaseId", "duration", "scheduledStartDate", "constraints"]), ); } if (challenge.prizeSets) { @@ -3884,7 +3906,7 @@ function sanitizeChallenge(challenge) { "shouldOpenOpportunity", "type", "aiWorkflowId", - ]) + ]), ); } if (challenge.events) { @@ -3892,12 +3914,12 @@ function sanitizeChallenge(challenge) { } if (challenge.winners) { sanitized.winners = _.map(challenge.winners, (winner) => - _.pick(winner, ["userId", "handle", "placement", "type"]) + _.pick(winner, ["userId", "handle", "placement", "type"]), ); } if (challenge.checkpointWinners) { sanitized.checkpointWinners = _.map(challenge.checkpointWinners, (winner) => - _.pick(winner, ["userId", "handle", "placement", "type"]) + _.pick(winner, ["userId", "handle", "placement", "type"]), ); } if (challenge.discussions) { @@ -3912,14 +3934,20 @@ function sanitizeChallenge(challenge) { } if (challenge.attachments) { sanitized.attachments = _.map(challenge.attachments, (attachment) => - _.pick(attachment, ["id", "name", "url", "fileSize", "description", "challengeId"]) + _.pick(attachment, ["id", "name", "url", "fileSize", "description", "challengeId"]), ); } return sanitized; } -async function syncChallengePhases(tx, challengeId, updatedPhases, auditUserId, originalPhases = []) { +async function syncChallengePhases( + tx, + challengeId, + updatedPhases, + auditUserId, + originalPhases = [], +) { if (!Array.isArray(updatedPhases)) { return; } @@ -4070,7 +4098,7 @@ async function deleteChallenge(currentUser, challengeId) { }); if (_.isNil(challenge) || _.isNil(challenge.id)) { throw new errors.NotFoundError( - `Challenge with id: ${challengeId} doesn't exist or is not in New status` + `Challenge with id: ${challengeId} doesn't exist or is not in New status`, ); } // ensure user can modify challenge @@ -4095,7 +4123,7 @@ async function advancePhase(currentUser, challengeId, data) { const machineOrAdmin = currentUser && (currentUser.isMachine || hasAdminRole(currentUser)); if (!machineOrAdmin) { throw new errors.ForbiddenError( - `Admin role or an M2M token is required to advance the challenge phase.` + `Admin role or an M2M token is required to advance the challenge phase.`, ); } const challenge = await prisma.challenge.findUnique({ @@ -4122,7 +4150,7 @@ async function advancePhase(currentUser, challengeId, data) { challenge.legacyId, challenge.phases, data.operation, - data.phase + data.phase, ); const auditFields = { @@ -4138,7 +4166,7 @@ async function advancePhase(currentUser, challengeId, data) { prismaHelper.convertChallengePhaseSchema( { phases: phaseAdvancerResult.updatedPhases }, challengeData, - auditFields + auditFields, ); // Persist phases based on the raw updated phases array from PhaseAdvancer const newPhases = phaseAdvancerResult.updatedPhases; @@ -4208,7 +4236,7 @@ async function advancePhase(currentUser, challengeId, data) { } } catch (e) { logger.error( - `Failed to upsert phase ${p.name} (${p.phaseId}) for ${challengeId}: ${e.message}` + `Failed to upsert phase ${p.name} (${p.phaseId}) for ${challengeId}: ${e.message}`, ); throw e; } @@ -4233,7 +4261,7 @@ async function closeMarathonMatch(currentUser, challengeId) { const machineOrAdmin = currentUser && (currentUser.isMachine || hasAdminRole(currentUser)); if (!machineOrAdmin) { throw new errors.ForbiddenError( - `Admin role or an M2M token is required to close the marathon match.` + `Admin role or an M2M token is required to close the marathon match.`, ); } @@ -4248,24 +4276,26 @@ async function closeMarathonMatch(currentUser, challengeId) { if (!challenge.type || challenge.type.name !== "Marathon Match") { throw new errors.BadRequestError( - `Challenge with id: ${challengeId} is not a Marathon Match challenge.` + `Challenge with id: ${challengeId} is not a Marathon Match challenge.`, ); } const reviewSummations = await helper.getReviewSummations(challengeId); - const finalSummations = (reviewSummations || []).filter((summation) => summation.isFinal === true); + const finalSummations = (reviewSummations || []).filter( + (summation) => summation.isFinal === true, + ); const orderedSummations = _.orderBy( finalSummations, ["aggregateScore", "createdAt"], - ["desc", "asc"] + ["desc", "asc"], ); const winners = orderedSummations.map((summation, index) => { const parsedUserId = Number(summation.submitterId); if (!Number.isFinite(parsedUserId) || !Number.isInteger(parsedUserId)) { throw new errors.BadRequestError( - `Invalid submitterId ${summation.submitterId} for review summation winner` + `Invalid submitterId ${summation.submitterId} for review summation winner`, ); } @@ -4280,19 +4310,19 @@ async function closeMarathonMatch(currentUser, challengeId) { if (winners.length > 0) { const challengeResources = await helper.getChallengeResources(challengeId); const submitterResources = challengeResources.filter( - (resource) => resource.roleId === config.SUBMITTER_ROLE_ID + (resource) => resource.roleId === config.SUBMITTER_ROLE_ID, ); const missingResources = winners.filter( (winner) => !submitterResources.some( - (resource) => _.toString(resource.memberId) === _.toString(winner.userId) - ) + (resource) => _.toString(resource.memberId) === _.toString(winner.userId), + ), ); if (missingResources.length > 0) { throw new errors.BadRequestError( `Submitter resources are required to close Marathon Match challenge ${challengeId}. Missing submitter resources for userIds: ${missingResources .map((winner) => winner.userId) - .join(", ")}` + .join(", ")}`, ); } } @@ -4312,7 +4342,7 @@ async function closeMarathonMatch(currentUser, challengeId) { phases: updatedPhases, status: ChallengeStatusEnum.COMPLETED, }, - { emitEvent: true } + { emitEvent: true }, ); return updatedChallenge; @@ -4354,7 +4384,7 @@ async function indexChallengeAndPostToKafka(updatedChallenge, track, type) { // post bus event logger.debug( - `Post Bus Event: ${constants.Topics.ChallengeUpdated} ${JSON.stringify(updatedChallenge)}` + `Post Bus Event: ${constants.Topics.ChallengeUpdated} ${JSON.stringify(updatedChallenge)}`, ); prismaHelper.convertModelToResponse(updatedChallenge); From 3d427f7efabdaf0770f8255bc889841302c9edc7 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Fri, 20 Mar 2026 09:43:30 +0200 Subject: [PATCH 33/43] ci: on dev --- .circleci/config.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4cceaad..32f96d7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -90,9 +90,8 @@ workflows: branches: only: - develop - - security - - PM-3351 - PM-4318_move-to-next-phase-when-manually-closing + - review-context - "build-qa": context: org-global From 919e3de9e8d4e8b4da411e0195bcdd2041262379 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Fri, 20 Mar 2026 11:42:50 +0200 Subject: [PATCH 34/43] fit PUT to update context --- src/common/challenge-review-context-helper.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/common/challenge-review-context-helper.js b/src/common/challenge-review-context-helper.js index 2437aa5..78803f8 100644 --- a/src/common/challenge-review-context-helper.js +++ b/src/common/challenge-review-context-helper.js @@ -81,7 +81,9 @@ async function cancelWorkflowRun(runId, message) { try { token = await m2mHelper.getM2MToken(); } catch (tokenErr) { - logger.error(`[ChallengeReviewContextHelper] Failed to get M2M token for cancel: ${tokenErr.message}`); + logger.error( + `[ChallengeReviewContextHelper] Failed to get M2M token for cancel: ${tokenErr.message}`, + ); return; } @@ -249,6 +251,7 @@ async function runReviewContextGenerationAsync(challengeId) { try { if (existingContext) { const contextPutUrl = `${reviewsApiUrl}/v6/ai-review/context/${challengeId}`; + delete contextPayload.challengeId; // challengeId is in URL for update, remove from body await axios.put(contextPutUrl, contextPayload, { headers: { ...authHeader, "Content-Type": "application/json" }, timeout: 30000, From b6f8012b6a5a498a6fde34805e9d12be2e669cf9 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Fri, 20 Mar 2026 12:29:13 +0200 Subject: [PATCH 35/43] Fixed the race condition --- src/common/challenge-review-context-helper.js | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/common/challenge-review-context-helper.js b/src/common/challenge-review-context-helper.js index 78803f8..a61abbe 100644 --- a/src/common/challenge-review-context-helper.js +++ b/src/common/challenge-review-context-helper.js @@ -9,6 +9,7 @@ const axios = require("axios"); const logger = require("./logger"); const m2mHelper = require("./m2m-helper"); const { + isGenerationInProgress, getRunId, markGenerationStarted, setRunId, @@ -40,17 +41,23 @@ function shouldGenerateChallengeReviewContext(challenge) { * @param {string} challengeId - The challenge ID */ function triggerChallengeReviewContextGeneration(challengeId) { - const existingRunId = getRunId(challengeId); - - if (existingRunId) { - logger.info( - `[ChallengeReviewContextHelper] Cancelling existing run ${existingRunId} for challenge ${challengeId}`, - ); - cancelWorkflowRun(existingRunId, "Challenge updated, regenerating context").catch((err) => { - logger.warn( - `[ChallengeReviewContextHelper] Failed to cancel run ${existingRunId}: ${err.message}`, + if (isGenerationInProgress(challengeId)) { + const existingRunId = getRunId(challengeId); + if (existingRunId) { + logger.info( + `[ChallengeReviewContextHelper] Cancelling existing run ${existingRunId} for challenge ${challengeId}`, ); - }); + cancelWorkflowRun(existingRunId, "Challenge updated, regenerating context").catch((err) => { + logger.warn( + `[ChallengeReviewContextHelper] Failed to cancel run ${existingRunId}: ${err.message}`, + ); + }); + } else { + logger.info( + `[ChallengeReviewContextHelper] Generation already in progress for challenge ${challengeId}, skipping duplicate trigger`, + ); + return; + } clearGeneration(challengeId); } From 0da32b4a6b220c3894dab1a12d661aeb37f16ec8 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 23 Mar 2026 11:16:37 +0200 Subject: [PATCH 36/43] debug review context saving --- src/common/challenge-review-context-helper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/challenge-review-context-helper.js b/src/common/challenge-review-context-helper.js index a61abbe..8060730 100644 --- a/src/common/challenge-review-context-helper.js +++ b/src/common/challenge-review-context-helper.js @@ -274,7 +274,7 @@ async function runReviewContextGenerationAsync(challengeId) { } } catch (saveErr) { logger.error( - `[ChallengeReviewContextHelper] Failed to save context for challenge ${challengeId}: ${saveErr.message}`, + `[ChallengeReviewContextHelper] Failed to save context for challenge ${challengeId}: ${JSON.stringify(saveErr, null, 2)}`, ); clearGeneration(challengeId); return; From bd97d0383631e136751f773a1dc437817035e9f0 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 23 Mar 2026 15:14:10 +0200 Subject: [PATCH 37/43] fix missing status when generating review context --- src/common/challenge-review-context-helper.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/common/challenge-review-context-helper.js b/src/common/challenge-review-context-helper.js index 8060730..24a04aa 100644 --- a/src/common/challenge-review-context-helper.js +++ b/src/common/challenge-review-context-helper.js @@ -18,6 +18,11 @@ const { const WORKFLOW_POLL_INTERVAL_MS = 10000; const WORKFLOW_POLL_TIMEOUT_MS = 15 * 60 * 1000; // 15 minutes max wait +const REVIEW_CONTEXT_STATUS = { + AI_GENERATED: "AI_GENERATED", + HUMAN_APPROVED: "HUMAN_APPROVED", + HUMAN_REJECTED: "HUMAN_REJECTED", +}; /** * Check if a challenge has AI Review Config that requires context generation. @@ -253,6 +258,7 @@ async function runReviewContextGenerationAsync(challengeId) { const contextPayload = { challengeId, context: workflowResult, + status: REVIEW_CONTEXT_STATUS.AI_GENERATED, }; try { From 2e9c47da1803ea4e3f9dd1d6f8b695b7a72f2cd5 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 23 Mar 2026 16:42:05 +0200 Subject: [PATCH 38/43] clean up from review context generation --- src/common/challenge-review-context-helper.js | 302 ------------------ src/common/review-context-generation-guard.js | 82 ----- src/services/ChallengeService.js | 23 -- 3 files changed, 407 deletions(-) delete mode 100644 src/common/challenge-review-context-helper.js delete mode 100644 src/common/review-context-generation-guard.js diff --git a/src/common/challenge-review-context-helper.js b/src/common/challenge-review-context-helper.js deleted file mode 100644 index 24a04aa..0000000 --- a/src/common/challenge-review-context-helper.js +++ /dev/null @@ -1,302 +0,0 @@ -/** - * Helper module for triggering Challenge Review Context generation - * via tc-ai-api workflow and saving results to review-api. - */ - -const _ = require("lodash"); -const config = require("config"); -const axios = require("axios"); -const logger = require("./logger"); -const m2mHelper = require("./m2m-helper"); -const { - isGenerationInProgress, - getRunId, - markGenerationStarted, - setRunId, - clearGeneration, -} = require("./review-context-generation-guard"); - -const WORKFLOW_POLL_INTERVAL_MS = 10000; -const WORKFLOW_POLL_TIMEOUT_MS = 15 * 60 * 1000; // 15 minutes max wait -const REVIEW_CONTEXT_STATUS = { - AI_GENERATED: "AI_GENERATED", - HUMAN_APPROVED: "HUMAN_APPROVED", - HUMAN_REJECTED: "HUMAN_REJECTED", -}; - -/** - * Check if a challenge has AI Review Config that requires context generation. - * @param {Object} challenge - The challenge object with reviewers - * @returns {boolean} - True if challenge has AI reviewers with aiWorkflowId - */ -function shouldGenerateChallengeReviewContext(challenge) { - const reviewers = _.get(challenge, "reviewers", []); - if (!Array.isArray(reviewers) || reviewers.length === 0) { - return false; - } - return reviewers.some( - (reviewer) => reviewer && !reviewer.isMemberReview && reviewer.aiWorkflowId, - ); -} - -/** - * Trigger challenge context generation in the background (fire-and-forget). - * If a previous run is in progress, it will be cancelled first. - * This function returns immediately and runs the actual work asynchronously. - * @param {string} challengeId - The challenge ID - */ -function triggerChallengeReviewContextGeneration(challengeId) { - if (isGenerationInProgress(challengeId)) { - const existingRunId = getRunId(challengeId); - if (existingRunId) { - logger.info( - `[ChallengeReviewContextHelper] Cancelling existing run ${existingRunId} for challenge ${challengeId}`, - ); - cancelWorkflowRun(existingRunId, "Challenge updated, regenerating context").catch((err) => { - logger.warn( - `[ChallengeReviewContextHelper] Failed to cancel run ${existingRunId}: ${err.message}`, - ); - }); - } else { - logger.info( - `[ChallengeReviewContextHelper] Generation already in progress for challenge ${challengeId}, skipping duplicate trigger`, - ); - return; - } - clearGeneration(challengeId); - } - - markGenerationStarted(challengeId); - logger.info( - `[ChallengeReviewContextHelper] Triggering context generation for challenge ${challengeId}`, - ); - - runReviewContextGenerationAsync(challengeId).catch((err) => { - logger.error( - `[ChallengeReviewContextHelper] Context generation failed for challenge ${challengeId}: ${err.message}`, - err, - ); - clearGeneration(challengeId); - }); -} - -/** - * Cancel a workflow run via tc-ai-api. - * @param {string} runId - The workflow run ID to cancel - * @param {string} message - Cancellation reason message - */ -async function cancelWorkflowRun(runId, message) { - const tcAiApiUrl = _.trimEnd(config.TC_AI_API_URL, "/"); - const workflowId = "challenge-context"; - - let token; - try { - token = await m2mHelper.getM2MToken(); - } catch (tokenErr) { - logger.error( - `[ChallengeReviewContextHelper] Failed to get M2M token for cancel: ${tokenErr.message}`, - ); - return; - } - - const cancelUrl = `${tcAiApiUrl}/workflows/${workflowId}/runs/${runId}/cancel`; - await axios.post( - cancelUrl, - { message }, - { - headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json" }, - timeout: 15000, - }, - ); - logger.info(`[ChallengeReviewContextHelper] Cancelled workflow run ${runId}`); -} - -/** - * Internal async function that performs the actual context generation workflow. - * @param {string} challengeId - The challenge ID - */ -async function runReviewContextGenerationAsync(challengeId) { - const tcAiApiUrl = _.trimEnd(config.TC_AI_API_URL, "/"); - const reviewsApiUrl = _.trimEnd(config.REVIEWS_API_URL, "/"); - - let token; - try { - token = await m2mHelper.getM2MToken(); - } catch (tokenErr) { - logger.error( - `[ChallengeReviewContextHelper] Failed to get M2M token for challenge ${challengeId}: ${tokenErr.message}`, - ); - clearGeneration(challengeId); - return; - } - - const authHeader = { Authorization: `Bearer ${token}` }; - const workflowId = "challenge-context"; - - // Step 1: Create the workflow run - const createRunUrl = `${tcAiApiUrl}/workflows/${workflowId}/create-run`; - let runId; - - try { - logger.debug( - `[ChallengeReviewContextHelper] Creating workflow run at ${createRunUrl} for challenge ${challengeId}`, - ); - const createResponse = await axios.post( - createRunUrl, - {}, - { - headers: { ...authHeader, "Content-Type": "application/json" }, - timeout: 30000, - }, - ); - runId = _.get(createResponse, "data.runId"); - if (!runId) { - throw new Error("No runId returned from workflow creation"); - } - setRunId(challengeId, runId); - logger.debug( - `[ChallengeReviewContextHelper] Created run ${runId} for challenge ${challengeId}`, - ); - } catch (createErr) { - logger.error( - `[ChallengeReviewContextHelper] Failed to create workflow run for challenge ${challengeId}: ${createErr.message}`, - ); - clearGeneration(challengeId); - return; - } - - // Step 2: Start the run with input data - const startRunUrl = `${tcAiApiUrl}/workflows/${workflowId}/start?runId=${runId}`; - - try { - logger.debug( - `[ChallengeReviewContextHelper] Starting workflow run ${runId} for challenge ${challengeId}`, - ); - await axios.post( - startRunUrl, - { inputData: { challengeId } }, - { headers: { ...authHeader, "Content-Type": "application/json" }, timeout: 30000 }, - ); - logger.info( - `[ChallengeReviewContextHelper] Workflow started for challenge ${challengeId}, runId: ${runId}`, - ); - } catch (startErr) { - logger.error( - `[ChallengeReviewContextHelper] Failed to start workflow run for challenge ${challengeId}: ${startErr.message}`, - ); - clearGeneration(challengeId); - return; - } - - // Step 3: Poll for workflow completion - const workflowStatusUrl = `${tcAiApiUrl}/workflows/${workflowId}/runs/${runId}`; - const startTime = Date.now(); - let workflowResult = null; - - while (Date.now() - startTime < WORKFLOW_POLL_TIMEOUT_MS) { - try { - await sleep(WORKFLOW_POLL_INTERVAL_MS); - const statusResponse = await axios.get(workflowStatusUrl, { - headers: authHeader, - timeout: 15000, - }); - const result = _.get(statusResponse, "data", {}); - const status = result.status; - logger.debug(`[ChallengeReviewContextHelper] Workflow ${runId} status: ${status}`); - - if (status === "success") { - workflowResult = result.result; - break; - } else if (status === "failed") { - const errorMsg = - _.get(result, "error.message") || _.get(result, "error") || "Workflow execution failed"; - throw new Error(`Workflow failed: ${errorMsg}`); - } - } catch (pollErr) { - if (pollErr.message.includes("Workflow failed")) { - throw pollErr; - } - // For network errors, log and continue polling - logger.warn( - `[ChallengeReviewContextHelper] Polling error for workflow ${runId}: ${pollErr.message}`, - ); - } - } - - if (!workflowResult) { - logger.error( - `[ChallengeReviewContextHelper] Workflow ${runId} timed out or returned no result for challenge ${challengeId}`, - ); - clearGeneration(challengeId); - return; - } - - logger.info( - `[ChallengeReviewContextHelper] Workflow completed for challenge ${challengeId}, saving context`, - ); - - // Step 3: Check if context already exists - const contextGetUrl = `${reviewsApiUrl}/v6/ai-review/context/${challengeId}`; - let existingContext = null; - - try { - const getResponse = await axios.get(contextGetUrl, { - headers: authHeader, - timeout: 15000, - validateStatus: (status) => status < 500, - }); - if (getResponse.status === 200 && getResponse.data) { - existingContext = getResponse.data; - } - } catch (getErr) { - logger.debug( - `[ChallengeReviewContextHelper] No existing context found for challenge ${challengeId}`, - ); - } - - // Step 4: Save or update context in review-api - const contextPayload = { - challengeId, - context: workflowResult, - status: REVIEW_CONTEXT_STATUS.AI_GENERATED, - }; - - try { - if (existingContext) { - const contextPutUrl = `${reviewsApiUrl}/v6/ai-review/context/${challengeId}`; - delete contextPayload.challengeId; // challengeId is in URL for update, remove from body - await axios.put(contextPutUrl, contextPayload, { - headers: { ...authHeader, "Content-Type": "application/json" }, - timeout: 30000, - }); - logger.info(`[ChallengeReviewContextHelper] Updated context for challenge ${challengeId}`); - } else { - const contextPostUrl = `${reviewsApiUrl}/v6/ai-review/context`; - await axios.post(contextPostUrl, contextPayload, { - headers: { ...authHeader, "Content-Type": "application/json" }, - timeout: 30000, - }); - logger.info(`[ChallengeReviewContextHelper] Created context for challenge ${challengeId}`); - } - } catch (saveErr) { - logger.error( - `[ChallengeReviewContextHelper] Failed to save context for challenge ${challengeId}: ${JSON.stringify(saveErr, null, 2)}`, - ); - clearGeneration(challengeId); - return; - } - - clearGeneration(challengeId); - logger.info( - `[ChallengeReviewContextHelper] Context generation complete for challenge ${challengeId}`, - ); -} - -function sleep(ms) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - -module.exports = { - shouldGenerateChallengeReviewContext, - triggerChallengeReviewContextGeneration, -}; diff --git a/src/common/review-context-generation-guard.js b/src/common/review-context-generation-guard.js deleted file mode 100644 index b0aecf1..0000000 --- a/src/common/review-context-generation-guard.js +++ /dev/null @@ -1,82 +0,0 @@ -/** - * In-memory guard to prevent duplicate context generation triggers. - * Tracks challengeId -> { timestamp, runId } of ongoing context generation. - * Entries auto-expire after EXPIRY_MS to handle failed processes. - */ - -const EXPIRY_MS = 15 * 60 * 1000; // 15 minutes - -const generationCache = new Map(); - -/** - * Check if context generation is currently in progress for a challenge. - * @param {string} challengeId - The challenge ID - * @returns {boolean} - True if generation is in progress (started within EXPIRY_MS) - */ -function isGenerationInProgress(challengeId) { - const entry = generationCache.get(challengeId); - if (!entry) { - return false; - } - const elapsed = Date.now() - entry.timestamp; - if (elapsed > EXPIRY_MS) { - generationCache.delete(challengeId); - return false; - } - return true; -} - -/** - * Get the current runId for a challenge's in-progress generation. - * @param {string} challengeId - The challenge ID - * @returns {string|null} - The runId if in progress, null otherwise - */ -function getRunId(challengeId) { - const entry = generationCache.get(challengeId); - if (!entry) { - return null; - } - const elapsed = Date.now() - entry.timestamp; - if (elapsed > EXPIRY_MS) { - generationCache.delete(challengeId); - return null; - } - return entry.runId || null; -} - -/** - * Mark that context generation has started for a challenge. - * @param {string} challengeId - The challenge ID - * @param {string} runId - The workflow run ID (optional, can be set later) - */ -function markGenerationStarted(challengeId, runId = null) { - generationCache.set(challengeId, { timestamp: Date.now(), runId }); -} - -/** - * Update the runId for an in-progress generation. - * @param {string} challengeId - The challenge ID - * @param {string} runId - The workflow run ID - */ -function setRunId(challengeId, runId) { - const entry = generationCache.get(challengeId); - if (entry) { - entry.runId = runId; - } -} - -/** - * Clear the generation entry for a challenge (on completion or failure). - * @param {string} challengeId - The challenge ID - */ -function clearGeneration(challengeId) { - generationCache.delete(challengeId); -} - -module.exports = { - isGenerationInProgress, - getRunId, - markGenerationStarted, - setRunId, - clearGeneration, -}; diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index d9dc588..de3f3e0 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -25,10 +25,6 @@ const { hasAdminRole } = require("../common/role-helper"); const { enrichChallengeForResponse, convertToISOString } = require("../common/challenge-helper"); const deepEqual = require("deep-equal"); const prismaHelper = require("../common/prisma-helper"); -const { - shouldGenerateChallengeReviewContext, - triggerChallengeReviewContextGeneration, -} = require("../common/challenge-review-context-helper"); const { getClient, @@ -3277,25 +3273,6 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { } } - // Trigger challenge review context generation for AI review if applicable - const currentStatus = updatedChallenge.status; - const isActive = currentStatus === ChallengeStatusEnum.ACTIVE; - if (shouldGenerateChallengeReviewContext(updatedChallenge)) { - if (isStatusChangingToActive) { - // Trigger 1: Challenge is being activated - logger.info( - `updateChallenge(${challengeId}): triggering review context generation on activation`, - ); - triggerChallengeReviewContextGeneration(challengeId); - } else if (isActive && !isStatusChangingToActive) { - // Trigger 2: Challenge updated while in ACTIVE (and not just activated) - logger.info( - `updateChallenge(${challengeId}): triggering review context generation on update (status: ${currentStatus})`, - ); - triggerChallengeReviewContextGeneration(challengeId); - } - } - return helper.removeNullProperties(updatedChallenge); } From 5e691390a44626cfcbdd6a8ef49f167a82def28c Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 25 Mar 2026 08:54:25 +0200 Subject: [PATCH 39/43] PM-4478 - add ai screening when editing ai config after launch --- src/services/ChallengeService.js | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index de3f3e0..98c33aa 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -2835,8 +2835,29 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { phasesUpdated = true; phasesForUpdate = _.cloneDeep(data.phases); } - // Add AI screening phase if AI reviewers are assigned and challenge is being activated - if (isStatusChangingToActive) { + const hasAIReviewers = (reviewers) => + Array.isArray(reviewers) && + reviewers.some( + (reviewer) => + reviewer && + reviewer.isMemberReview === false && + !_.isNil(reviewer.aiWorkflowId) && + _.toString(reviewer.aiWorkflowId).trim() !== "", + ); + + const hadAIReviewersBeforeUpdate = hasAIReviewers(challenge.reviewers); + const hasAIReviewersAfterUpdate = hasAIReviewers( + !_.isNil(data.reviewers) ? data.reviewers : challenge.reviewers, + ); + const isActiveWithNewAIReviewers = + challenge.status === ChallengeStatusEnum.ACTIVE && + !hadAIReviewersBeforeUpdate && + hasAIReviewersAfterUpdate; + const shouldEnsureAIScreeningPhase = isStatusChangingToActive || isActiveWithNewAIReviewers; + + // Add AI screening phase when activating a challenge, or when AI reviewers are newly added + // to an already ACTIVE challenge. + if (shouldEnsureAIScreeningPhase) { logger.debug( `updateChallenge: checking if AI screening phase needs to be added (challengeId=${challengeId})`, ); From f51053c975a27bbc75c98ffe592487cd5baf2a10 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 25 Mar 2026 08:55:07 +0200 Subject: [PATCH 40/43] deploy --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 32f96d7..b61dec4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -90,7 +90,7 @@ workflows: branches: only: - develop - - PM-4318_move-to-next-phase-when-manually-closing + - PM-4478_add-ai-screening-phase-when-editing-after-launch - review-context - "build-qa": From f9a4f376b568bfd1dd84e9c97de231d65ec673ce Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 25 Mar 2026 11:29:40 +0200 Subject: [PATCH 41/43] add some logs --- src/services/ChallengeService.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 98c33aa..41a778b 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -2849,11 +2849,23 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { const hasAIReviewersAfterUpdate = hasAIReviewers( !_.isNil(data.reviewers) ? data.reviewers : challenge.reviewers, ); + logger.debug( + `updateChallenge: AI reviewers - before=${hadAIReviewersBeforeUpdate}, after=${hasAIReviewersAfterUpdate}`, + ); + logger.debug( + `updateChallenge: reviewersPayloadPreview=${JSON.stringify( + (!_.isNil(data.reviewers) ? data.reviewers : challenge.reviewers) || [], + ).slice(0, 200)}`, + ); const isActiveWithNewAIReviewers = challenge.status === ChallengeStatusEnum.ACTIVE && !hadAIReviewersBeforeUpdate && hasAIReviewersAfterUpdate; + logger.debug(`updateChallenge: isActiveWithNewAIReviewers=${isActiveWithNewAIReviewers}`); const shouldEnsureAIScreeningPhase = isStatusChangingToActive || isActiveWithNewAIReviewers; + logger.debug( + `updateChallenge: shouldEnsureAIScreeningPhase=${shouldEnsureAIScreeningPhase} isStatusChangingToActive=${isStatusChangingToActive}`, + ); // Add AI screening phase when activating a challenge, or when AI reviewers are newly added // to an already ACTIVE challenge. @@ -2865,9 +2877,19 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { phases: phasesForUpdate || challenge.phases, reviewers: data.reviewers || challenge.reviewers, }; + logger.debug( + `updateChallenge: tempChallenge preview reviewers=${JSON.stringify( + tempChallenge.reviewers || [], + ).slice(0, 200)} phasesCount=${(tempChallenge.phases || []).length}`, + ); const debugLogForAI = (message) => logger.debug(`updateChallenge(AI screening): ${message} (challengeId=${challengeId})`); await challengeHelper.addAIScreeningPhaseForChallenge(tempChallenge, prisma, debugLogForAI); + logger.info( + `updateChallenge: AI screening phase ensured (challengeId=${challengeId}) resultingPhases=${( + tempChallenge.phases || [] + ).length}`, + ); // Update phasesForUpdate with the updated phases after AI screening addition phasesForUpdate = tempChallenge.phases; phasesUpdated = true; From 3b31a81b54e39494197237bd8372c3f981b5d8a9 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 25 Mar 2026 12:38:49 +0200 Subject: [PATCH 42/43] fix phase override --- src/services/ChallengeService.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 41a778b..9eb1553 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -2874,8 +2874,8 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { `updateChallenge: checking if AI screening phase needs to be added (challengeId=${challengeId})`, ); const tempChallenge = { - phases: phasesForUpdate || challenge.phases, - reviewers: data.reviewers || challenge.reviewers, + phases: _.cloneDeep(phasesForUpdate || challenge.phases), + reviewers: _.cloneDeep(data.reviewers || challenge.reviewers), }; logger.debug( `updateChallenge: tempChallenge preview reviewers=${JSON.stringify( From 353b1f3079758ae736bec0997f9e93afb32b8e4b Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Thu, 26 Mar 2026 07:57:31 +1100 Subject: [PATCH 43/43] Support for legacy challenge types and fix for markup values on new challenges from project-api-v6 --- .../migration.sql | 38 ++++++++++++ src/common/project-helper.js | 34 ++++++++--- src/scripts/seed/ChallengeType.json | 28 +++++++++ src/services/ChallengeService.js | 4 +- test/unit/project-helper.test.js | 58 +++++++++++++++++++ 5 files changed, 152 insertions(+), 10 deletions(-) create mode 100644 prisma/migrations/20260323110000_add_content_creation_legacy_type/migration.sql create mode 100644 test/unit/project-helper.test.js diff --git a/prisma/migrations/20260323110000_add_content_creation_legacy_type/migration.sql b/prisma/migrations/20260323110000_add_content_creation_legacy_type/migration.sql new file mode 100644 index 0000000..73fc655 --- /dev/null +++ b/prisma/migrations/20260323110000_add_content_creation_legacy_type/migration.sql @@ -0,0 +1,38 @@ +INSERT INTO "ChallengeType" ( + "id", + "name", + "description", + "isActive", + "isTask", + "abbreviation", + "legacyId", + "isLegacy", + "createdAt", + "createdBy", + "updatedAt", + "updatedBy" +) +SELECT + seed."id", + seed."name", + seed."description", + true, + false, + seed."abbreviation", + seed."legacyId", + true, + CURRENT_TIMESTAMP, + 'migration', + CURRENT_TIMESTAMP, + 'migration' +FROM ( + VALUES + ('f9570d73-4f26-4d3a-b804-7f6f2f4b85e9', 'BUG_HUNT', 'Legacy develop subtype retained for historical stats references.', 'LBGH', 120), + ('65d2d4d4-a0e2-4f5d-94df-570f0b084439', 'CONTENT_CREATION', 'Legacy develop subtype retained for historical stats references.', 'LCTC', 146) +) AS seed("id", "name", "description", "abbreviation", "legacyId") +WHERE NOT EXISTS ( + SELECT 1 + FROM "ChallengeType" + WHERE "name" = seed."name" + OR "legacyId" = seed."legacyId" +); diff --git a/src/common/project-helper.js b/src/common/project-helper.js index 3fb2e12..4c34843 100644 --- a/src/common/project-helper.js +++ b/src/common/project-helper.js @@ -8,6 +8,31 @@ const { hasAdminRole } = require("./role-helper"); const errors = require("./errors"); const logger = require("./logger"); +/** + * Normalizes billing-account markup to the decimal format persisted on + * challenges. + * + * Legacy project-service responses can return whole percentage points (for + * example `50` for 50%), while newer billing-account records use decimal + * fractions (for example `0.58` for 58%). This helper preserves modern values + * and converts only legacy percentages. + * + * @param {unknown} rawMarkup Markup value returned by Projects API. + * @returns {number|null} Decimal markup or `null` when the input is empty or invalid. + */ +function normalizeBillingMarkup(rawMarkup) { + if (_.isNil(rawMarkup) || rawMarkup === "") { + return null; + } + + const markup = _.toNumber(rawMarkup); + if (!Number.isFinite(markup)) { + return null; + } + + return markup > 1 ? markup / 100 : markup; +} + class ProjectHelper { /** * Get Project Details. @@ -81,16 +106,9 @@ class ProjectHelper { `projectHelper.getProjectBillingInformation: response status ${res.status} for project ${projectId}` ); - let markup = _.get(res, "data.markup", null) - ? _.toNumber(_.get(res, "data.markup", null)) - : null; - - if (markup && markup > 0) { - markup = (markup * 100) / 10000; - } return { billingAccountId: _.get(res, "data.tcBillingAccountId", null), - markup, + markup: normalizeBillingMarkup(_.get(res, "data.markup", null)), }; } catch (err) { const responseCode = _.get(err, "response.status"); diff --git a/src/scripts/seed/ChallengeType.json b/src/scripts/seed/ChallengeType.json index c804563..39960b6 100644 --- a/src/scripts/seed/ChallengeType.json +++ b/src/scripts/seed/ChallengeType.json @@ -144,6 +144,20 @@ "updatedAt": "2025-03-10T13:08:02.378Z", "updatedBy": "topcoder user" }, + { + "id": "f9570d73-4f26-4d3a-b804-7f6f2f4b85e9", + "name": "BUG_HUNT", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "LBGH", + "legacyId": 120, + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, { "id": "78253687-cc08-4aa8-b897-7a4f0c0b362d", "name": "ASSEMBLY_COMPETITION", @@ -185,6 +199,20 @@ "updatedAt": "2025-03-10T13:08:02.378Z", "updatedBy": "topcoder user" }, + { + "id": "65d2d4d4-a0e2-4f5d-94df-570f0b084439", + "name": "CONTENT_CREATION", + "description": "Legacy develop subtype retained for historical stats references.", + "isActive": true, + "isTask": false, + "abbreviation": "LCTC", + "legacyId": 146, + "isLegacy": true, + "createdAt": "2025-03-10T13:08:02.378Z", + "createdBy": "topcoder user", + "updatedAt": "2025-03-10T13:08:02.378Z", + "updatedBy": "topcoder user" + }, { "id": "dfd9b687-b1c8-4ec2-8fd2-bfbf07fe2802", "name": "RIA_BUILD_COMPETITION", diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 69c4836..f2fdf11 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -1751,7 +1751,7 @@ async function createChallenge(currentUser, challenge, userToken) { } else { _.set(challenge, "billing.billingAccountId", null); } - _.set(challenge, "billing.markup", markup || 0); + _.set(challenge, "billing.markup", _.isNil(markup) ? 0 : markup); } if (!_.isUndefined(_.get(challenge, "legacy.reviewType"))) { @@ -2527,7 +2527,7 @@ async function updateChallenge(currentUser, challengeId, data, options = {}) { } else { _.set(data, "billing.billingAccountId", null); } - _.set(data, "billing.markup", markup || 0); + _.set(data, "billing.markup", _.isNil(markup) ? 0 : markup); } // Make sure the user cannot change the direct project ID diff --git a/test/unit/project-helper.test.js b/test/unit/project-helper.test.js new file mode 100644 index 0000000..285c8b4 --- /dev/null +++ b/test/unit/project-helper.test.js @@ -0,0 +1,58 @@ +const chai = require('chai') + +const axios = require('axios') +const m2mHelper = require('../../src/common/m2m-helper') +const projectHelper = require('../../src/common/project-helper') + +chai.should() + +describe('project helper unit tests', () => { + let originalAxiosGet + let originalGetM2MToken + + beforeEach(() => { + originalAxiosGet = axios.get + originalGetM2MToken = m2mHelper.getM2MToken + }) + + afterEach(() => { + axios.get = originalAxiosGet + m2mHelper.getM2MToken = originalGetM2MToken + }) + + it('preserves decimal billing markup returned by projects api', async () => { + m2mHelper.getM2MToken = async () => 'test-token' + axios.get = async () => ({ + status: 200, + data: { + tcBillingAccountId: '80004217', + markup: 0.58 + } + }) + + const result = await projectHelper.getProjectBillingInformation(123) + + result.should.deep.equal({ + billingAccountId: '80004217', + markup: 0.58 + }) + }) + + it('converts legacy whole-percentage billing markup to decimal format', async () => { + m2mHelper.getM2MToken = async () => 'test-token' + axios.get = async () => ({ + status: 200, + data: { + tcBillingAccountId: '80004217', + markup: 58 + } + }) + + const result = await projectHelper.getProjectBillingInformation(123) + + result.should.deep.equal({ + billingAccountId: '80004217', + markup: 0.58 + }) + }) +})