Spaces:
Sleeping
Sleeping
File size: 1,929 Bytes
566304d 622b7f1 566304d 622b7f1 566304d 622b7f1 566304d 622b7f1 474aa28 622b7f1 474aa28 622b7f1 474aa28 566304d 474aa28 622b7f1 56fb0d1 474aa28 622b7f1 474aa28 622b7f1 56fb0d1 566304d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <?php
/**
* Database Setup Script for Docker Deployment
* This script initializes the database with tables and default data.
*/
$host = getenv('DB_HOST') ?: "localhost";
$user = getenv('DB_USER') ?: "root";
$pass = getenv('DB_PASS') ?: "";
$db = getenv('DB_NAME') ?: "kiit_kaffe_db";
header('Content-Type: application/json');
try {
// First, connect without database to create it
$conn = new PDO("mysql:host=$host;charset=utf8mb4", $user, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Create database if not exists
$conn->exec("CREATE DATABASE IF NOT EXISTS `$db`");
$conn->exec("USE `$db`");
// Read and execute the SQL file using multiQuery for multiple statements
$sqlFile = __DIR__ . '/../database.sql';
if (file_exists($sqlFile)) {
$sql = file_get_contents($sqlFile);
// Split by semicolons and execute each statement
$statements = array_filter(array_map('trim', explode(';', $sql)));
foreach ($statements as $statement) {
if (!empty($statement)) {
$conn->exec($statement);
}
}
}
// Create default admin user if not exists
$adminCheck = $conn->query("SELECT COUNT(*) FROM users WHERE email = 'admin@kiitkafe.in'")->fetchColumn();
if ($adminCheck == 0) {
$adminPassword = password_hash('admin123', PASSWORD_DEFAULT);
$stmt = $conn->prepare("INSERT INTO users (name, email, password, role) VALUES (?, ?, ?, ?)");
$stmt->execute(['Admin', 'admin@kiitkafe.in', $adminPassword, 'admin']);
}
echo json_encode([
'status' => 'success',
'message' => 'Database setup completed successfully',
'database' => $db
]);
} catch (PDOException $e) {
http_response_code(500);
echo json_encode([
'status' => 'error',
'message' => 'Database setup failed: ' . $e->getMessage()
]);
}
?>
|