🗄️ Supabase Database Setup Guide
🚨 Current Issue: Network Connectivity
The connection test is failing with [Errno 11003] getaddrinfo failed, which indicates a network resolution issue.
🔧 Troubleshooting Steps
1. Verify Database URL Format
Current URL: postgresql+asyncpg://postgres:@Jk=54##0@@6@1@db.txtxywmflduurfhfhnlu.supabase.co:5432/postgres
Issues identified:
- Password contains special characters that need URL encoding
- Missing password in the connection string
2. Fix Database URL
The correct format should be:
postgresql+asyncpg://postgres:PASSWORD@db.txtxywmflduurfhfhnlu.supabase.co:5432/postgres
Where PASSWORD should be URL-encoded if it contains special characters.
3. Alternative: Use SQLite for Testing
Since we have SQLite fallback configured, let's test with SQLite first:
# Update .env to use SQLite temporarily
DATABASE_URL="sqlite+aiosqlite:///./aegislm_test.db"
📋 Database Schema Overview
Once connected, the following tables will be created:
Core Tables
- ✅
users- User accounts and authentication - ✅
experiments- AI evaluation experiments - ✅
datasets- Dataset management - ✅
audit_trails- Audit logging
Business Tables
- ✅
subscriptions- User subscriptions - ✅
invoices- Billing invoices - ✅
payment_methods- Payment methods
Analytics Tables
- ✅
benchmarks- Performance benchmarks - ✅
analytics- Usage analytics - ✅
notifications- User notifications - ✅
system_logs- System logging
🚀 Next Steps
Option 1: Fix Supabase Connection
- Get the correct Supabase password
- URL-encode special characters
- Test connection again
Option 2: Use SQLite for Development
- Temporarily switch to SQLite
- Complete database schema testing
- Switch back to Supabase for production
Option 3: Manual Setup
- Use Supabase dashboard to create tables
- Import SQL schema manually
- Test with sample data
📄 SQL Schema (Manual Setup)
If needed, here's the basic SQL for manual table creation:
-- Users table
CREATE TABLE users (
id SERIAL PRIMARY KEY,
uuid UUID DEFAULT gen_random_uuid() UNIQUE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
full_name VARCHAR(255),
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Experiments table
CREATE TABLE experiments (
id SERIAL PRIMARY KEY,
uuid UUID DEFAULT gen_random_uuid() UNIQUE NOT NULL,
run_id UUID UNIQUE NOT NULL,
experiment_name VARCHAR(255) NOT NULL,
status VARCHAR(50) DEFAULT 'pending',
created_by INTEGER REFERENCES users(id),
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Add more tables as needed...
🎯 Recommendation
For now, let's use SQLite to continue with the "Making It Work" phase, then switch to Supabase once the connection is resolved.
This approach allows us to:
- ✅ Continue testing all components
- ✅ Validate database schema
- ✅ Test authentication system
- ✅ Complete Phase 4 testing
- ✅ Switch to Supabase later without code changes