From e1d2ed9dc93e11ba4f56d741c344afffad40f9cf Mon Sep 17 00:00:00 2001
From: Robin Leber <rleber98@gmail.com>
Date: Mon, 10 Jun 2024 17:06:21 +0200
Subject: [PATCH] FIX: Clear Architecture

---
 index.js                         |  1 -
 src/docker/dockerManager.js      |  1 -
 src/functions/helperFunctions.js | 44 ++++++++++++++++++++------------
 src/routes/deployRouter.js       |  6 ++---
 4 files changed, 31 insertions(+), 21 deletions(-)

diff --git a/index.js b/index.js
index f0716bb..2550c3e 100644
--- a/index.js
+++ b/index.js
@@ -22,7 +22,6 @@ app.get("/", (req, res) => {
 });
 
 emptyCustomCodeDatabase();
-// clearDocker();
 
 const server = http.createServer(app);
 
diff --git a/src/docker/dockerManager.js b/src/docker/dockerManager.js
index 891cb22..b3420fc 100644
--- a/src/docker/dockerManager.js
+++ b/src/docker/dockerManager.js
@@ -366,5 +366,4 @@ module.exports = {
   pauseDockerContainer,
   unpauseDockerContainer,
   dockerCleanUp,
-  killDockerContainer,
 };
diff --git a/src/functions/helperFunctions.js b/src/functions/helperFunctions.js
index db25102..3df6fbf 100644
--- a/src/functions/helperFunctions.js
+++ b/src/functions/helperFunctions.js
@@ -51,10 +51,8 @@ const addCustomCodeToJson = async (newElement) => {
   const dataFilePath = path.resolve(__dirname, "../../customCodeDatabase.json");
 
   try {
-    const data = await fs.readFile(dataFilePath, "utf-8");
-    let jsonArray;
-    jsonArray = JSON.parse(data);
-    const existingFilter = jsonArray.find(
+    const customCodes = await getCustomCodes();
+    const existingFilter = customCodes.find(
       (element) => element.id === newElement.id
     );
     if (existingFilter) {
@@ -64,12 +62,12 @@ const addCustomCodeToJson = async (newElement) => {
       existingFilter.code = newElement.code;
       existingFilter.isDeployed = false;
     } else {
-      jsonArray.push(newElement);
+      customCodes.push(newElement);
     }
 
     await fs.writeFile(
       dataFilePath,
-      JSON.stringify(jsonArray, null, 2),
+      JSON.stringify(customCodes, null, 2),
       "utf8"
     );
     console.log("Neues Element erfolgreich hinzugefügt.");
@@ -82,14 +80,12 @@ const addCustomCodeToJson = async (newElement) => {
 const setIsDeployed = async (id) => {
   const dataFilePath = path.resolve(__dirname, "../../customCodeDatabase.json");
   try {
-    const data = await fs.readFile(dataFilePath, "utf-8");
-    let jsonArray;
-    jsonArray = JSON.parse(data);
-    let elementToChange = jsonArray.find((element) => element.id === id);
+    const customCodes = await getCustomCodes();
+    let elementToChange = customCodes.find((element) => element.id === id);
     elementToChange.isDeployed = true;
     await fs.writeFile(
       dataFilePath,
-      JSON.stringify(jsonArray, null, 2),
+      JSON.stringify(customCodes, null, 2),
       "utf8"
     );
   } catch (err) {
@@ -157,10 +153,26 @@ const restartArchitecture = async () => {
   await deployArchitecture();
 };
 
-const clearDocker = () => {
-  // Docker Container
-  // Docker Files
-  // Docker Network
+const clearArchitecture = async () => {
+  try {
+    const dataFilePath = path.resolve(
+      __dirname,
+      "../../customCodeDatabase.json"
+    );
+    const customCodes = await getCustomCodes();
+    for (const customCode of customCodes) {
+      if (customCode.isDeployed) {
+        await killDockerContainer(customCode.id);
+        await removeDockerContainer(customCode.id);
+        await removeDockerImage(customCode.id);
+      }
+    }
+    await fs.writeFile(dataFilePath, "[]", "utf8");
+    console.log("Docker erfolgreich geleert, JSON erfolgreich geleert");
+  } catch (err) {
+    console.error(err);
+    throw err;
+  }
 };
 
 module.exports = {
@@ -170,7 +182,7 @@ module.exports = {
   addCustomCodeToJson,
   getCustomCodes,
   deployArchitecture,
-  clearDocker,
+  clearArchitecture,
   stopArchitecture,
   restartArchitecture,
 };
diff --git a/src/routes/deployRouter.js b/src/routes/deployRouter.js
index bffdc2a..2f34cb6 100644
--- a/src/routes/deployRouter.js
+++ b/src/routes/deployRouter.js
@@ -3,8 +3,8 @@ const {
   deployArchitecture,
   stopArchitecture,
   restartArchitecture,
+  clearArchitecture,
 } = require("../functions/helperFunctions");
-const { dockerCleanUp } = require("../docker/dockerManager");
 
 const deployRouter = express.Router();
 
@@ -38,9 +38,9 @@ deployRouter.post("/restart", async (req, res) => {
   }
 });
 
-deployRouter.get("/clearDocker", async (rey, res) => {
+deployRouter.get("/clearArchitecture", async (rey, res) => {
   try {
-    await dockerCleanUp();
+    await clearArchitecture();
     res.status(200).json({ message: "Docker leeren erfoglreich" });
   } catch (e) {
     console.error(e);
-- 
GitLab