78 lines
2.9 KiB
PHP
78 lines
2.9 KiB
PHP
<?php
|
|
require_once 'db/config.php';
|
|
$db = db();
|
|
|
|
echo "<h1>Applying Database Fixes...</h1>";
|
|
|
|
try {
|
|
// 1. Add columns if missing
|
|
try {
|
|
$db->exec("ALTER TABLE appointments ADD COLUMN start_time DATETIME NULL");
|
|
echo "Added start_time column.<br>";
|
|
} catch (PDOException $e) {
|
|
echo "start_time check: " . $e->getMessage() . "<br>";
|
|
}
|
|
|
|
try {
|
|
$db->exec("ALTER TABLE appointments ADD COLUMN end_time DATETIME NULL");
|
|
echo "Added end_time column.<br>";
|
|
} catch (PDOException $e) {
|
|
echo "end_time check: " . $e->getMessage() . "<br>";
|
|
}
|
|
|
|
// 2. Migrate data
|
|
// Check if appointment_date exists before trying to use it
|
|
try {
|
|
$stmt = $db->query("SHOW COLUMNS FROM appointments LIKE 'appointment_date'");
|
|
if ($stmt->fetch()) {
|
|
$db->exec("UPDATE appointments SET start_time = appointment_date WHERE start_time IS NULL");
|
|
echo "Migrated data from appointment_date to start_time.<br>";
|
|
} else {
|
|
echo "Column 'appointment_date' does not exist, skipping data migration.<br>";
|
|
}
|
|
} catch (PDOException $e) {
|
|
echo "Data migration check failed: " . $e->getMessage() . "<br>";
|
|
}
|
|
|
|
// Populate end_time based on start_time
|
|
try {
|
|
$db->exec("UPDATE appointments SET end_time = DATE_ADD(start_time, INTERVAL 30 MINUTE) WHERE end_time IS NULL AND start_time IS NOT NULL");
|
|
echo "Populated end_time based on start_time.<br>";
|
|
} catch (PDOException $e) {
|
|
echo "Could not populate end_time: " . $e->getMessage() . "<br>";
|
|
}
|
|
|
|
// 3. Set NOT NULL constraint
|
|
try {
|
|
// Only if start_time has values (or table is empty)
|
|
$db->exec("ALTER TABLE appointments MODIFY COLUMN start_time DATETIME NOT NULL");
|
|
echo "Set start_time to NOT NULL.<br>";
|
|
} catch (PDOException $e) {
|
|
echo "Could not set start_time to NOT NULL (maybe some rows are NULL?): " . $e->getMessage() . "<br>";
|
|
}
|
|
|
|
try {
|
|
$db->exec("ALTER TABLE appointments MODIFY COLUMN end_time DATETIME NOT NULL");
|
|
echo "Set end_time to NOT NULL.<br>";
|
|
} catch (PDOException $e) {
|
|
echo "Could not set end_time to NOT NULL: " . $e->getMessage() . "<br>";
|
|
}
|
|
|
|
// 4. Ensure other columns exist (like nurse_id, visit_type, etc. from previous migrations)
|
|
try {
|
|
$db->exec("ALTER TABLE appointments ADD COLUMN nurse_id INT NULL");
|
|
} catch (Exception $e) {}
|
|
try {
|
|
$db->exec("ALTER TABLE appointments ADD COLUMN visit_type ENUM('Clinic', 'Home') DEFAULT 'Clinic'");
|
|
} catch (Exception $e) {}
|
|
try {
|
|
$db->exec("ALTER TABLE appointments ADD COLUMN address TEXT NULL");
|
|
} catch (Exception $e) {}
|
|
|
|
echo "<h2>Fix completed successfully.</h2>";
|
|
echo "<p><a href='dashboard.php' class='btn btn-primary'>Go to Dashboard</a></p>";
|
|
|
|
} catch (PDOException $e) {
|
|
echo "<h2>Fatal Error during fix:</h2> " . $e->getMessage();
|
|
}
|