92 lines
2.5 KiB
PHP
92 lines
2.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Master Database Setup & Initialization Script
|
|
* Runs user generation and SQL schema import automatically on Docker Compose initialization.
|
|
*/
|
|
|
|
echo "========================================\n";
|
|
echo " WKVS Database Automated Initializer \n";
|
|
echo "========================================\n\n";
|
|
|
|
$setupDir = __DIR__;
|
|
$baseDir = dirname(__DIR__, 2);
|
|
|
|
// 1. Run User Generation & Grant setup
|
|
echo "[1/3] Erstelle/Synchronisiere Datenbank-Benutzer...\n";
|
|
require_once $setupDir . '/generate-users.php';
|
|
|
|
$userResult = sync_and_create_db_users();
|
|
|
|
if (!$userResult['success']) {
|
|
echo "❌ Fehler bei Benutzererstellung: " . $userResult['message'] . "\n";
|
|
exit(1);
|
|
}
|
|
|
|
echo "✓ " . $userResult['message'] . "\n\n";
|
|
|
|
// 2. Generate SQL structure file with table prefix
|
|
echo "[2/3] Generiere SQL-Struktur & Tabellen-Prefix...\n";
|
|
require $setupDir . '/generate-sql.php';
|
|
|
|
echo "\n[3/3] Importiere Tabellen-Struktur in die Datenbank...\n";
|
|
|
|
$generatedSqlFile = $setupDir . '/sql-database.sql';
|
|
|
|
if (!file_exists($generatedSqlFile)) {
|
|
echo "❌ Fehler: '$generatedSqlFile' wurde nicht gefunden.\n";
|
|
exit(1);
|
|
}
|
|
|
|
// Connect to MariaDB to import SQL schema
|
|
$dbEnvFile = $baseDir . '/config/.env.db';
|
|
$dbEnv = parse_env_file_simple($dbEnvFile);
|
|
|
|
$rootPass = $dbEnv['MYSQL_ROOT_PASSWORD'] ?? '';
|
|
$dbName = $dbEnv['MYSQL_DATABASE'] ?? 'devdb_';
|
|
$dbHost = getenv('DB_HOST') ?: ($dbEnv['DB_HOST'] ?? 'mariadb');
|
|
$dbPort = (int)($dbEnv['DB_PORT'] ?? 3306);
|
|
|
|
$mysqli = null;
|
|
foreach ([$dbHost, 'mariadb', '127.0.0.1', 'localhost'] as $tryHost) {
|
|
try {
|
|
$conn = @new mysqli($tryHost, 'root', $rootPass, $dbName, $dbPort);
|
|
if (!$conn->connect_error) {
|
|
$mysqli = $conn;
|
|
break;
|
|
}
|
|
} catch (Throwable $e) {
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if (!$mysqli) {
|
|
echo "❌ Fehler: Konnte keine Verbindung als 'root' zu MariaDB herstellen.\n";
|
|
exit(1);
|
|
}
|
|
|
|
$sqlContent = file_get_contents($generatedSqlFile);
|
|
|
|
if ($mysqli->multi_query($sqlContent)) {
|
|
do {
|
|
if ($res = $mysqli->store_result()) {
|
|
$res->free();
|
|
}
|
|
} while ($mysqli->more_results() && $mysqli->next_result());
|
|
|
|
if ($mysqli->errno) {
|
|
echo "❌ SQL Import-Fehler: " . $mysqli->error . "\n";
|
|
exit(1);
|
|
}
|
|
echo "✓ Datenbank-Struktur erfolgreich importiert!\n\n";
|
|
} else {
|
|
echo "❌ SQL Import-Fehler: " . $mysqli->error . "\n";
|
|
exit(1);
|
|
}
|
|
|
|
$mysqli->close();
|
|
|
|
echo "========================================\n";
|
|
echo "✅ Datenbank-Initialisierung abgeschlossen!\n";
|
|
echo "========================================\n";
|