exec($sql); echo "Successfully created leave tables: leave_types, leave_requests.\n"; // Add some default leave types for any existing companies to make testing easier $stmt = $pdo->query("SELECT id FROM companies"); $companies = $stmt->fetchAll(PDO::FETCH_COLUMN); $default_leave_types = [ ['name' => 'Annual Leave', 'days' => 21], ['name' => 'Sick Leave', 'days' => 10], ['name' => 'Maternity Leave', 'days' => 90] ]; $insert_stmt = $pdo->prepare("INSERT INTO leave_types (company_id, name, days_per_year) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE name=name"); // Using ON DUPLICATE to avoid errors on re-run foreach ($companies as $company_id) { foreach ($default_leave_types as $type) { // Check if it exists first to be truly idempotent $check_stmt = $pdo->prepare("SELECT id FROM leave_types WHERE company_id = ? AND name = ?"); $check_stmt->execute([$company_id, $type['name']]); if (!$check_stmt->fetch()) { $insert_stmt->execute([$company_id, $type['name'], $type['days']]); } } } echo "Added default leave types for existing companies.\n"; } catch (PDOException $e) { die("Database migration failed: " . $e->getMessage() . "\n"); }