Files
dwroller/database/MIGRATION_COMPLETE.md
2025-08-15 10:35:27 +02:00

3.1 KiB

Database Migration: MongoDB to SQLite

Migration Complete!

Your Deathwatch roller application has been successfully migrated from MongoDB to SQLite.

What Was Done

  1. Data Export: All player data was exported from MongoDB to a backup file
  2. SQLite Setup: Created SQLite database with proper schema
  3. Data Migration: Transferred all players and their data to SQLite
  4. API Update: Updated server routes to use SQLite instead of MongoDB

Migration Results

  • Total players migrated: 3
  • Players: christoffer, claes, phillip
  • Data preserved: All player info, requisition points, inventory data
  • Backup created: mongo-backup.json (safely stores original data)

Files Created/Modified

New Files:

  • sqlite-db.js - SQLite database handler
  • routes/playerRoutes-sqlite.js - Updated API routes for SQLite
  • server-sqlite.js - SQLite server configuration
  • migrate-to-sqlite.js - Migration script
  • switch-db.sh - Database switching utility
  • mongo-backup.json - Complete backup of MongoDB data
  • sqlite/deathwatch.db - SQLite database file

Modified Files:

  • server.js - Now uses SQLite (MongoDB version backed up as server-mongo-backup.js)
  • package.json - Added convenience scripts

Usage

Current Status

  • SQLite is active
  • Server running on port 3005 (or PORT env variable)
  • All data migrated successfully

New NPM Scripts

npm run server        # Start the server
npm run db:sqlite     # Switch to SQLite (current)
npm run db:mongo      # Switch back to MongoDB
npm run db:migrate    # Re-run migration
npm run db:export     # Export MongoDB data only

Manual Operations

# Switch to SQLite
cd database && ./switch-db.sh sqlite

# Switch to MongoDB
cd database && ./switch-db.sh mongo

# Re-run migration
cd database && node migrate-to-sqlite.js

# Start server
cd database && node server.js

Benefits of SQLite

  1. Simpler Deployment: No separate database service needed
  2. Single File Database: Easy backups and transfers
  3. Better for Small Apps: Perfect for gaming groups
  4. Zero Configuration: Works out of the box
  5. ACID Compliant: Reliable data integrity

Data Structure

The SQLite database maintains the same structure as MongoDB:

  • players table with JSON columns for rollerInfo, shopInfo, tabInfo
  • All existing player data preserved
  • Password hashing maintained
  • Timestamps added for better tracking

Rollback

If you need to go back to MongoDB:

npm run db:mongo

This will restore your original MongoDB configuration. Your MongoDB data is unchanged.

File Locations

  • SQLite Database: database/sqlite/deathwatch.db
  • MongoDB Backup: database/mongo-backup.json
  • Server Logs: database/backend.log

API Compatibility

The API endpoints remain exactly the same:

  • GET /api/players - List all players
  • GET /api/players/:name - Get specific player
  • PUT /api/players/:name - Update player
  • POST /api/players - Create player
  • DELETE /api/players/:name - Delete player

Your frontend (React app) requires no changes.