71 lines
2.4 KiB
PHP
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();
|