Skip to content

Commit

Permalink
feat: deactivate and delete projects
Browse files Browse the repository at this point in the history
  • Loading branch information
RonenMars committed Jan 28, 2025
1 parent f3fec92 commit f15fe0a
Showing 1 changed file with 15 additions and 23 deletions.
38 changes: 15 additions & 23 deletions src/components/organisms/dashboard/projectsTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,52 +11,46 @@ export const DashboardProjectsTable = () => {
const { projectsList } = useProjectStore();

const [i, setI] = React.useState(0);
const [j, setJ] = React.useState(0);

const eraseProjects = async (projectsList: Project[]) => {
for (let i = 0; i < projectsList.length; i++) {
setI(i);
const project = projectsList[i];
await ProjectsService.delete(project.id);
const { error } = await ProjectsService.delete(project.id);
if (error) {
const deactivated = await deactivateProject(project.id);
if (deactivated) await ProjectsService.delete(project.id);
}

// After every 10 projects, wait 30 seconds
if (i > 0 && i % 10 === 0) {
await new Promise((resolve) => setTimeout(resolve, 30000));
await new Promise((resolve) => setTimeout(resolve, 6000));
} else {
// Wait 5 seconds between each delete
await new Promise((resolve) => setTimeout(resolve, 5000));
await new Promise((resolve) => setTimeout(resolve, 2000));
}
}
};

const deactivateProjects = async (projectsList: Project[]) => {
for (let j = 0; j < projectsList.length; j++) {
setJ(j);

// Get deployments for current project
const { data: deployments } = await DeploymentsService.list(projectsList[i].id);

// Find active deployment if exists
const deactivateProject = async (projectId: string) => {
try {
const { data: deployments } = await DeploymentsService.list(projectId);
const activeDeployment = deployments?.find(
(deployment) => deployment.state === DeploymentStateVariant.active
);

if (activeDeployment) {
await DeploymentsService.deactivate(activeDeployment.deploymentId);
}

// After every 10 projects, wait 30 seconds
if (i > 0 && i % 10 === 0) {
await new Promise((resolve) => setTimeout(resolve, 30000));
} else {
// Wait 5 seconds between each project
await new Promise((resolve) => setTimeout(resolve, 5000));
}
return true;
} catch (error) {
// eslint-disable-next-line no-console
console.error("Error deactivating project", projectId, error);
return false;
}
};

const deactivateAndDelete = async (projectsList: Project[]) => {
await deactivateProjects(projectsList);
await eraseProjects(projectsList);
};

Expand All @@ -67,8 +61,6 @@ export const DashboardProjectsTable = () => {

return (
<div className="flex h-screen w-screen items-center justify-center text-4xl text-black">
Deactivating... {j} out of {projectsList.length}
<br />
Deleting... {i} out of {projectsList.length}
</div>
);
Expand Down

0 comments on commit f15fe0a

Please sign in to comment.