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

108 lines
3.1 KiB
Markdown

# 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
```bash
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
```bash
# 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:
```bash
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.