Sindbad~EG File Manager
-- OPERATIONAL STATISTICS - DATABASE VERIFICATION SCRIPT
-- Run this script to verify all tables were created correctly
-- Usage: mysql -u username -p database_name < verify_operational_tables.sql
-- ============================================
-- SECTION 1: CHECK TABLE EXISTENCE
-- ============================================
SELECT '=== CHECKING TABLE EXISTENCE ===' AS '';
SELECT
CASE
WHEN COUNT(*) = 6 THEN '✓ SUCCESS: All 6 tables exist'
ELSE CONCAT('✗ ERROR: Only ', COUNT(*), ' of 6 tables found')
END AS 'Table Count Status'
FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name IN (
'assembly_worship_data',
'outreach_souls_data',
'baptism_events_data',
'worship_attendance_data',
'social_interventions_data',
'tithes_missions_data'
);
SELECT
table_name AS 'Table Name',
CASE
WHEN table_name IS NOT NULL THEN '✓ EXISTS'
ELSE '✗ MISSING'
END AS 'Status'
FROM (
SELECT 'assembly_worship_data' AS table_name
UNION SELECT 'outreach_souls_data'
UNION SELECT 'baptism_events_data'
UNION SELECT 'worship_attendance_data'
UNION SELECT 'social_interventions_data'
UNION SELECT 'tithes_missions_data'
) expected
LEFT JOIN information_schema.tables t
ON t.table_name = expected.table_name
AND t.table_schema = DATABASE();
-- ============================================
-- SECTION 2: CHECK TABLE STRUCTURES
-- ============================================
SELECT '=== CHECKING TABLE STRUCTURES ===' AS '';
-- Assembly Worship Data
SELECT
'assembly_worship_data' AS 'Table',
COUNT(*) AS 'Column Count',
CASE
WHEN COUNT(*) >= 20 THEN '✓ OK'
ELSE '✗ INCOMPLETE'
END AS 'Status'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'assembly_worship_data';
-- Outreach Souls Data
SELECT
'outreach_souls_data' AS 'Table',
COUNT(*) AS 'Column Count',
CASE
WHEN COUNT(*) >= 18 THEN '✓ OK'
ELSE '✗ INCOMPLETE'
END AS 'Status'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'outreach_souls_data';
-- Baptism Events Data
SELECT
'baptism_events_data' AS 'Table',
COUNT(*) AS 'Column Count',
CASE
WHEN COUNT(*) >= 28 THEN '✓ OK'
ELSE '✗ INCOMPLETE'
END AS 'Status'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'baptism_events_data';
-- Worship Attendance Data
SELECT
'worship_attendance_data' AS 'Table',
COUNT(*) AS 'Column Count',
CASE
WHEN COUNT(*) >= 21 THEN '✓ OK'
ELSE '✗ INCOMPLETE'
END AS 'Status'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'worship_attendance_data';
-- Social Interventions Data
SELECT
'social_interventions_data' AS 'Table',
COUNT(*) AS 'Column Count',
CASE
WHEN COUNT(*) >= 19 THEN '✓ OK'
ELSE '✗ INCOMPLETE'
END AS 'Status'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'social_interventions_data';
-- Tithes Missions Data
SELECT
'tithes_missions_data' AS 'Table',
COUNT(*) AS 'Column Count',
CASE
WHEN COUNT(*) >= 9 THEN '✓ OK'
ELSE '✗ INCOMPLETE'
END AS 'Status'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'tithes_missions_data';
-- ============================================
-- SECTION 3: CHECK FOREIGN KEYS
-- ============================================
SELECT '=== CHECKING FOREIGN KEY CONSTRAINTS ===' AS '';
SELECT
table_name AS 'Table',
COUNT(*) AS 'Foreign Keys',
CASE
WHEN COUNT(*) >= 3 THEN '✓ OK (area, district, assembly)'
ELSE '✗ MISSING CONSTRAINTS'
END AS 'Status'
FROM information_schema.key_column_usage
WHERE table_schema = DATABASE()
AND table_name IN (
'assembly_worship_data',
'outreach_souls_data',
'baptism_events_data',
'worship_attendance_data',
'social_interventions_data',
'tithes_missions_data'
)
AND referenced_table_name IS NOT NULL
GROUP BY table_name
ORDER BY table_name;
-- ============================================
-- SECTION 4: CHECK UNIQUE CONSTRAINTS
-- ============================================
SELECT '=== CHECKING UNIQUE CONSTRAINTS ===' AS '';
SELECT
table_name AS 'Table',
COUNT(DISTINCT constraint_name) AS 'Unique Constraints',
CASE
WHEN COUNT(DISTINCT constraint_name) >= 1 THEN '✓ OK (assembly_id unique)'
ELSE '✗ MISSING'
END AS 'Status'
FROM information_schema.table_constraints
WHERE table_schema = DATABASE()
AND table_name IN (
'assembly_worship_data',
'outreach_souls_data',
'baptism_events_data',
'worship_attendance_data',
'social_interventions_data',
'tithes_missions_data'
)
AND constraint_type = 'UNIQUE'
GROUP BY table_name
ORDER BY table_name;
-- ============================================
-- SECTION 5: CHECK GENERATED COLUMNS
-- ============================================
SELECT '=== CHECKING GENERATED/COMPUTED COLUMNS ===' AS '';
-- Assembly Worship - should have 2 generated columns
SELECT
'assembly_worship_data' AS 'Table',
COUNT(*) AS 'Generated Columns',
GROUP_CONCAT(column_name) AS 'Column Names',
CASE
WHEN COUNT(*) >= 2 THEN '✓ OK'
ELSE '✗ MISSING'
END AS 'Status'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'assembly_worship_data'
AND extra LIKE '%GENERATED%';
-- Outreach Souls - should have 1 generated column
SELECT
'outreach_souls_data' AS 'Table',
COUNT(*) AS 'Generated Columns',
GROUP_CONCAT(column_name) AS 'Column Names',
CASE
WHEN COUNT(*) >= 1 THEN '✓ OK'
ELSE '✗ MISSING'
END AS 'Status'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'outreach_souls_data'
AND extra LIKE '%GENERATED%';
-- Baptism Events - should have 5 generated columns
SELECT
'baptism_events_data' AS 'Table',
COUNT(*) AS 'Generated Columns',
GROUP_CONCAT(column_name) AS 'Column Names',
CASE
WHEN COUNT(*) >= 5 THEN '✓ OK'
ELSE '✗ MISSING'
END AS 'Status'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'baptism_events_data'
AND extra LIKE '%GENERATED%';
-- Social Interventions - should have 3 generated columns
SELECT
'social_interventions_data' AS 'Table',
COUNT(*) AS 'Generated Columns',
GROUP_CONCAT(column_name) AS 'Column Names',
CASE
WHEN COUNT(*) >= 3 THEN '✓ OK'
ELSE '✗ MISSING'
END AS 'Status'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'social_interventions_data'
AND extra LIKE '%GENERATED%';
-- Tithes Missions - should have 1 generated column
SELECT
'tithes_missions_data' AS 'Table',
COUNT(*) AS 'Generated Columns',
GROUP_CONCAT(column_name) AS 'Column Names',
CASE
WHEN COUNT(*) >= 1 THEN '✓ OK'
ELSE '✗ MISSING'
END AS 'Status'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'tithes_missions_data'
AND extra LIKE '%GENERATED%';
-- ============================================
-- SECTION 6: CHECK INDEXES
-- ============================================
SELECT '=== CHECKING INDEXES ===' AS '';
SELECT
table_name AS 'Table',
COUNT(DISTINCT index_name) AS 'Index Count',
CASE
WHEN COUNT(DISTINCT index_name) >= 4 THEN '✓ OK'
ELSE '⚠ FEW INDEXES'
END AS 'Status'
FROM information_schema.statistics
WHERE table_schema = DATABASE()
AND table_name IN (
'assembly_worship_data',
'outreach_souls_data',
'baptism_events_data',
'worship_attendance_data',
'social_interventions_data',
'tithes_missions_data'
)
GROUP BY table_name
ORDER BY table_name;
-- ============================================
-- SECTION 7: CHECK AUDIT FIELDS
-- ============================================
SELECT '=== CHECKING AUDIT FIELDS ===' AS '';
SELECT
table_name AS 'Table',
CASE
WHEN SUM(CASE WHEN column_name = 'created_by' THEN 1 ELSE 0 END) = 1
AND SUM(CASE WHEN column_name = 'updated_by' THEN 1 ELSE 0 END) = 1
AND SUM(CASE WHEN column_name = 'created_at' THEN 1 ELSE 0 END) = 1
AND SUM(CASE WHEN column_name = 'updated_at' THEN 1 ELSE 0 END) = 1
THEN '✓ ALL AUDIT FIELDS PRESENT'
ELSE '✗ MISSING AUDIT FIELDS'
END AS 'Status'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name IN (
'assembly_worship_data',
'outreach_souls_data',
'baptism_events_data',
'worship_attendance_data',
'social_interventions_data',
'tithes_missions_data'
)
GROUP BY table_name
ORDER BY table_name;
-- ============================================
-- SECTION 8: OVERALL SUMMARY
-- ============================================
SELECT '=== OVERALL VERIFICATION SUMMARY ===' AS '';
SELECT
'Total Tables Created' AS 'Metric',
COUNT(*) AS 'Value',
'6 expected' AS 'Expected'
FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name IN (
'assembly_worship_data',
'outreach_souls_data',
'baptism_events_data',
'worship_attendance_data',
'social_interventions_data',
'tithes_missions_data'
);
SELECT
'Total Columns' AS 'Metric',
COUNT(*) AS 'Value',
'~115 expected' AS 'Expected'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name IN (
'assembly_worship_data',
'outreach_souls_data',
'baptism_events_data',
'worship_attendance_data',
'social_interventions_data',
'tithes_missions_data'
);
SELECT
'Total Foreign Keys' AS 'Metric',
COUNT(*) AS 'Value',
'18 expected (3 per table)' AS 'Expected'
FROM information_schema.key_column_usage
WHERE table_schema = DATABASE()
AND table_name IN (
'assembly_worship_data',
'outreach_souls_data',
'baptism_events_data',
'worship_attendance_data',
'social_interventions_data',
'tithes_missions_data'
)
AND referenced_table_name IS NOT NULL;
SELECT
'Total Generated Columns' AS 'Metric',
COUNT(*) AS 'Value',
'12 expected' AS 'Expected'
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name IN (
'assembly_worship_data',
'outreach_souls_data',
'baptism_events_data',
'worship_attendance_data',
'social_interventions_data',
'tithes_missions_data'
)
AND extra LIKE '%GENERATED%';
-- ============================================
-- SECTION 9: SAMPLE DATA TEST
-- ============================================
SELECT '=== TESTING SAMPLE DATA INSERTION ===' AS '';
-- Test insert into assembly_worship_data (will fail if table doesn't exist or constraints are wrong)
-- Note: This assumes assembly_id 1 exists in your assemblies table
-- Uncomment the following lines to test:
/*
INSERT INTO assembly_worship_data (
area_id, district_id, assembly_id,
new_assemblies, closed_assemblies,
home_cell_meetings, home_cell_male_attendance, home_cell_female_attendance,
created_by
) VALUES (1, 1, 1, 1, 0, 10, 25, 20, 1)
ON DUPLICATE KEY UPDATE new_assemblies = 1;
SELECT
'Sample Insert Test' AS 'Test',
CASE
WHEN home_cell_total_attendance = 45 THEN '✓ Generated column working'
ELSE '✗ Generated column not working'
END AS 'Result'
FROM assembly_worship_data
WHERE assembly_id = 1
LIMIT 1;
*/
-- ============================================
-- FINAL STATUS
-- ============================================
SELECT '=== VERIFICATION COMPLETE ===' AS '';
SELECT 'Review the results above to ensure all checks passed.' AS 'Note';
SELECT 'Look for ✓ symbols - these indicate successful verification.' AS 'Tip';
SELECT 'Any ✗ symbols indicate issues that need to be resolved.' AS 'Warning';
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists