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 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; }

View File

@@ -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