-- Script d'initialisation de la base batiments
-- À exécuter avant le premier import

-- Création de la base de données
CREATE DATABASE IF NOT EXISTS batiments
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

USE batiments;

-- Table d'historique des imports
CREATE TABLE IF NOT EXISTS _histo (
    id INT AUTO_INCREMENT PRIMARY KEY,
    date_import DATETIME NOT NULL,
    dept VARCHAR(5) NOT NULL,
    nb_batiments INT DEFAULT 0,
    INDEX idx_date_import (date_import),
    INDEX idx_dept (dept)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Vue consolidée de tous les départements (à créer après les imports)
-- Cette vue sera créée dynamiquement après l'import de tous les départements

-- Exemple de requête pour créer la vue après imports :
/*
CREATE OR REPLACE VIEW v_batiments_france AS
SELECT * FROM bat01
UNION ALL SELECT * FROM bat02
UNION ALL SELECT * FROM bat03
-- ... etc pour tous les départements
;
*/

-- Index supplémentaires recommandés après import complet
-- À exécuter sur chaque table batXX après import :
/*
ALTER TABLE bat01 ADD INDEX idx_nb_log (nb_log);
ALTER TABLE bat01 ADD INDEX idx_nb_niv (nb_niv_max);
ALTER TABLE bat01 ADD INDEX idx_coords (latitude, longitude);
*/

-- Permissions pour l'utilisateur osm_maj_user
GRANT ALL PRIVILEGES ON batiments.* TO 'osm_maj_user'@'localhost';
GRANT ALL PRIVILEGES ON batiments.* TO 'osm_maj_user'@'%';
FLUSH PRIVILEGES;

-- Statistiques globales
CREATE OR REPLACE VIEW v_stats_imports AS
SELECT
    dept,
    MAX(date_import) as derniere_import,
    SUM(nb_batiments) as total_batiments
FROM _histo
GROUP BY dept
ORDER BY dept;

-- Exemple de jointure avec la base adresses
/*
-- Depuis la base batiments, joindre avec la base adresses :
SELECT
    b.batiment_groupe_id,
    b.nb_log,
    b.nb_niv_max,
    b.nb_pdl_res_princ as nb_compteurs,
    a.numero,
    a.rue,
    a.cp,
    a.ville
FROM bat01 b
JOIN adresses.cp01 a ON b.cle_interop_adr = a.id
WHERE b.nb_log > 0
AND b.nb_pdl_res_princ > 0;
*/
