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();