85 lines
3.5 KiB
PHP
85 lines
3.5 KiB
PHP
<?php
|
|
// Simple script to setup database tables and seed initial data.
|
|
// This is for demonstration and initial setup.
|
|
// In a real-world scenario, a proper migration tool should be used.
|
|
|
|
require_once __DIR__ . '/config.php';
|
|
|
|
try {
|
|
$pdo = db();
|
|
|
|
// Set PDO to throw exceptions on error
|
|
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
|
|
echo "Starting database setup...\n";
|
|
|
|
// Table: clinics
|
|
$sql_clinics = "
|
|
CREATE TABLE IF NOT EXISTS `clinics` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`specialization` VARCHAR(255),
|
|
`phone` VARCHAR(50),
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;";
|
|
$pdo->exec($sql_clinics);
|
|
echo "Table 'clinics' created successfully or already exists.\n";
|
|
|
|
// Table: users
|
|
$sql_users = "
|
|
CREATE TABLE IF NOT EXISTS `users` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`clinic_id` INT NOT NULL,
|
|
`mobile` VARCHAR(50) NOT NULL UNIQUE,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`role` ENUM('admin', 'doctor', 'assistant') NOT NULL,
|
|
`is_active` BOOLEAN DEFAULT TRUE,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (`clinic_id`) REFERENCES `clinics`(`id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;";
|
|
$pdo->exec($sql_users);
|
|
echo "Table 'users' created successfully or already exists.\n";
|
|
|
|
// Table: patients
|
|
$sql_patients = "
|
|
CREATE TABLE IF NOT EXISTS `patients` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`clinic_id` INT NOT NULL,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`mobile` VARCHAR(50) NULL,
|
|
`notes` TEXT,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (`clinic_id`) REFERENCES `clinics`(`id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;";
|
|
$pdo->exec($sql_patients);
|
|
echo "Table 'patients' created successfully or already exists.\n";
|
|
|
|
// --- SEED DATA ---
|
|
|
|
// Check if clinic exists
|
|
$stmt = $pdo->query("SELECT id FROM `clinics` WHERE id = 1");
|
|
if ($stmt->rowCount() == 0) {
|
|
$pdo->exec("INSERT INTO `clinics` (`id`, `name`, `specialization`, `phone`) VALUES (1, 'عيادة الأمل', 'الطب العام', '1234567890')");
|
|
echo "Seeded 'clinics' table.\n";
|
|
|
|
// Seed users only if clinic was just created
|
|
$pdo->exec("INSERT INTO `users` (`clinic_id`, `mobile`, `name`, `role`) VALUES (1, '966500000001', 'د. أحمد محمود', 'doctor')");
|
|
$pdo->exec("INSERT INTO `users` (`clinic_id`, `mobile`, `name`, `role`) VALUES (1, '966500000002', 'فاطمة علي', 'assistant')");
|
|
echo "Seeded 'users' table.\n";
|
|
|
|
// Seed patients only if clinic was just created
|
|
$pdo->exec("INSERT INTO `patients` (`clinic_id`, `name`, `mobile`) VALUES (1, 'خالد الغامدي', '966510000001')");
|
|
$pdo->exec("INSERT INTO `patients` (`clinic_id`, `name`, `mobile`) VALUES (1, 'سارة عبدالله', '966510000002')");
|
|
$pdo->exec("INSERT INTO `patients` (`clinic_id`, `name`, `mobile`) VALUES (1, 'محمد الزهراني', '966510000003')");
|
|
echo "Seeded 'patients' table.\n";
|
|
} else {
|
|
echo "Data already seeded.\n";
|
|
}
|
|
|
|
echo "Database setup finished successfully!\n";
|
|
|
|
} catch (PDOException $e) {
|
|
die("Database error: " . $e->getMessage());
|
|
}
|