Vollständige Next.js 15 Portfolio-Website mit: - Blog-System mit 100+ Artikeln - Supabase-Integration - Responsive Design mit Tailwind CSS - TypeScript-Konfiguration - Testing-Setup mit Vitest und Playwright Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
86 lines
2.2 KiB
Markdown
86 lines
2.2 KiB
Markdown
# 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
|