Gogogo
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Elias Jansson
2025-06-03 22:11:17 +02:00
parent fe8e54b868
commit e626daa7bc
2 changed files with 38 additions and 9 deletions

View File

@@ -14,30 +14,51 @@ namespace Aberwyn.Controllers
{ {
var baseConnStr = $"server={request.Host};port={request.Port};user={request.User};password={request.Pass};"; 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;")) using (var conn = new MySqlConnection(baseConnStr + "database=information_schema;"))
{ {
conn.Open(); 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); var createCmd = new MySqlCommand($"CREATE DATABASE `{testDbName}`", conn);
createCmd.ExecuteNonQuery(); createCmd.ExecuteNonQuery();
// Och radera den direkt
var dropCmd = new MySqlCommand($"DROP DATABASE `{testDbName}`", conn); var dropCmd = new MySqlCommand($"DROP DATABASE `{testDbName}`", conn);
dropCmd.ExecuteNonQuery(); 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) catch (Exception ex)
{ {
return Ok(new { success = false, message = ex.Message }); return Ok(new
{
success = false,
message = ex.Message
});
} }
} }
public class DbTestRequest public class DbTestRequest
{ {
public string Host { get; set; } public string Host { get; set; }

View File

@@ -83,10 +83,18 @@ namespace Aberwyn.Controllers
var exists = cmd.ExecuteScalar(); var exists = cmd.ExecuteScalar();
if (exists == null) if (exists == null)
{
try
{ {
var createCmd = new MySqlCommand($"CREATE DATABASE `{model.DbName}`", conn); var createCmd = new MySqlCommand($"CREATE DATABASE `{model.DbName}`", conn);
createCmd.ExecuteNonQuery(); 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 // Bygg services temporärt för att skapa admin