From 2c5ecf69b7a8c05f6fa400a1f8f3d44c44ea3c5d Mon Sep 17 00:00:00 2001
From: "Vink, S.A. (Sjoerd)" <s.a.vink@uu.nl>
Date: Tue, 16 Jan 2024 00:15:46 +0000
Subject: [PATCH] fix(db): if add a database which is already there, we get
 database connectionfailed

Solves #DEV-244
---
 .../forms/AddDatabase/newdatabase.tsx                | 12 ++++++++++++
 .../lib/components/buttons/buttons.module.scss.d.ts  |  1 +
 .../table_vis/components/table.module.scss.d.ts      |  1 +
 3 files changed, 14 insertions(+)

diff --git a/apps/web/src/components/navbar/DatabaseManagement/forms/AddDatabase/newdatabase.tsx b/apps/web/src/components/navbar/DatabaseManagement/forms/AddDatabase/newdatabase.tsx
index 571d597b3..d07b1c671 100644
--- a/apps/web/src/components/navbar/DatabaseManagement/forms/AddDatabase/newdatabase.tsx
+++ b/apps/web/src/components/navbar/DatabaseManagement/forms/AddDatabase/newdatabase.tsx
@@ -7,6 +7,7 @@ import {
   useAppDispatch,
   useDatabaseAPI,
   useSchemaAPI,
+  useSessionCache,
 } from '@graphpolaris/shared/lib/data-access';
 import { addError } from '@graphpolaris/shared/lib/data-access/store/configSlice';
 import { ErrorOutline } from '@mui/icons-material';
@@ -38,6 +39,7 @@ export const NewDatabaseForm = (props: { onClose(): void; open: boolean }) => {
   const [state, setState] = useState<AddDatabaseRequest>(INITIAL_DB_STATE);
   const api = useDatabaseAPI();
   const schemaApi = useSchemaAPI();
+  const session = useSessionCache();
   const [hasError, setHasError] = useState({});
   const [sampleData, setSampleData] = useState<boolean | null>(false);
   const [connection, setConnection] = useState<Connection>({
@@ -69,6 +71,16 @@ export const NewDatabaseForm = (props: { onClose(): void; open: boolean }) => {
       verified: null,
     }));
 
+    if (session.databases && !session.databases.hasOwnProperty(state.name)) {
+      setConnection((prevState) => ({
+        ...prevState,
+        connecting: false,
+        status: 'Database already connected',
+        verified: false,
+      }));
+      return;
+    }
+
     try {
       api
         .TestDatabaseConnection(state)
diff --git a/libs/shared/lib/components/buttons/buttons.module.scss.d.ts b/libs/shared/lib/components/buttons/buttons.module.scss.d.ts
index 090a2928f..3165183bc 100644
--- a/libs/shared/lib/components/buttons/buttons.module.scss.d.ts
+++ b/libs/shared/lib/components/buttons/buttons.module.scss.d.ts
@@ -1,6 +1,7 @@
 declare const classNames: {
   readonly btn: 'btn';
   readonly 'btn-lg': 'btn-lg';
+  readonly '5': '5';
   readonly 'btn-icon-only': 'btn-icon-only';
   readonly 'btn-md': 'btn-md';
   readonly 'btn-sm': 'btn-sm';
diff --git a/libs/shared/lib/vis/visualizations/table_vis/components/table.module.scss.d.ts b/libs/shared/lib/vis/visualizations/table_vis/components/table.module.scss.d.ts
index 8798bcd00..0dc7b2cfe 100644
--- a/libs/shared/lib/vis/visualizations/table_vis/components/table.module.scss.d.ts
+++ b/libs/shared/lib/vis/visualizations/table_vis/components/table.module.scss.d.ts
@@ -1,5 +1,6 @@
 declare const classNames: {
   readonly 'table-container': 'table-container';
   readonly table: 'table';
+  readonly '5': '5';
 };
 export = classNames;
-- 
GitLab