This commit is contained in:
@@ -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; }
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user