37120-vm/db/setup.php
Flatlogic Bot 9a73bf01c4 ١
2025-12-22 16:26:09 +00:00

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