Ajout du dossier api avec la géolocalisation automatique des casernes de pompiers
This commit is contained in:
126
api/scripts/php/migrate_ope_pass_histo.php
Normal file
126
api/scripts/php/migrate_ope_pass_histo.php
Normal file
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
/**
|
||||
* Script de migration de la table ope_pass_histo
|
||||
* Ce script ne migre que les historiques dont le fk_pass existe dans la table ope_pass de la base cible
|
||||
*/
|
||||
|
||||
// Inclusion des fichiers nécessaires
|
||||
require_once __DIR__ . '/../config.php';
|
||||
|
||||
// Fonction principale de migration
|
||||
try {
|
||||
// Établissement des connexions aux bases de données
|
||||
$sourceDb = getSourceConnection();
|
||||
$targetDb = getTargetConnection();
|
||||
|
||||
// Début de la migration silencieuse (n'affiche que les erreurs)
|
||||
|
||||
// Suppression de toutes les données existantes dans la table ope_pass_histo
|
||||
$deleteQuery = "DELETE FROM ope_pass_histo";
|
||||
$targetDb->exec($deleteQuery);
|
||||
|
||||
// Récupération des IDs des passages qui ont été migrés
|
||||
$stmt = $targetDb->query("SELECT id FROM ope_pass");
|
||||
$migratedPasses = $stmt->fetchAll(PDO::FETCH_COLUMN);
|
||||
|
||||
if (empty($migratedPasses)) {
|
||||
echo "ERREUR: Aucun passage n'a été migré. Veuillez d'abord migrer la table ope_pass." . PHP_EOL;
|
||||
closeSshTunnel();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Récupération des IDs des utilisateurs qui ont été migrés
|
||||
$stmt = $targetDb->query("SELECT id FROM users");
|
||||
$migratedUsers = $stmt->fetchAll(PDO::FETCH_COLUMN);
|
||||
|
||||
if (empty($migratedUsers)) {
|
||||
echo "ERREUR: Aucun utilisateur n'a été migré. Veuillez d'abord migrer la table users." . PHP_EOL;
|
||||
closeSshTunnel();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Récupération directe des IDs des passages dans la table cible
|
||||
$stmt = $targetDb->query("SELECT id FROM ope_pass");
|
||||
$migratedPassIds = $stmt->fetchAll(PDO::FETCH_COLUMN);
|
||||
|
||||
if (empty($migratedPassIds)) {
|
||||
echo "ERREUR: Aucun passage n'a été migré. Veuillez d'abord migrer la table ope_pass." . PHP_EOL;
|
||||
closeSshTunnel();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Récupération des historiques de passages depuis la source
|
||||
$query = "SELECT * FROM ope_pass_histo";
|
||||
|
||||
$stmt = $sourceDb->query($query);
|
||||
$histos = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
// Préparation de la requête d'insertion
|
||||
$insertQuery = "INSERT INTO ope_pass_histo (
|
||||
fk_pass,
|
||||
date_histo,
|
||||
sujet,
|
||||
remarque
|
||||
) VALUES (
|
||||
:fk_pass,
|
||||
:date_histo,
|
||||
:sujet,
|
||||
:remarque
|
||||
)";
|
||||
|
||||
$insertStmt = $targetDb->prepare($insertQuery);
|
||||
|
||||
// Compteurs pour le suivi
|
||||
$inserted = 0;
|
||||
$skipped = 0;
|
||||
$errors = 0;
|
||||
|
||||
// Traitement de chaque historique
|
||||
foreach ($histos as $histo) {
|
||||
// Vérifier si l'ID du passage existe dans la table cible
|
||||
$fkPass = $histo['fk_pass'];
|
||||
if (!in_array($fkPass, $migratedPassIds)) {
|
||||
// Le passage n'a pas été migré, on ignore cet historique
|
||||
$skipped++;
|
||||
continue;
|
||||
}
|
||||
|
||||
// On ignore le champ fk_user qui n'existe plus dans la table cible
|
||||
|
||||
// Conversion des dates
|
||||
$dateHisto = !empty($histo['date_histo']) ? date('Y-m-d H:i:s', strtotime($histo['date_histo'])) : null;
|
||||
|
||||
// Préparation des données pour l'insertion
|
||||
$histoData = [
|
||||
'fk_pass' => $fkPass,
|
||||
'date_histo' => $dateHisto,
|
||||
'sujet' => $histo['sujet'] ?? '',
|
||||
'remarque' => $histo['remarque'] ?? ''
|
||||
];
|
||||
|
||||
try {
|
||||
// Insertion dans la table cible
|
||||
$insertStmt->execute($histoData);
|
||||
$inserted++;
|
||||
} catch (PDOException $e) {
|
||||
echo "ERREUR: Migration de l'historique (rowid {$histo['rowid']}, passage {$fkPass}) : " . $e->getMessage() . "\n";
|
||||
$errors++;
|
||||
}
|
||||
}
|
||||
|
||||
// Afficher uniquement s'il y a des erreurs
|
||||
if ($errors > 0) {
|
||||
echo "ERREUR: $errors erreurs lors de la migration de la table ope_pass_histo." . PHP_EOL;
|
||||
}
|
||||
|
||||
// Fermer le tunnel SSH
|
||||
closeSshTunnel();
|
||||
|
||||
} catch (Exception $e) {
|
||||
echo "ERREUR CRITIQUE: " . $e->getMessage() . PHP_EOL;
|
||||
|
||||
// Fermer le tunnel SSH en cas d'erreur
|
||||
closeSshTunnel();
|
||||
|
||||
exit(1);
|
||||
}
|
||||
Reference in New Issue
Block a user