97 lines
3.6 KiB
Markdown
97 lines
3.6 KiB
Markdown
# MTG Online Backend - Docker Migration Plan
|
|
|
|
## Overview
|
|
Migrate from internal database to Dockerized PostgreSQL with mtgjson.com "All Printings" dataset.
|
|
|
|
## Architecture
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Docker Compose │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ ┌─────────────────────┐ ┌──────────────────────────┐ │
|
|
│ │ Backend Container │───▶│ PostgreSQL Container │ │
|
|
│ │ (FastAPI app) │ │ (MTG Data + App DB) │ │
|
|
│ │ │ │ │ │
|
|
│ │ - API endpoints │ │ - mtgonline_db (app) │ │
|
|
│ │ - Auth system │ │ - mtgdata_db (mtgjson) │ │
|
|
│ │ - Weekly refresh │ │ │ │
|
|
│ └─────────────────────┘ └──────────────────────────┘ │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
## Tasks
|
|
|
|
### 1. mtgjson Dataset Analysis
|
|
- [x] Download and examine All Printings dataset
|
|
- [ ] Map mtgjson schema to SQLAlchemy models
|
|
- [ ] Identify card image files (PNG/JPG)
|
|
- [ ] Plan database schema for card data
|
|
|
|
### 2. Docker Infrastructure
|
|
- [ ] Create Dockerfile for backend
|
|
- [ ] Create docker-compose.yml with PostgreSQL
|
|
- [ ] Configure environment variables
|
|
- [ ] Set up volume mounts for data persistence
|
|
- [ ] Configure health checks
|
|
|
|
### 3. Database Migration
|
|
- [ ] Create migration script for mtgjson schema
|
|
- [ ] Update models.py with MTG card models
|
|
- [ ] Add multi-database support (mtgonline + mtgdata)
|
|
- [ ] Create schema for weekly refresh
|
|
|
|
### 4. Weekly Refresh Logic
|
|
- [ ] Create refresh script to download latest mtgjson
|
|
- [ ] Implement incremental update logic
|
|
- [ ] Add database cleanup for unused cards
|
|
- [ ] Schedule via cron in Docker container
|
|
|
|
### 5. Card Image Support
|
|
- [ ] Verify image files in dataset (setJSON)
|
|
- [ ] Add image storage/CDN support
|
|
- [ ] Create API endpoints for card images
|
|
|
|
## Files to Create/Modify
|
|
|
|
### Docker Files
|
|
- `backend/Dockerfile`
|
|
- `docker-compose.yml`
|
|
- `backend/.dockerignore`
|
|
|
|
### Database Migration
|
|
- `backend/app/core/database_multi.py` (multi-database support)
|
|
- `backend/scripts/refresh_mtg.py` (weekly refresh)
|
|
- `backend/scripts/init_mtg_db.py` (initial mtgjson import)
|
|
|
|
### Configuration
|
|
- `backend/.env.example` (updated with Docker settings)
|
|
- `backend/app/core/settings.py` (add MTG settings)
|
|
|
|
### Models
|
|
- `backend/app/models/mtg_models.py` (mtgjson card models)
|
|
- `backend/app/models/models.py` (update for multi-DB)
|
|
|
|
## Commands
|
|
|
|
### Build and Run
|
|
```bash
|
|
cd /home/wall-o/projects/mtgonline
|
|
docker-compose up -d
|
|
docker-compose logs -f backend
|
|
```
|
|
|
|
### Database Refresh
|
|
```bash
|
|
docker-compose exec backend python -m app.scripts.refresh_mtg
|
|
```
|
|
|
|
### Check Status
|
|
```bash
|
|
docker-compose ps
|
|
docker-compose logs backend
|
|
```
|
|
|
|
## Status: IN PROGRESS
|
|
- Current step: Creating Docker infrastructure
|
|
- Next: Download mtgjson dataset and analyze schema
|