# How to Apply the Rate Limits Migration

## Quick Start (Manual Application)

Since the Supabase CLI is not configured for this project, please follow these steps to apply the migration manually through the Supabase dashboard:

### Step 1: Access the SQL Editor

Open the Supabase SQL Editor in your browser:
```
https://app.supabase.com/project/mxadgucxhmstlzsbgmoz/sql
```

### Step 2: Copy the Migration SQL

Open the migration file:
```
supabase/migrations/20260125_create_rate_limits_table.sql
```

Copy the entire contents (approximately 42 lines of SQL).

### Step 3: Execute the Migration

1. In the SQL Editor, paste the copied SQL
2. Click the **"RUN"** button (or press `Ctrl+Enter` / `Cmd+Enter`)
3. Wait for the success message: "Success. No rows returned"

### Step 4: Verify the Table Was Created

**Option A: Using Table Editor**
1. Navigate to: https://app.supabase.com/project/mxadgucxhmstlzsbgmoz/editor
2. Look for **"rate_limits"** in the table list (left sidebar)
3. Click on it to see the table structure

**Option B: Using SQL Query**
Run this query in the SQL Editor:
```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 5 rows (one for each column):
- identifier (text)
- count (integer)
- window_start (timestamp with time zone)
- created_at (timestamp with time zone)
- updated_at (timestamp with time zone)

**Option C: Check Indexes**
Run this query to verify indexes were created:
```sql
SELECT
  indexname,
  indexdef
FROM pg_indexes
WHERE tablename = 'rate_limits';
```

You should see:
- Primary key on (identifier, window_start)
- idx_rate_limits_identifier_window
- idx_rate_limits_window_start

## Troubleshooting

### Error: "relation 'rate_limits' already exists"

The table is already created! No action needed. Verify it exists using the verification steps above.

### Error: "permission denied"

Make sure you're:
1. Logged into the correct Supabase account
2. Have admin/owner permissions on the project
3. Using the correct project URL

### Table not visible in Table Editor

1. Refresh the page (F5)
2. Check the SQL output for error messages
3. Try the SQL verification query in Option B above

### Need to Revert/Drop the Table?

If you need to start over, run this SQL:
```sql
DROP TABLE IF EXISTS rate_limits CASCADE;
```

Then re-apply the migration from Step 1.

## Alternative: Automated Scripts

We've provided scripts for automated migration, but they require additional setup:

### Using apply-migration.js (requires service role key)

1. Add `SUPABASE_SERVICE_ROLE_KEY` to `.env.local`
2. Run: `node scripts/apply-migration.js`

### Using Supabase CLI (if installed)

```bash
supabase migration up
```

## Next Steps

After the migration is applied successfully:
1. ✅ Verify the table exists (see Step 4 above)
2. ✅ Mark this subtask as complete
3. ✅ Proceed to Phase 2: Building the rate limiting utility
