mirror of
https://github.com/xtr-dev/rondevu-server.git
synced 2025-12-10 10:53:24 +00:00
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>
2.2 KiB
2.2 KiB
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:
npx wrangler dev
Production Setup
1. Create the D1 Database
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:
[[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
npx wrangler d1 execute rondevu-sessions --remote --file=./migrations/schema.sql
4. Deploy
npx wrangler deploy
Database Migrations
To run migrations on the remote database:
npx wrangler d1 execute rondevu-sessions --remote --file=./migrations/schema.sql
To run migrations on the local database:
npx wrangler d1 execute rondevu-sessions --local --file=./migrations/schema.sql
Querying the Database
Remote Database
# 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.