From ea2e0417feeeaddf9352bd2f911b8063467a66e8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me>
Date: Thu, 2 Nov 2023 19:29:30 +0100
Subject: [PATCH] GlobalHelper => Add repository creation error function

---
 ExpressAPI/src/helpers/GlobalHelper.ts | 33 ++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
 create mode 100644 ExpressAPI/src/helpers/GlobalHelper.ts

diff --git a/ExpressAPI/src/helpers/GlobalHelper.ts b/ExpressAPI/src/helpers/GlobalHelper.ts
new file mode 100644
index 0000000..c97328d
--- /dev/null
+++ b/ExpressAPI/src/helpers/GlobalHelper.ts
@@ -0,0 +1,33 @@
+import express          from 'express';
+import GitlabRepository from '../shared/types/Gitlab/GitlabRepository';
+import logger           from '../shared/logging/WinstonLogger';
+import GitlabManager    from '../managers/GitlabManager';
+import { AxiosError }   from 'axios';
+import { StatusCodes }  from 'http-status-codes';
+import DojoStatusCode   from '../shared/types/Dojo/DojoStatusCode';
+
+
+class GlobalHelper {
+    async repositoryCreationError(message: string, error: any, req: express.Request, res: express.Response, gitlabError: DojoStatusCode, internalError: DojoStatusCode, repositoryToRemove?: GitlabRepository): Promise<void> {
+        logger.error(message);
+        logger.error(error);
+
+        try {
+            if ( repositoryToRemove ) {
+                await GitlabManager.deleteRepository(repositoryToRemove.id);
+            }
+        } catch ( error ) {
+            logger.error('Repository deletion error');
+            logger.error(error);
+        }
+
+        if ( error instanceof AxiosError ) {
+            return req.session.sendResponse(res, StatusCodes.INTERNAL_SERVER_ERROR, {}, `Unknown gitlab error: ${ message }`, gitlabError);
+        }
+
+        return req.session.sendResponse(res, StatusCodes.INTERNAL_SERVER_ERROR, {}, `Unknown error: ${ message }`, internalError);
+    };
+}
+
+
+export default new GlobalHelper();
\ No newline at end of file
-- 
GitLab