managarten/apps/picture/verify-db-setup.sql
Wuesteon ff80aeec1f refactor: restructure
monorepo with apps/ and services/
  directories
2025-11-26 03:03:24 +01:00

105 lines
3.8 KiB
SQL

-- VERIFICATION SCRIPT
-- Run this in Supabase SQL Editor to verify the migration was successful
-- ============================================================================
-- 1. CHECK TABLES
-- ============================================================================
SELECT 'job_queue table' as check_name,
CASE WHEN EXISTS (
SELECT FROM pg_tables WHERE schemaname = 'public' AND tablename = 'job_queue'
) THEN '✅ EXISTS' ELSE '❌ MISSING' END as status;
-- ============================================================================
-- 2. CHECK FUNCTIONS
-- ============================================================================
SELECT 'enqueue_job function' as check_name,
CASE WHEN EXISTS (
SELECT FROM pg_proc p
JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname = 'public' AND p.proname = 'enqueue_job'
) THEN '✅ EXISTS' ELSE '❌ MISSING' END as status
UNION ALL
SELECT 'claim_next_job function' as check_name,
CASE WHEN EXISTS (
SELECT FROM pg_proc p
JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname = 'public' AND p.proname = 'claim_next_job'
) THEN '✅ EXISTS' ELSE '❌ MISSING' END as status
UNION ALL
SELECT 'complete_job function' as check_name,
CASE WHEN EXISTS (
SELECT FROM pg_proc p
JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname = 'public' AND p.proname = 'complete_job'
) THEN '✅ EXISTS' ELSE '❌ MISSING' END as status;
-- ============================================================================
-- 3. CHECK VIEWS
-- ============================================================================
SELECT 'queue_health view' as check_name,
CASE WHEN EXISTS (
SELECT FROM pg_views WHERE schemaname = 'public' AND viewname = 'queue_health'
) THEN '✅ EXISTS' ELSE '❌ MISSING' END as status
UNION ALL
SELECT 'failed_jobs_recent view' as check_name,
CASE WHEN EXISTS (
SELECT FROM pg_views WHERE schemaname = 'public' AND viewname = 'failed_jobs_recent'
) THEN '✅ EXISTS' ELSE '❌ MISSING' END as status
UNION ALL
SELECT 'stuck_jobs view' as check_name,
CASE WHEN EXISTS (
SELECT FROM pg_views WHERE schemaname = 'public' AND viewname = 'stuck_jobs'
) THEN '✅ EXISTS' ELSE '❌ MISSING' END as status;
-- ============================================================================
-- 4. CHECK INDEXES
-- ============================================================================
SELECT
'Indexes on job_queue' as check_name,
COUNT(*)::text || ' indexes created' as status
FROM pg_indexes
WHERE schemaname = 'public' AND tablename = 'job_queue';
-- ============================================================================
-- 5. TEST ENQUEUE FUNCTION
-- ============================================================================
-- Create a test job
DO $$
DECLARE
v_job_id UUID;
BEGIN
SELECT enqueue_job(
'generate-image',
'{"test": true, "prompt": "Database verification test"}'::JSONB,
0
) INTO v_job_id;
RAISE NOTICE '✅ Test job created: %', v_job_id;
-- Clean up test job
DELETE FROM job_queue WHERE id = v_job_id;
RAISE NOTICE '✅ Test job cleaned up';
END $$;
-- ============================================================================
-- 6. FINAL STATUS
-- ============================================================================
SELECT
'🎉 DATABASE SETUP COMPLETE!' as message,
(SELECT COUNT(*) FROM pg_tables WHERE schemaname = 'public' AND tablename = 'job_queue') as tables_created,
(SELECT COUNT(*) FROM pg_proc p JOIN pg_namespace n ON p.pronamespace = n.oid WHERE n.nspname = 'public' AND p.proname IN ('enqueue_job', 'claim_next_job', 'complete_job')) as functions_created,
(SELECT COUNT(*) FROM pg_views WHERE schemaname = 'public' AND viewname IN ('queue_health', 'failed_jobs_recent', 'stuck_jobs')) as views_created;