# Supabase Migration Instructions ## Apply Migration: Create rate_limits Table ### Quick Steps 1. **Open Supabase SQL Editor** - Go to: https://app.supabase.com/project/mxadgucxhmstlzsbgmoz/sql 2. **Copy Migration SQL** - Open: `supabase/migrations/20260125_create_rate_limits_table.sql` - Copy all contents (Ctrl+A, Ctrl+C) 3. **Execute Migration** - Paste the SQL into the Supabase SQL editor - Click the "Run" button (or press Ctrl+Enter) - Wait for "Success. No rows returned" message 4. **Verify Table Creation** - Go to Table Editor: https://app.supabase.com/project/mxadgucxhmstlzsbgmoz/editor - Look for "rate_limits" table in the list - Click on it to verify the schema ### Expected Table Schema The `rate_limits` table should have: | Column | Type | Description | |--------|------|-------------| | identifier | TEXT | Client identifier (IP address) | | count | INTEGER | Number of requests in window | | window_start | TIMESTAMPTZ | Start of rate limit window | | created_at | TIMESTAMPTZ | When record was created | | updated_at | TIMESTAMPTZ | When record was last updated | **Primary Key:** (identifier, window_start) **Indexes:** - `idx_rate_limits_identifier_window` on (identifier, window_start DESC) - `idx_rate_limits_window_start` on (window_start) ### Alternative: Using Supabase CLI (if available) If you have Supabase CLI installed: ```bash supabase db push ``` Or apply the specific migration: ```bash supabase migration up ``` ### Verification Query Run this query in the SQL editor to verify the table exists: ```sql SELECT table_name, column_name, data_type, is_nullable FROM information_schema.columns WHERE table_name = 'rate_limits' ORDER BY ordinal_position; ``` You should see all 5 columns listed. ### Troubleshooting **Error: "relation already exists"** - The table already exists. You can verify by checking Table Editor. **Error: "permission denied"** - Make sure you're logged into the correct Supabase project. - Verify you have admin/owner access to the project. **Table not appearing in Table Editor** - Refresh the page (F5) - Check the SQL editor for any error messages - Verify the SQL was executed successfully