diff --git a/migrate.php b/migrate.php
index 8719a13..18aec7f 100644
--- a/migrate.php
+++ b/migrate.php
@@ -1,91 +1,48 @@
πΊοΈ Migrations HouseHub OS
";
+echo "π οΈ HouseHub - Correction AUTO_INCREMENT Voyages
";
try {
- // On récupère toutes les familles actives dans la base meta
- $stmt = $meta_pdo->query("SELECT db_name, name FROM families WHERE is_active = 1");
+ // On récupère toutes les familles actives
+ $stmt = $meta_pdo->query("SELECT db_name, name FROM families");
$families = $stmt->fetchAll(PDO::FETCH_ASSOC);
- foreach ($families as $family) {
- $dbName = $family['db_name'];
- echo "- Famille : {$family['name']} ({$dbName})
";
-
+ foreach ($families as $f) {
+ $dbName = $f['db_name'];
+ echo "Famille : {$f['name']} ($dbName)
";
+
try {
- // Connexion PDO spΓ©cifique Γ la base de la famille (Multi-tenant)
$pdo = new PDO("mysql:host=$db_host;dbname=$dbName;charset=utf8mb4", $db_user, $db_pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
-
- // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- // βοΈ MIGRATION 1 : Refonte ModΓ¨le Voyages
- // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- try {
- $pdo->exec("ALTER TABLE pf_holidays ADD COLUMN return_step_id INT DEFAULT NULL");
- $pdo->exec("ALTER TABLE pf_holidays_items ADD COLUMN step_type VARCHAR(20) DEFAULT 'stop'");
- $pdo->exec("ALTER TABLE pf_holidays_items ADD COLUMN expense_context VARCHAR(20) DEFAULT NULL");
-
- // Migration des donnΓ©es
- $pdo->exec("
- UPDATE pf_holidays h
- SET return_step_id = (
- SELECT id FROM pf_holidays_items i
- WHERE i.holiday_id = h.id AND i.is_return = 1 AND i.location_name IS NOT NULL
- LIMIT 1
- )
- ");
-
- // Nettoyage
- $pdo->exec("ALTER TABLE pf_holidays_items DROP COLUMN is_return");
- echo "- β
SchΓ©ma Voyages mis Γ jour !
";
-
- } catch (\PDOException $e) {
- // 1060 : Duplicate column name / 1091 : Can't drop column (already dropped)
- if (in_array($e->errorInfo[1], [1060, 1091])) {
- echo "- β³ SchΓ©ma Voyages dΓ©jΓ Γ jour. (IgnorΓ©)
";
- } else {
- echo "- β οΈ Erreur sur Voyages : " . $e->getMessage() . "
";
- }
+
+ // 1. On vΓ©rifie si la clΓ© primaire existe dΓ©jΓ pour Γ©viter de faire planter le script
+ $hasPrimaryKey = $pdo->query("SHOW KEYS FROM pf_holidays WHERE Key_name = 'PRIMARY'")->fetch();
+
+ if (!$hasPrimaryKey) {
+ $pdo->exec("ALTER TABLE pf_holidays ADD PRIMARY KEY (id)");
+ echo "- β
ClΓ© primaire restaurΓ©e sur la colonne `id`.
";
}
- // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- // π° MIGRATION 2 : Provisions & Optimisation TrΓ©sorerie (Quinzaines)
- // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- try {
- $pdo->exec("
- CREATE TABLE IF NOT EXISTS `pf_expected_expenses` (
- `id` INT(11) NOT NULL AUTO_INCREMENT,
- `title` VARCHAR(150) NOT NULL,
- `amount` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
- `expected_date` DATE NOT NULL,
- `is_paid` TINYINT(1) NOT NULL DEFAULT 0,
- `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
- PRIMARY KEY (`id`),
- INDEX `idx_expected_date` (`expected_date`),
- INDEX `idx_is_paid` (`is_paid`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
- ");
- echo "- β
Table `pf_expected_expenses` (Provisions Budget) créée/vérifiée !
";
-
- } catch (\PDOException $e) {
- echo "- β οΈ Erreur sur Provisions Budget : " . $e->getMessage() . "
";
- }
+ // 2. On restaure la propriΓ©tΓ© AUTO_INCREMENT
+ $pdo->exec("ALTER TABLE pf_holidays MODIFY id INT(11) NOT NULL AUTO_INCREMENT");
+ echo "- β
PropriΓ©tΓ© AUTO_INCREMENT restaurΓ©e.
";
} catch (\PDOException $e) {
- echo "- β Impossible de se connecter Γ la base de donnΓ©es : " . $e->getMessage() . "
";
+ // On attrape l'erreur si la modif a dΓ©jΓ Γ©tΓ© faite
+ echo "- βΉοΈ Action ignorΓ©e ou table dΓ©jΓ Γ jour : " . $e->getMessage() . "
";
}
-
- echo "
";
+ echo "
";
}
-
- echo "π Migrations terminΓ©es avec succΓ¨s !
";
+ echo "π Correction terminΓ©e ! Tu peux rΓ©essayer de crΓ©er un voyage.
";
} catch (Exception $e) {
- die("Erreur fatale globale : " . $e->getMessage());
+ die("Erreur fatale de connexion Γ la Meta DB : " . $e->getMessage());
}
?>
\ No newline at end of file