church-api/simple_hymn_cleanup.sql
Benjamin Slingo da06dae89d NUCLEAR: Delete db_operations.rs entirely
- Remove entire utils/db_operations.rs file and all *Operations patterns
- Comment out imports to dead operations
- This breaks compilation temporarily but eliminates the maintenance nightmare
- Next: rewrite db:: modules to use direct SQL instead of operations
- Goal: Clean Handler → Service → Database pattern only
2025-08-28 21:36:14 -04:00

75 lines
2.4 KiB
SQL

-- Simple cleanup: Strip everything after hymn numbers, keep just the number
-- This will clean #415 - Christ the Lord, All Power Possessing "..." down to just #415
-- STEP 1: Preview what changes will be made (run this first to see what gets cleaned)
SELECT
id,
title,
date,
'divine_worship' as field,
divine_worship as before_cleanup,
REGEXP_REPLACE(
REGEXP_REPLACE(
REGEXP_REPLACE(divine_worship,
'#([0-9]{1,3})\s*-[^#\n]*', '#\1', 'g' -- #123 - anything -> #123
),
'Hymn\s+([0-9]{1,3})\s*-[^#\n]*', '#\1', 'g' -- Hymn 123 - anything -> #123
),
'No\.\s*([0-9]{1,3})\s*-[^#\n]*', '#\1', 'g' -- No. 123 - anything -> #123
) as after_cleanup
FROM bulletins
WHERE divine_worship ~ '(#|Hymn\s+|No\.\s*)[0-9]{1,3}\s*-'
UNION ALL
SELECT
id,
title,
date,
'sabbath_school' as field,
sabbath_school as before_cleanup,
REGEXP_REPLACE(
REGEXP_REPLACE(
REGEXP_REPLACE(sabbath_school,
'#([0-9]{1,3})\s*-[^#\n]*', '#\1', 'g' -- #123 - anything -> #123
),
'Hymn\s+([0-9]{1,3})\s*-[^#\n]*', '#\1', 'g' -- Hymn 123 - anything -> #123
),
'No\.\s*([0-9]{1,3})\s*-[^#\n]*', '#\1', 'g' -- No. 123 - anything -> #123
) as after_cleanup
FROM bulletins
WHERE sabbath_school ~ '(#|Hymn\s+|No\.\s*)[0-9]{1,3}\s*-'
ORDER BY date DESC;
-- STEP 2: Create backup before running cleanup
-- CREATE TABLE bulletins_backup AS SELECT * FROM bulletins;
-- STEP 3: Actually do the cleanup (uncomment after reviewing preview)
/*
UPDATE bulletins
SET divine_worship = REGEXP_REPLACE(
REGEXP_REPLACE(
REGEXP_REPLACE(divine_worship,
'#([0-9]{1,3})\s*-[^#\n]*', '#\1', 'g'
),
'Hymn\s+([0-9]{1,3})\s*-[^#\n]*', '#\1', 'g'
),
'No\.\s*([0-9]{1,3})\s*-[^#\n]*', '#\1', 'g'
)
WHERE divine_worship ~ '(#|Hymn\s+|No\.\s*)[0-9]{1,3}\s*-';
UPDATE bulletins
SET sabbath_school = REGEXP_REPLACE(
REGEXP_REPLACE(
REGEXP_REPLACE(sabbath_school,
'#([0-9]{1,3})\s*-[^#\n]*', '#\1', 'g'
),
'Hymn\s+([0-9]{1,3})\s*-[^#\n]*', '#\1', 'g'
),
'No\.\s*([0-9]{1,3})\s*-[^#\n]*', '#\1', 'g'
)
WHERE sabbath_school ~ '(#|Hymn\s+|No\.\s*)[0-9]{1,3}\s*-';
*/
-- STEP 4: Verify cleanup worked
-- SELECT COUNT(*) FROM bulletins WHERE divine_worship ~ '#[0-9]{1,3}\s*-' OR sabbath_school ~ '#[0-9]{1,3}\s*-';