From 0931a17af5b10bacb2ff05d8b50f580a5c7f8d7a Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Wed, 21 Feb 2024 08:45:43 +0100 Subject: [PATCH] Convert check to a standalone DAL operation --- .../secret-approval-request-service.ts | 10 +--- backend/src/services/project/project-dal.ts | 15 ++++-- .../secret-import/secret-import-service.ts | 10 +--- backend/src/services/secret/secret-service.ts | 50 +++---------------- 4 files changed, 22 insertions(+), 63 deletions(-) diff --git a/backend/src/ee/services/secret-approval-request/secret-approval-request-service.ts b/backend/src/ee/services/secret-approval-request/secret-approval-request-service.ts index 9e2bb8477..9a91b745d 100644 --- a/backend/src/ee/services/secret-approval-request/secret-approval-request-service.ts +++ b/backend/src/ee/services/secret-approval-request/secret-approval-request-service.ts @@ -48,7 +48,7 @@ type TSecretApprovalRequestServiceFactoryDep = { secretBlindIndexDAL: Pick; snapshotService: Pick; secretVersionDAL: Pick; - projectDAL: Pick; + projectDAL: Pick; secretService: Pick< TSecretServiceFactory, | "fnSecretBulkInsert" @@ -437,13 +437,7 @@ export const secretApprovalRequestServiceFactory = ({ subject(ProjectPermissionSub.Secrets, { environment, secretPath }) ); - const isProjectBeingUpgraded = await projectDAL.isProjectBeingUpgraded(projectId); - - if (isProjectBeingUpgraded) { - throw new BadRequestError({ - message: "Project is currently being upgraded, and secrets cannot be written. Please try again" - }); - } + await projectDAL.checkProjectUpgradeStatus(projectId); const folder = await folderDAL.findBySecretPath(projectId, environment, secretPath); if (!folder) throw new BadRequestError({ message: "Folder not found", name: "GenSecretApproval" }); diff --git a/backend/src/services/project/project-dal.ts b/backend/src/services/project/project-dal.ts index ecd60dc41..7d0826e12 100644 --- a/backend/src/services/project/project-dal.ts +++ b/backend/src/services/project/project-dal.ts @@ -2,7 +2,7 @@ import { Knex } from "knex"; import { TDbClient } from "@app/db"; import { ProjectsSchema, ProjectUpgradeStatus, ProjectVersion, TableName, TProjectsUpdate } from "@app/db/schemas"; -import { DatabaseError } from "@app/lib/errors"; +import { BadRequestError, DatabaseError } from "@app/lib/errors"; import { ormify, selectAllTableCols, sqlNestRelationships } from "@app/lib/knex"; export type TProjectDALFactory = ReturnType; @@ -160,9 +160,16 @@ export const projectDALFactory = (db: TDbClient) => { } }; - const isProjectBeingUpgraded = async (projectId: string) => { + const checkProjectUpgradeStatus = async (projectId: string) => { const project = await projectOrm.findById(projectId); - return project.upgradeStatus === ProjectUpgradeStatus.InProgress && project.version === ProjectVersion.V1; + const upgradeInProgress = + project.upgradeStatus === ProjectUpgradeStatus.InProgress && project.version === ProjectVersion.V1; + + if (upgradeInProgress) { + throw new BadRequestError({ + message: "Project is currently being upgraded, and secrets cannot be written. Please try again" + }); + } }; return { @@ -172,6 +179,6 @@ export const projectDALFactory = (db: TDbClient) => { findAllProjectsByIdentity, findProjectGhostUser, findProjectById, - isProjectBeingUpgraded + checkProjectUpgradeStatus }; }; diff --git a/backend/src/services/secret-import/secret-import-service.ts b/backend/src/services/secret-import/secret-import-service.ts index 33d89f014..1beae9be6 100644 --- a/backend/src/services/secret-import/secret-import-service.ts +++ b/backend/src/services/secret-import/secret-import-service.ts @@ -22,7 +22,7 @@ type TSecretImportServiceFactoryDep = { secretImportDAL: TSecretImportDALFactory; folderDAL: TSecretFolderDALFactory; secretDAL: Pick; - projectDAL: Pick; + projectDAL: Pick; projectEnvDAL: TProjectEnvDALFactory; permissionService: Pick; }; @@ -65,13 +65,7 @@ export const secretImportServiceFactory = ({ }) ); - const isProjectBeingUpgraded = await projectDAL.isProjectBeingUpgraded(projectId); - - if (isProjectBeingUpgraded) { - throw new BadRequestError({ - message: "Project is currently being upgraded, and secrets cannot be written. Please try again" - }); - } + await projectDAL.checkProjectUpgradeStatus(projectId); const folder = await folderDAL.findBySecretPath(projectId, environment, path); if (!folder) throw new BadRequestError({ message: "Folder not found", name: "Create import" }); diff --git a/backend/src/services/secret/secret-service.ts b/backend/src/services/secret/secret-service.ts index e8af1ca66..96d851a63 100644 --- a/backend/src/services/secret/secret-service.ts +++ b/backend/src/services/secret/secret-service.ts @@ -50,7 +50,7 @@ type TSecretServiceFactoryDep = { secretTagDAL: TSecretTagDALFactory; secretVersionDAL: TSecretVersionDALFactory; folderDAL: Pick; - projectDAL: Pick; + projectDAL: Pick; secretBlindIndexDAL: TSecretBlindIndexDALFactory; permissionService: Pick; snapshotService: Pick; @@ -284,13 +284,7 @@ export const secretServiceFactory = ({ subject(ProjectPermissionSub.Secrets, { environment, secretPath: path }) ); - const isProjectBeingUpgraded = await projectDAL.isProjectBeingUpgraded(projectId); - - if (isProjectBeingUpgraded) { - throw new BadRequestError({ - message: "Project is currently being upgraded, and secrets cannot be written. Please try again" - }); - } + await projectDAL.checkProjectUpgradeStatus(projectId); const folder = await folderDAL.findBySecretPath(projectId, environment, path); if (!folder) throw new BadRequestError({ message: "Folder not found", name: "Create secret" }); @@ -370,13 +364,7 @@ export const secretServiceFactory = ({ subject(ProjectPermissionSub.Secrets, { environment, secretPath: path }) ); - const isProjectBeingUpgraded = await projectDAL.isProjectBeingUpgraded(projectId); - - if (isProjectBeingUpgraded) { - throw new BadRequestError({ - message: "Project is currently being upgraded, and secrets cannot be written. Please try again" - }); - } + await projectDAL.checkProjectUpgradeStatus(projectId); const folder = await folderDAL.findBySecretPath(projectId, environment, path); if (!folder) throw new BadRequestError({ message: "Folder not found", name: "Create secret" }); @@ -478,13 +466,7 @@ export const secretServiceFactory = ({ subject(ProjectPermissionSub.Secrets, { environment, secretPath: path }) ); - const isProjectBeingUpgraded = await projectDAL.isProjectBeingUpgraded(projectId); - - if (isProjectBeingUpgraded) { - throw new BadRequestError({ - message: "Project is currently being upgraded, and secrets cannot be written. Please try again" - }); - } + await projectDAL.checkProjectUpgradeStatus(projectId); const folder = await folderDAL.findBySecretPath(projectId, environment, path); if (!folder) throw new BadRequestError({ message: "Folder not found", name: "Create secret" }); @@ -677,13 +659,7 @@ export const secretServiceFactory = ({ subject(ProjectPermissionSub.Secrets, { environment, secretPath: path }) ); - const isProjectBeingUpgraded = await projectDAL.isProjectBeingUpgraded(projectId); - - if (isProjectBeingUpgraded) { - throw new BadRequestError({ - message: "Project is currently being upgraded, and secrets cannot be written. Please try again" - }); - } + await projectDAL.checkProjectUpgradeStatus(projectId); const folder = await folderDAL.findBySecretPath(projectId, environment, path); if (!folder) throw new BadRequestError({ message: "Folder not found", name: "Create secret" }); @@ -740,13 +716,7 @@ export const secretServiceFactory = ({ subject(ProjectPermissionSub.Secrets, { environment, secretPath: path }) ); - const isProjectBeingUpgraded = await projectDAL.isProjectBeingUpgraded(projectId); - - if (isProjectBeingUpgraded) { - throw new BadRequestError({ - message: "Project is currently being upgraded, and secrets cannot be written. Please try again" - }); - } + await projectDAL.checkProjectUpgradeStatus(projectId); const folder = await folderDAL.findBySecretPath(projectId, environment, path); if (!folder) throw new BadRequestError({ message: "Folder not found", name: "Create secret" }); @@ -819,13 +789,7 @@ export const secretServiceFactory = ({ subject(ProjectPermissionSub.Secrets, { environment, secretPath: path }) ); - const isProjectBeingUpgraded = await projectDAL.isProjectBeingUpgraded(projectId); - - if (isProjectBeingUpgraded) { - throw new BadRequestError({ - message: "Project is currently being upgraded, and secrets cannot be written. Please try again" - }); - } + await projectDAL.checkProjectUpgradeStatus(projectId); const folder = await folderDAL.findBySecretPath(projectId, environment, path); if (!folder) throw new BadRequestError({ message: "Folder not found", name: "Create secret" });