108 lines
5.0 KiB
SQL
108 lines
5.0 KiB
SQL
-- 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). |