Import
This commit is contained in:
1 parent
6ae10c6f64
commit
3b754994a1
4 files changed
+462
No files matched your search
@@ -0,0 +1,108 @@
|
||||
-- admin/sql/migration_add_missing_tables.sql
|
||||
--
|
||||
-- Corrige un oubli de livraison : plusieurs pages admin referencent
|
||||
-- des tables qui n'ont jamais ete creees dans install_full_schema.sql
|
||||
-- ni dans aucune migration precedente, causant des erreurs 500
|
||||
-- (SQLSTATE 42S02 "Base table or view not found") des l'ouverture :
|
||||
-- - admin/backup.php -> backup_log
|
||||
-- - admin/map_layers.php -> map_layers
|
||||
-- - admin/audit_log.php -> audit_log
|
||||
-- - admin/import_history.php -> import_batches, import_errors
|
||||
--
|
||||
-- A executer sur TOUTE base existante (prod ou test) :
|
||||
-- mysql -u netmonster_user -p netmonster < migration_add_missing_tables.sql
|
||||
--
|
||||
-- Idempotent (IF NOT EXISTS) : sans risque a rejouer.
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Utilisee par admin/backup.php (journal des sauvegardes effectuees
|
||||
-- manuellement ou par cron, aucun contenu de sauvegarde n'est stocke
|
||||
-- ici, uniquement des metadonnees).
|
||||
-- ---------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS backup_log (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
admin_username VARCHAR(100) NOT NULL,
|
||||
label VARCHAR(255) NOT NULL,
|
||||
note TEXT NULL,
|
||||
size_bytes_reported BIGINT UNSIGNED NULL,
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Utilisee par admin/map_layers.php (configuration des couches
|
||||
-- cartographiques affichees sur la carte : nom, couleur, visibilite,
|
||||
-- ordre d'affichage).
|
||||
-- ---------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS map_layers (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
layer_key VARCHAR(100) NOT NULL UNIQUE,
|
||||
color CHAR(7) NOT NULL DEFAULT '#3388ff',
|
||||
is_visible TINYINT(1) NOT NULL DEFAULT 1,
|
||||
sort_order INT NOT NULL DEFAULT 0,
|
||||
description VARCHAR(255) NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Utilisee par admin/audit_log.php (historique en lecture seule des
|
||||
-- actions administratives). Cette table n'est actuellement remplie par
|
||||
-- AUCUNE page : voir la note importante en bas de fichier.
|
||||
-- ---------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS audit_log (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
admin_username VARCHAR(100) NOT NULL,
|
||||
action VARCHAR(50) NOT NULL,
|
||||
entity_type VARCHAR(50) NOT NULL,
|
||||
entity_id BIGINT NULL,
|
||||
details TEXT NULL,
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_created_at (created_at),
|
||||
KEY idx_entity (entity_type, entity_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Utilisees par admin/import_history.php. Distinctes de la table
|
||||
-- `imports` (deja existante, alimentee par lib/ntm_import_to_staging.php
|
||||
-- et utilisee par admin/import_ntm.php) : import_batches/import_errors
|
||||
-- ne sont actuellement alimentees par AUCUNE page non plus, meme
|
||||
-- probleme que audit_log (voir note importante ci-dessous).
|
||||
-- ---------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS import_batches (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
filename VARCHAR(255) NOT NULL,
|
||||
country_id INT NULL,
|
||||
imported_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
imported_by VARCHAR(100) NOT NULL,
|
||||
status ENUM('success','partial','failed') NOT NULL DEFAULT 'success',
|
||||
rows_total INT NOT NULL DEFAULT 0,
|
||||
rows_imported INT NOT NULL DEFAULT 0,
|
||||
rows_rejected INT NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (country_id) REFERENCES countries(id),
|
||||
KEY idx_imported_at (imported_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS import_errors (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
batch_id INT NOT NULL,
|
||||
line_number INT NOT NULL,
|
||||
message VARCHAR(500) NOT NULL,
|
||||
raw_line TEXT NULL,
|
||||
PRIMARY KEY (id),
|
||||
FOREIGN KEY (batch_id) REFERENCES import_batches(id) ON DELETE CASCADE,
|
||||
KEY idx_batch (batch_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- NOTE IMPORTANTE : ces 4 tables (backup_log, map_layers, audit_log,
|
||||
-- import_batches/import_errors) resoudront les erreurs 500 (les pages
|
||||
-- pourront s'afficher), mais audit_log, import_batches et import_errors
|
||||
-- resteront VIDES tant qu'aucune page n'insere explicitement dedans a
|
||||
-- chaque action concernee. Cette instrumentation n'a jamais ete ecrite :
|
||||
-- ces pages de consultation ont ete livrees en supposant a tort que
|
||||
-- d'autres pages les alimentaient deja. Une correction complementaire
|
||||
-- sera necessaire si vous voulez que ces journaux soient utiles au
|
||||
-- quotidien (par exemple: brancher import_history.php sur la table
|
||||
-- `imports` deja existante et alimentee par import_ntm.php, plutot que
|
||||
-- sur import_batches qui fait doublon et n'est jamais rempli).
|
||||
Reference in new issue
Block a user