35370-vm/db/database.php
Flatlogic Bot 275165284b 1.0
2025-10-31 00:13:36 +00:00

71 lines
2.4 KiB
PHP

<?php
require_once __DIR__ . '/config.php';
function get_db_connection() {
static $pdo;
if (!$pdo) {
try {
$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8mb4', DB_USER, DB_PASS, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
} catch (PDOException $e) {
// In a real app, you'd want to log this and show a user-friendly error.
die("Database connection failed: " . $e->getMessage());
}
}
return $pdo;
}
function initialize_database() {
$pdo = get_db_connection();
$statements = [
'CREATE TABLE IF NOT EXISTS members (
id INT AUTO_INCREMENT PRIMARY KEY,
full_name VARCHAR(255) NOT NULL,
street VARCHAR(255),
number VARCHAR(50),
neighborhood VARCHAR(100),
city VARCHAR(100),
state VARCHAR(50),
zip_code VARCHAR(20),
phone VARCHAR(50),
email VARCHAR(255),
job_title VARCHAR(255),
department VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);',
'CREATE TABLE IF NOT EXISTS dependents (
id INT AUTO_INCREMENT PRIMARY KEY,
member_id INT NOT NULL,
full_name VARCHAR(255) NOT NULL,
relationship VARCHAR(100),
date_of_birth DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (member_id) REFERENCES members(id) ON DELETE CASCADE
);',
'CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);'
];
foreach ($statements as $statement) {
$pdo->exec($statement);
}
// Add a default admin user if one doesn't exist
$stmt = $pdo->query("SELECT id FROM users WHERE username = 'admin'");
if ($stmt->rowCount() == 0) {
$admin_pass = password_hash('password', PASSWORD_DEFAULT);
$pdo->prepare("INSERT INTO users (username, password) VALUES (?, ?)")
->execute(['admin', $admin_pass]);
}
}
// Initialize the database schema when this file is included.
initialize_database();