64 lines
2.8 KiB
SQL
64 lines
2.8 KiB
SQL
-- MSIN-4482 — Templates mapping import participants (hors transaction)
|
|
-- Contexte : UI import fiche événement superadm ; upsert sur clé fichier
|
|
-- Notes : exécution UNIQUEMENT sur dev préprod ; autres env = Navicat structure + sync_static_db
|
|
|
|
SET @db := DATABASE();
|
|
|
|
-- Templates de mapping colonnes (réutilisables par empreinte d'en-têtes)
|
|
CREATE TABLE IF NOT EXISTS `inscriptions_import_templates` (
|
|
`tpl_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
|
`eve_id` int(10) unsigned NOT NULL DEFAULT 0,
|
|
`com_id` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'MSIN-4482 — 0 = lié événement ; >0 = réutilisable côté client',
|
|
`tpl_name` varchar(120) NOT NULL DEFAULT '',
|
|
`tpl_header_sig` char(40) NOT NULL DEFAULT '' COMMENT 'sha1 en-têtes normalisés',
|
|
`tpl_headers_json` mediumtext NOT NULL,
|
|
`tpl_mapping_json` mediumtext NOT NULL COMMENT 'colonnes + valeurs épreuve + questions',
|
|
`tpl_actif` tinyint(1) unsigned NOT NULL DEFAULT 1,
|
|
`tpl_usa_id` int(10) unsigned NOT NULL DEFAULT 0,
|
|
`tpl_creation` datetime NOT NULL,
|
|
`tpl_maj` datetime NOT NULL,
|
|
PRIMARY KEY (`tpl_id`),
|
|
KEY `idx_import_tpl_eve_sig` (`eve_id`, `tpl_header_sig`),
|
|
KEY `idx_import_tpl_com_sig` (`com_id`, `tpl_header_sig`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- Clé unique fichier (= external_id ChronoTrack) + origine d'entrée
|
|
SET @col_ext := (
|
|
SELECT COUNT(*) FROM information_schema.COLUMNS
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'resultats_participants' AND COLUMN_NAME = 'par_external_id'
|
|
);
|
|
SET @sql_ext := IF(
|
|
@col_ext = 0,
|
|
'ALTER TABLE resultats_participants ADD COLUMN par_external_id VARCHAR(64) NULL DEFAULT NULL COMMENT ''MSIN-4482 — clé unique import / CT external_id'' AFTER par_id_original',
|
|
'SELECT ''par_external_id already exists'' AS note'
|
|
);
|
|
PREPARE stmt_ext FROM @sql_ext;
|
|
EXECUTE stmt_ext;
|
|
DEALLOCATE PREPARE stmt_ext;
|
|
|
|
SET @col_ori := (
|
|
SELECT COUNT(*) FROM information_schema.COLUMNS
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'resultats_participants' AND COLUMN_NAME = 'par_origine'
|
|
);
|
|
SET @sql_ori := IF(
|
|
@col_ori = 0,
|
|
'ALTER TABLE resultats_participants ADD COLUMN par_origine VARCHAR(32) NULL DEFAULT NULL COMMENT ''MSIN-4482 — import_fichier|saisie_rapide|inscription_en_ligne'' AFTER par_external_id',
|
|
'SELECT ''par_origine already exists'' AS note'
|
|
);
|
|
PREPARE stmt_ori FROM @sql_ori;
|
|
EXECUTE stmt_ori;
|
|
DEALLOCATE PREPARE stmt_ori;
|
|
|
|
SET @idx_ext := (
|
|
SELECT COUNT(*) FROM information_schema.STATISTICS
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'resultats_participants' AND INDEX_NAME = 'idx_par_external_eve'
|
|
);
|
|
SET @sql_idx := IF(
|
|
@idx_ext = 0,
|
|
'ALTER TABLE resultats_participants ADD KEY idx_par_external_eve (eve_id, par_external_id)',
|
|
'SELECT ''idx_par_external_eve already exists'' AS note'
|
|
);
|
|
PREPARE stmt_idx FROM @sql_idx;
|
|
EXECUTE stmt_idx;
|
|
DEALLOCATE PREPARE stmt_idx;
|