Files
cloudlense/frontend/database-fixes.sql
T
Dennis 50e25e3ee8 refactor: flatten monorepo structure to backend/ frontend/ devops/
Rename subdirectories for a cleaner single-repo layout:
- website-monitoring-backend/  → backend/
- website-monitoring-frontend/ → frontend/
- website-monitoring-devops/   → devops/

Update all references in package.json scripts, CI workflows,
docker-compose, pre-commit hooks, and documentation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-07 00:25:29 +01:00

81 lines
3.5 KiB
SQL

-- Database Fixes for Website Monitoring Frontend
-- Run this in your Supabase SQL editor to fix the console errors
-- 1. Add missing columns to crawl_sessions table that the API expects
ALTER TABLE crawl_sessions ADD COLUMN IF NOT EXISTS total_urls INTEGER DEFAULT 0;
ALTER TABLE crawl_sessions ADD COLUMN IF NOT EXISTS processed_urls INTEGER DEFAULT 0;
ALTER TABLE crawl_sessions ADD COLUMN IF NOT EXISTS progress_percentage INTEGER DEFAULT 0;
-- 2. Ensure all required columns exist in crawl_sessions table
ALTER TABLE crawl_sessions ADD COLUMN IF NOT EXISTS pages_discovered INTEGER DEFAULT 0;
ALTER TABLE crawl_sessions ADD COLUMN IF NOT EXISTS pages_processed INTEGER DEFAULT 0;
ALTER TABLE crawl_sessions ADD COLUMN IF NOT EXISTS current_url VARCHAR;
ALTER TABLE crawl_sessions ADD COLUMN IF NOT EXISTS error_message TEXT;
ALTER TABLE crawl_sessions ADD COLUMN IF NOT EXISTS metadata JSONB DEFAULT '{}'::jsonb;
-- 3. Add missing columns to users table if they don't exist
ALTER TABLE users ADD COLUMN IF NOT EXISTS created_at TIMESTAMPTZ DEFAULT NOW();
ALTER TABLE users ADD COLUMN IF NOT EXISTS last_login_at TIMESTAMPTZ;
ALTER TABLE users ADD COLUMN IF NOT EXISTS role VARCHAR DEFAULT 'member';
-- 4. Add missing columns to organizations table if they don't exist
ALTER TABLE organizations ADD COLUMN IF NOT EXISTS api_key TEXT;
ALTER TABLE organizations ADD COLUMN IF NOT EXISTS max_websites INTEGER DEFAULT 10;
ALTER TABLE organizations ADD COLUMN IF NOT EXISTS max_scans_per_month INTEGER DEFAULT 1000;
ALTER TABLE organizations ADD COLUMN IF NOT EXISTS subscription_status VARCHAR DEFAULT 'active';
-- 5. Create indexes for better performance
CREATE INDEX IF NOT EXISTS idx_crawl_sessions_status ON crawl_sessions(status);
CREATE INDEX IF NOT EXISTS idx_crawl_sessions_website_status ON crawl_sessions(website_id, status);
CREATE INDEX IF NOT EXISTS idx_users_organization_id ON users(organization_id);
CREATE INDEX IF NOT EXISTS idx_websites_organization_id ON websites(organization_id);
-- 6. Ensure RLS policies exist for crawl_sessions
-- Enable RLS if not already enabled
ALTER TABLE crawl_sessions ENABLE ROW LEVEL SECURITY;
-- Create basic RLS policy for crawl_sessions if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_policies
WHERE tablename = 'crawl_sessions'
AND policyname = 'Allow read for authenticated users'
) THEN
CREATE POLICY "Allow read for authenticated users" ON crawl_sessions
FOR SELECT USING (true);
END IF;
IF NOT EXISTS (
SELECT 1 FROM pg_policies
WHERE tablename = 'crawl_sessions'
AND policyname = 'Allow insert for authenticated users'
) THEN
CREATE POLICY "Allow insert for authenticated users" ON crawl_sessions
FOR INSERT WITH CHECK (true);
END IF;
IF NOT EXISTS (
SELECT 1 FROM pg_policies
WHERE tablename = 'crawl_sessions'
AND policyname = 'Allow update for authenticated users'
) THEN
CREATE POLICY "Allow update for authenticated users" ON crawl_sessions
FOR UPDATE USING (true);
END IF;
END $$;
-- 7. Refresh Supabase schema cache to pick up new columns
-- This is important to resolve "Could not find column in schema cache" errors
NOTIFY pgrst, 'reload schema';
-- 8. Verify the fixes by checking table structure
-- You can run these queries to verify the fixes worked:
-- SELECT column_name, data_type, is_nullable, column_default
-- FROM information_schema.columns
-- WHERE table_name = 'crawl_sessions'
-- ORDER BY ordinal_position;
COMMIT;