# 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