# 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
