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 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; }
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user