
Complete church management system with bulletin management, media processing, live streaming integration, and web interface. Includes authentication, email notifications, database migrations, and comprehensive test suite.
90 lines
3 KiB
SQL
90 lines
3 KiB
SQL
-- Verification script to check HTML entity cleaning migration results
|
|
-- Run this after the migration to verify it worked correctly
|
|
|
|
-- Check if the cleaning function exists
|
|
SELECT
|
|
'clean_html_entities function: ' ||
|
|
CASE WHEN EXISTS (
|
|
SELECT 1 FROM pg_proc p
|
|
JOIN pg_namespace n ON p.pronamespace = n.oid
|
|
WHERE p.proname = 'clean_html_entities' AND n.nspname = 'public'
|
|
) THEN '✓ EXISTS' ELSE '✗ MISSING' END as function_status;
|
|
|
|
-- Count records that still have HTML entities (should be 0 after migration)
|
|
SELECT
|
|
'Records with HTML tags in bulletins: ' || COUNT(*) as bulletin_html_tags
|
|
FROM bulletins
|
|
WHERE
|
|
title ~ '<[^>]*>' OR
|
|
sabbath_school ~ '<[^>]*>' OR
|
|
divine_worship ~ '<[^>]*>' OR
|
|
scripture_reading ~ '<[^>]*>' OR
|
|
sunset ~ '<[^>]*>';
|
|
|
|
SELECT
|
|
'Records with HTML entities in bulletins: ' || COUNT(*) as bulletin_html_entities
|
|
FROM bulletins
|
|
WHERE
|
|
title ~ '&(nbsp|amp|lt|gt|quot|#39);' OR
|
|
sabbath_school ~ '&(nbsp|amp|lt|gt|quot|#39);' OR
|
|
divine_worship ~ '&(nbsp|amp|lt|gt|quot|#39);' OR
|
|
scripture_reading ~ '&(nbsp|amp|lt|gt|quot|#39);' OR
|
|
sunset ~ '&(nbsp|amp|lt|gt|quot|#39);';
|
|
|
|
SELECT
|
|
'Records with HTML tags in events: ' || COUNT(*) as event_html_tags
|
|
FROM events
|
|
WHERE
|
|
title ~ '<[^>]*>' OR
|
|
description ~ '<[^>]*>' OR
|
|
location ~ '<[^>]*>' OR
|
|
location_url ~ '<[^>]*>' OR
|
|
approved_from ~ '<[^>]*>';
|
|
|
|
SELECT
|
|
'Records with HTML entities in events: ' || COUNT(*) as event_html_entities
|
|
FROM events
|
|
WHERE
|
|
title ~ '&(nbsp|amp|lt|gt|quot|#39);' OR
|
|
description ~ '&(nbsp|amp|lt|gt|quot|#39);' OR
|
|
location ~ '&(nbsp|amp|lt|gt|quot|#39);' OR
|
|
location_url ~ '&(nbsp|amp|lt|gt|quot|#39);' OR
|
|
approved_from ~ '&(nbsp|amp|lt|gt|quot|#39);';
|
|
|
|
-- Show some sample cleaned data
|
|
SELECT
|
|
'Sample bulletin titles after cleaning:' as sample_data;
|
|
|
|
SELECT
|
|
SUBSTRING(title, 1, 50) || (CASE WHEN LENGTH(title) > 50 THEN '...' ELSE '' END) as cleaned_titles
|
|
FROM bulletins
|
|
WHERE title IS NOT NULL
|
|
ORDER BY updated_at DESC
|
|
LIMIT 5;
|
|
|
|
SELECT
|
|
'Sample event descriptions after cleaning:' as sample_data;
|
|
|
|
SELECT
|
|
SUBSTRING(description, 1, 80) || (CASE WHEN LENGTH(description) > 80 THEN '...' ELSE '' END) as cleaned_descriptions
|
|
FROM events
|
|
WHERE description IS NOT NULL
|
|
ORDER BY updated_at DESC
|
|
LIMIT 3;
|
|
|
|
-- Check when records were last updated (should show recent timestamps if migration ran)
|
|
SELECT
|
|
'Recently updated bulletins: ' || COUNT(*) || ' (updated in last hour)' as recent_bulletins
|
|
FROM bulletins
|
|
WHERE updated_at > NOW() - INTERVAL '1 hour';
|
|
|
|
SELECT
|
|
'Recently updated events: ' || COUNT(*) || ' (updated in last hour)' as recent_events
|
|
FROM events
|
|
WHERE updated_at > NOW() - INTERVAL '1 hour';
|
|
|
|
-- Summary
|
|
SELECT '===============================================' as summary;
|
|
SELECT 'MIGRATION VERIFICATION COMPLETE' as summary;
|
|
SELECT 'If all HTML tag/entity counts above are 0, the migration was successful!' as summary;
|
|
SELECT '===============================================' as summary; |