mirror of
https://github.com/xtr-dev/rondevu-server.git
synced 2025-12-10 10:53:24 +00:00
Replace KV storage with D1, add peer_id field, simplify README
Storage changes: - Remove KV storage adapter - Add D1 storage adapter for Cloudflare Workers - Update schema to use peer_id instead of info field - Add database migrations for D1 Documentation: - Simplify README to be more concise - Update deployment instructions for D1 - Add D1_SETUP.md explaining migration from KV - Update DEPLOYMENT.md with D1 setup steps API changes: - Replace info field with peerId in session creation - Update all storage interfaces and implementations 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
97
D1_SETUP.md
Normal file
97
D1_SETUP.md
Normal file
@@ -0,0 +1,97 @@
|
||||
# D1 Database Setup
|
||||
|
||||
This project uses Cloudflare D1 for storage instead of KV to avoid eventual consistency issues.
|
||||
|
||||
## Local Development
|
||||
|
||||
For local development, Wrangler automatically creates a local D1 database:
|
||||
|
||||
```bash
|
||||
npx wrangler dev
|
||||
```
|
||||
|
||||
## Production Setup
|
||||
|
||||
### 1. Create the D1 Database
|
||||
|
||||
```bash
|
||||
npx wrangler d1 create rondevu-sessions
|
||||
```
|
||||
|
||||
This will output something like:
|
||||
|
||||
```
|
||||
✅ Successfully created DB 'rondevu-sessions'
|
||||
|
||||
[[d1_databases]]
|
||||
binding = "DB"
|
||||
database_name = "rondevu-sessions"
|
||||
database_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
||||
```
|
||||
|
||||
### 2. Update wrangler.toml
|
||||
|
||||
Copy the `database_id` from the output and update it in `wrangler.toml`:
|
||||
|
||||
```toml
|
||||
[[d1_databases]]
|
||||
binding = "DB"
|
||||
database_name = "rondevu-sessions"
|
||||
database_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # Replace with your actual ID
|
||||
```
|
||||
|
||||
### 3. Initialize the Database Schema
|
||||
|
||||
```bash
|
||||
npx wrangler d1 execute rondevu-sessions --remote --file=./migrations/schema.sql
|
||||
```
|
||||
|
||||
### 4. Deploy
|
||||
|
||||
```bash
|
||||
npx wrangler deploy
|
||||
```
|
||||
|
||||
## Database Migrations
|
||||
|
||||
To run migrations on the remote database:
|
||||
|
||||
```bash
|
||||
npx wrangler d1 execute rondevu-sessions --remote --file=./migrations/schema.sql
|
||||
```
|
||||
|
||||
To run migrations on the local database:
|
||||
|
||||
```bash
|
||||
npx wrangler d1 execute rondevu-sessions --local --file=./migrations/schema.sql
|
||||
```
|
||||
|
||||
## Querying the Database
|
||||
|
||||
### Remote Database
|
||||
|
||||
```bash
|
||||
# List all sessions
|
||||
npx wrangler d1 execute rondevu-sessions --remote --command="SELECT * FROM sessions"
|
||||
|
||||
# Count sessions
|
||||
npx wrangler d1 execute rondevu-sessions --remote --command="SELECT COUNT(*) FROM sessions"
|
||||
|
||||
# Delete expired sessions
|
||||
npx wrangler d1 execute rondevu-sessions --remote --command="DELETE FROM sessions WHERE expires_at <= $(date +%s)000"
|
||||
```
|
||||
|
||||
### Local Database
|
||||
|
||||
Replace `--remote` with `--local` for local queries.
|
||||
|
||||
## Why D1 Instead of KV?
|
||||
|
||||
D1 provides:
|
||||
- **Strong consistency** - No race conditions from eventual consistency
|
||||
- **ACID transactions** - Atomic updates prevent data corruption
|
||||
- **SQL queries** - More powerful query capabilities
|
||||
- **Relational data** - Better for complex queries and joins
|
||||
- **No propagation delay** - Immediate read-after-write consistency
|
||||
|
||||
KV's eventual consistency was causing race conditions where ICE candidate updates would overwrite answers with stale data.
|
||||
Reference in New Issue
Block a user