forked from andika/membership-be
81 lines
2.3 KiB
SQL
81 lines
2.3 KiB
SQL
-- ============================================================================
|
|
-- Database Diagnostic Script
|
|
-- Run this to check what exists in your database
|
|
-- ============================================================================
|
|
|
|
\echo '=== CHECKING ENUMS ==='
|
|
SELECT
|
|
t.typname as enum_name,
|
|
string_agg(e.enumlabel, ', ' ORDER BY e.enumsortorder) as values
|
|
FROM pg_type t
|
|
JOIN pg_enum e ON t.oid = e.enumtypid
|
|
WHERE t.typname IN (
|
|
'userstatus', 'userrole', 'rsvpstatus', 'subscriptionstatus',
|
|
'donationtype', 'donationstatus', 'invitationstatus', 'importjobstatus'
|
|
)
|
|
GROUP BY t.typname
|
|
ORDER BY t.typname;
|
|
|
|
\echo ''
|
|
\echo '=== CHECKING TABLES ==='
|
|
SELECT
|
|
schemaname,
|
|
tablename
|
|
FROM pg_tables
|
|
WHERE schemaname = 'public'
|
|
ORDER BY tablename;
|
|
|
|
\echo ''
|
|
\echo '=== CHECKING USERS TABLE STRUCTURE ==='
|
|
SELECT
|
|
column_name,
|
|
data_type,
|
|
is_nullable,
|
|
column_default
|
|
FROM information_schema.columns
|
|
WHERE table_name = 'users'
|
|
ORDER BY ordinal_position;
|
|
|
|
\echo ''
|
|
\echo '=== CHECKING FOR CRITICAL FIELDS ==='
|
|
\echo 'Checking if reminder tracking fields exist...'
|
|
SELECT EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.columns
|
|
WHERE table_name = 'users'
|
|
AND column_name = 'email_verification_reminders_sent'
|
|
) as has_reminder_fields;
|
|
|
|
\echo ''
|
|
\echo 'Checking if accepts_tos field exists (should be accepts_tos, not tos_accepted)...'
|
|
SELECT column_name
|
|
FROM information_schema.columns
|
|
WHERE table_name = 'users'
|
|
AND column_name IN ('accepts_tos', 'tos_accepted');
|
|
|
|
\echo ''
|
|
\echo 'Checking if WordPress import fields exist...'
|
|
SELECT EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.columns
|
|
WHERE table_name = 'users'
|
|
AND column_name = 'import_source'
|
|
) as has_import_fields;
|
|
|
|
\echo ''
|
|
\echo '=== CHECKING IMPORT_JOBS TABLE ==='
|
|
SELECT column_name
|
|
FROM information_schema.columns
|
|
WHERE table_name = 'import_jobs'
|
|
ORDER BY ordinal_position;
|
|
|
|
\echo ''
|
|
\echo '=== SUMMARY ==='
|
|
SELECT
|
|
(SELECT COUNT(*) FROM pg_type WHERE typname IN (
|
|
'userstatus', 'userrole', 'rsvpstatus', 'subscriptionstatus',
|
|
'donationtype', 'donationstatus', 'invitationstatus', 'importjobstatus'
|
|
)) as enum_count,
|
|
(SELECT COUNT(*) FROM pg_tables WHERE schemaname = 'public') as table_count,
|
|
(SELECT COUNT(*) FROM information_schema.columns WHERE table_name = 'users') as users_column_count;
|