193 lines
6.7 KiB
SQL
193 lines
6.7 KiB
SQL
-- Prueft die fuer den aktuellen Impf-Workflow relevanten Tabellen, Spalten,
|
|
-- Indizes und den Legacy-Migrationsstatus.
|
|
-- Das Skript veraendert keine Daten.
|
|
|
|
SELECT 'database' AS check_type, DATABASE() AS object_name, 'INFO' AS status;
|
|
|
|
SELECT
|
|
'table' AS check_type,
|
|
t.required_name AS object_name,
|
|
CASE
|
|
WHEN it.table_name IS NOT NULL THEN 'OK'
|
|
ELSE 'MISSING'
|
|
END AS status
|
|
FROM (
|
|
SELECT 'impf_workflow_meta' AS required_name
|
|
UNION ALL SELECT 'impfstoff_workflow'
|
|
UNION ALL SELECT 'impfstoff_wochenplan'
|
|
UNION ALL SELECT 'impf_zeitraum'
|
|
UNION ALL SELECT 'impf_zeitraum_impfstoff'
|
|
UNION ALL SELECT 'warteliste_zeitraum'
|
|
UNION ALL SELECT 'warteliste'
|
|
) t
|
|
LEFT JOIN information_schema.tables it
|
|
ON it.table_schema = DATABASE()
|
|
AND it.table_name = t.required_name
|
|
ORDER BY t.required_name;
|
|
|
|
SELECT
|
|
'column' AS check_type,
|
|
CONCAT(c.table_name, '.', c.column_name) AS object_name,
|
|
CASE
|
|
WHEN ic.column_name IS NOT NULL THEN 'OK'
|
|
ELSE 'MISSING'
|
|
END AS status
|
|
FROM (
|
|
SELECT 'impf_workflow_meta' AS table_name, 'meta_key' AS column_name
|
|
UNION ALL SELECT 'impf_workflow_meta', 'meta_value'
|
|
UNION ALL SELECT 'impf_workflow_meta', 'updated_at'
|
|
UNION ALL SELECT 'impfstoff_workflow', 'impfstoff_id'
|
|
UNION ALL SELECT 'impfstoff_workflow', 'dosen_pro_flasche'
|
|
UNION ALL SELECT 'impfstoff_wochenplan', 'plan_id'
|
|
UNION ALL SELECT 'impfstoff_wochenplan', 'impfstoff_id'
|
|
UNION ALL SELECT 'impfstoff_wochenplan', 'wochentag'
|
|
UNION ALL SELECT 'impfstoff_wochenplan', 'start'
|
|
UNION ALL SELECT 'impfstoff_wochenplan', 'ende'
|
|
UNION ALL SELECT 'impfstoff_wochenplan', 'impfortid'
|
|
UNION ALL SELECT 'impf_zeitraum', 'zeitraum_id'
|
|
UNION ALL SELECT 'impf_zeitraum', 'bezeichnung'
|
|
UNION ALL SELECT 'impf_zeitraum', 'wochentag'
|
|
UNION ALL SELECT 'impf_zeitraum', 'start'
|
|
UNION ALL SELECT 'impf_zeitraum', 'ende'
|
|
UNION ALL SELECT 'impf_zeitraum', 'impfortid'
|
|
UNION ALL SELECT 'impf_zeitraum_impfstoff', 'zeitraum_id'
|
|
UNION ALL SELECT 'impf_zeitraum_impfstoff', 'impfstoff_id'
|
|
UNION ALL SELECT 'warteliste_zeitraum', 'warteid'
|
|
UNION ALL SELECT 'warteliste_zeitraum', 'zeitraum_id'
|
|
UNION ALL SELECT 'warteliste_zeitraum', 'created_at'
|
|
UNION ALL SELECT 'warteliste', 'warteid'
|
|
UNION ALL SELECT 'warteliste', 'userid'
|
|
UNION ALL SELECT 'warteliste', 'impfenzeitraum'
|
|
UNION ALL SELECT 'warteliste', 'zeitraum_id'
|
|
) c
|
|
LEFT JOIN information_schema.columns ic
|
|
ON ic.table_schema = DATABASE()
|
|
AND ic.table_name = c.table_name
|
|
AND ic.column_name = c.column_name
|
|
ORDER BY c.table_name, c.column_name;
|
|
|
|
SELECT
|
|
'index' AS check_type,
|
|
CONCAT(i.table_name, '.', i.index_name) AS object_name,
|
|
CASE
|
|
WHEN isx.index_name IS NOT NULL THEN 'OK'
|
|
ELSE 'MISSING'
|
|
END AS status
|
|
FROM (
|
|
SELECT 'warteliste' AS table_name, 'idx_warteliste_zeitraum' AS index_name
|
|
UNION ALL SELECT 'warteliste_zeitraum', 'idx_warteliste_zeitraum_zeitraum'
|
|
UNION ALL SELECT 'impfstoff_wochenplan', 'idx_impfstoff_wochenplan_impfstoff'
|
|
UNION ALL SELECT 'impfstoff_wochenplan', 'idx_impfstoff_wochenplan_wochentag'
|
|
UNION ALL SELECT 'impf_zeitraum', 'idx_impf_zeitraum_wochentag'
|
|
UNION ALL SELECT 'impf_zeitraum', 'idx_impf_zeitraum_impfort'
|
|
UNION ALL SELECT 'impf_zeitraum_impfstoff', 'idx_impf_zeitraum_impfstoff_impfstoff'
|
|
) i
|
|
LEFT JOIN information_schema.statistics isx
|
|
ON isx.table_schema = DATABASE()
|
|
AND isx.table_name = i.table_name
|
|
AND isx.index_name = i.index_name
|
|
GROUP BY i.table_name, i.index_name, isx.index_name
|
|
ORDER BY i.table_name, i.index_name;
|
|
|
|
SELECT
|
|
'meta' AS check_type,
|
|
'impf_workflow_meta.legacy_wochenplan_migrated' AS object_name,
|
|
CASE
|
|
WHEN EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.tables
|
|
WHERE table_schema = DATABASE()
|
|
AND table_name = 'impf_workflow_meta'
|
|
) THEN COALESCE((
|
|
SELECT CONCAT('VALUE=', meta_value)
|
|
FROM impf_workflow_meta
|
|
WHERE meta_key = 'legacy_wochenplan_migrated'
|
|
LIMIT 1
|
|
), 'MISSING')
|
|
ELSE 'TABLE_MISSING'
|
|
END AS status;
|
|
|
|
SELECT
|
|
'meta' AS check_type,
|
|
'impf_workflow_meta.legacy_warteliste_zeitraeume_migrated' AS object_name,
|
|
CASE
|
|
WHEN EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.tables
|
|
WHERE table_schema = DATABASE()
|
|
AND table_name = 'impf_workflow_meta'
|
|
) THEN COALESCE((
|
|
SELECT CONCAT('VALUE=', meta_value)
|
|
FROM impf_workflow_meta
|
|
WHERE meta_key = 'legacy_warteliste_zeitraeume_migrated'
|
|
LIMIT 1
|
|
), 'MISSING')
|
|
ELSE 'TABLE_MISSING'
|
|
END AS status;
|
|
|
|
SELECT
|
|
'data' AS check_type,
|
|
'impfstoff_wochenplan rows' AS object_name,
|
|
CASE
|
|
WHEN EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.tables
|
|
WHERE table_schema = DATABASE()
|
|
AND table_name = 'impfstoff_wochenplan'
|
|
) THEN CAST((SELECT COUNT(*) FROM impfstoff_wochenplan) AS CHAR)
|
|
ELSE 'TABLE_MISSING'
|
|
END AS status
|
|
UNION ALL
|
|
SELECT
|
|
'data' AS check_type,
|
|
'impf_zeitraum rows' AS object_name,
|
|
CASE
|
|
WHEN EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.tables
|
|
WHERE table_schema = DATABASE()
|
|
AND table_name = 'impf_zeitraum'
|
|
) THEN CAST((SELECT COUNT(*) FROM impf_zeitraum) AS CHAR)
|
|
ELSE 'TABLE_MISSING'
|
|
END AS status
|
|
UNION ALL
|
|
SELECT
|
|
'data' AS check_type,
|
|
'impf_zeitraum_impfstoff rows' AS object_name,
|
|
CASE
|
|
WHEN EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.tables
|
|
WHERE table_schema = DATABASE()
|
|
AND table_name = 'impf_zeitraum_impfstoff'
|
|
) THEN CAST((SELECT COUNT(*) FROM impf_zeitraum_impfstoff) AS CHAR)
|
|
ELSE 'TABLE_MISSING'
|
|
END AS status
|
|
UNION ALL
|
|
SELECT
|
|
'data' AS check_type,
|
|
'warteliste with zeitraum_id' AS object_name,
|
|
CASE
|
|
WHEN EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.columns
|
|
WHERE table_schema = DATABASE()
|
|
AND table_name = 'warteliste'
|
|
AND column_name = 'zeitraum_id'
|
|
) THEN CAST((SELECT COUNT(*) FROM warteliste WHERE zeitraum_id IS NOT NULL) AS CHAR)
|
|
ELSE 'COLUMN_MISSING'
|
|
END AS status;
|
|
|
|
SELECT
|
|
'data' AS check_type,
|
|
'warteliste_zeitraum rows' AS object_name,
|
|
CASE
|
|
WHEN EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.tables
|
|
WHERE table_schema = DATABASE()
|
|
AND table_name = 'warteliste_zeitraum'
|
|
) THEN CAST((SELECT COUNT(*) FROM warteliste_zeitraum) AS CHAR)
|
|
ELSE 'TABLE_MISSING'
|
|
END AS status;
|