diff --git a/Aberwyn/Controllers/SetupApiController.cs b/Aberwyn/Controllers/SetupApiController.cs index 5240a56..0bc3415 100644 --- a/Aberwyn/Controllers/SetupApiController.cs +++ b/Aberwyn/Controllers/SetupApiController.cs @@ -14,30 +14,51 @@ namespace Aberwyn.Controllers { var baseConnStr = $"server={request.Host};port={request.Port};user={request.User};password={request.Pass};"; - var testDbName = $"testcheck_{Guid.NewGuid():N}".Substring(0, 12); // säker tillfällig databas - using (var conn = new MySqlConnection(baseConnStr + "database=information_schema;")) { conn.Open(); - // Försök skapa en temporär databas + // Kontrollera om databasen redan finns + var checkCmd = new MySqlCommand("SELECT SCHEMA_NAME FROM SCHEMATA WHERE SCHEMA_NAME = @dbName", conn); + checkCmd.Parameters.AddWithValue("@dbName", request.Db); + var exists = checkCmd.ExecuteScalar(); + + if (exists != null) + { + return Ok(new + { + success = true, + message = "Anslutning OK och databasen finns redan." + }); + } + + // Testa skapa en temporär databas + var testDbName = $"testcheck_{Guid.NewGuid():N}".Substring(0, 12); var createCmd = new MySqlCommand($"CREATE DATABASE `{testDbName}`", conn); createCmd.ExecuteNonQuery(); - // Och radera den direkt var dropCmd = new MySqlCommand($"DROP DATABASE `{testDbName}`", conn); dropCmd.ExecuteNonQuery(); - } - return Ok(new { success = true, message = "Anslutning OK och CREATE DATABASE tillåten." }); + return Ok(new + { + success = true, + message = "Anslutning OK. Databasen finns inte, men CREATE DATABASE är tillåten." + }); + } } catch (Exception ex) { - return Ok(new { success = false, message = ex.Message }); + return Ok(new + { + success = false, + message = ex.Message + }); } } + public class DbTestRequest { public string Host { get; set; } diff --git a/Aberwyn/Controllers/SetupController.cs b/Aberwyn/Controllers/SetupController.cs index e7d7f59..d5a3d9a 100644 --- a/Aberwyn/Controllers/SetupController.cs +++ b/Aberwyn/Controllers/SetupController.cs @@ -84,9 +84,17 @@ namespace Aberwyn.Controllers if (exists == null) { - var createCmd = new MySqlCommand($"CREATE DATABASE `{model.DbName}`", conn); - createCmd.ExecuteNonQuery(); + try + { + var createCmd = new MySqlCommand($"CREATE DATABASE `{model.DbName}`", conn); + createCmd.ExecuteNonQuery(); + } + catch (Exception ex) + { + return BadRequest(new { error = "Databasen finns inte och kunde inte skapas.", details = ex.Message }); + } } + } // Bygg services temporärt för att skapa admin