From b350841b8614bf3fe1ae7c84ba16bd9e0c2e73b0 Mon Sep 17 00:00:00 2001 From: carlosmonastyrski Date: Fri, 30 May 2025 19:14:22 -0300 Subject: [PATCH] PIT: fix migration for old projects with no versioning set --- ...5010_pit-projects-commits-initialization.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/backend/src/db/migrations/20250507185010_pit-projects-commits-initialization.ts b/backend/src/db/migrations/20250507185010_pit-projects-commits-initialization.ts index b708c02a8..9668b8623 100644 --- a/backend/src/db/migrations/20250507185010_pit-projects-commits-initialization.ts +++ b/backend/src/db/migrations/20250507185010_pit-projects-commits-initialization.ts @@ -131,9 +131,10 @@ export async function up(knex: Knex): Promise { for (const batch of batches) { i += 1; logger.info(`Processing project batch ${i} of ${batches.length}`); - const foldersCommitsList = []; + let foldersCommitsList = []; const rootFoldersMap: Record = {}; + const envRootFoldersMap: Record = {}; // Get All Folders for the Project // eslint-disable-next-line no-await-in-loop @@ -202,11 +203,26 @@ export async function up(knex: Knex): Promise { foldersCommitsList.push(folderCommit); if (!folder.parentId) { rootFoldersMap[folder.id] = folder.envId; + envRootFoldersMap[folder.envId] = folder.id; } } } logger.info(`Retrieved folder changes for project batch ${i} of ${batches.length}`); + const filteredBrokenProjectFolders = []; + + foldersCommitsList = foldersCommitsList.filter((folderCommit) => { + if (!envRootFoldersMap[folderCommit.commit.envId]) { + filteredBrokenProjectFolders.push(folderCommit.commit.folderId); + return false; + } + return true; + }); + + logger.info( + `Filtered ${filteredBrokenProjectFolders.length} broken project folders: ${JSON.stringify(filteredBrokenProjectFolders)}` + ); + // Insert New Commits in batches of 9000 const newCommits = foldersCommitsList.map((folderCommit) => folderCommit.commit); const commitBatches = chunkArray(newCommits, 9000);