121 lines
3.6 KiB
Markdown
121 lines
3.6 KiB
Markdown
# MTG Online Backend - Context for Continuation
|
|
|
|
## Current State
|
|
I just completed fixing 10 issues with the MTG Online backend codebase. All fixes are in place but **have not yet been deployed or tested**.
|
|
|
|
## What Was Fixed
|
|
|
|
### Files Modified/Created:
|
|
1. **`app/routers/interactions.py`** - NEW - Comprehensive interaction search endpoints
|
|
2. **`app/main.py`** - REWRITTEN - Fixed router mounting and logging
|
|
3. **`app/routers/__init__.py`** - REWRITTEN - Added all router exports
|
|
4. **`Dockerfile`** - REWRITTEN - Added scripts directory and permissions
|
|
|
|
### Key Changes:
|
|
- All 8 routers now properly mounted in FastAPI
|
|
- Interaction endpoints: synergies, counters, evolutions, recommendations, search, stats
|
|
- Verbose logging with debug support
|
|
- Consistent async database usage
|
|
- Redis caching for performance
|
|
- Proper error handling throughout
|
|
|
|
## Next Steps - Execute These Commands
|
|
|
|
### Step 1: Stop all containers
|
|
```bash
|
|
cd /home/wall-o/projects/mtgonline
|
|
docker compose down -v
|
|
```
|
|
|
|
### Step 2: Build the backend
|
|
```bash
|
|
cd /home/wall-o/projects/mtgonline
|
|
docker compose build backend
|
|
```
|
|
|
|
### Step 3: Deploy the stack
|
|
```bash
|
|
cd /home/wall-o/projects/mtgonline
|
|
docker compose up -d
|
|
```
|
|
|
|
### Step 4: Wait for containers to start
|
|
```bash
|
|
# Watch logs in real-time
|
|
docker compose logs -f backend
|
|
```
|
|
|
|
### Step 5: Verify health
|
|
```bash
|
|
# Check all containers
|
|
docker compose ps
|
|
|
|
# Test health endpoint
|
|
curl -s http://localhost:5555/health | python -m json.tool
|
|
|
|
# Check API docs are accessible
|
|
curl -s http://localhost:5555/docs | head -20
|
|
```
|
|
|
|
### Step 6: Verify interaction endpoints
|
|
```bash
|
|
# List all registered routes
|
|
curl -s http://localhost:5555/openapi.json | python -m json.tool | grep -E '"path":|"/(interactions|cards|auth|users|decks|rooms|games|admin)"'
|
|
|
|
# Test interaction search endpoint
|
|
curl -s "http://localhost:5555/interactions/search/synergies?limit=5" | python -m json.tool
|
|
```
|
|
|
|
## Expected Success Indicators
|
|
- All containers show `healthy` status
|
|
- `/health` returns `{"status": "healthy", "version": "0.2.0"}`
|
|
- `/docs` returns OpenAPI JSON
|
|
- All routers appear in `/openapi.json`
|
|
- No Python import errors in logs
|
|
- Database connections successful
|
|
- Redis connection successful
|
|
|
|
## Troubleshooting
|
|
|
|
### If container fails to start:
|
|
```bash
|
|
# Check exit codes
|
|
docker compose ps
|
|
|
|
# View recent logs
|
|
docker compose logs --tail=100 backend
|
|
|
|
# Check if port 5555 is in use
|
|
sudo lsof -i :5555
|
|
```
|
|
|
|
### Common Issues:
|
|
1. **Import errors**: Check that all router files exist and have proper syntax
|
|
2. **Database connection**: Verify `.env` has correct database URLs
|
|
3. **Port conflicts**: Ensure no other service uses port 5555
|
|
4. **Permission issues**: Dockerfile should run as `appuser` not root
|
|
|
|
### To view database state:
|
|
```bash
|
|
# Connect to card database
|
|
docker exec -it mtgonline_db_card psql -U mtgonline -d mtgdata -c "\dt"
|
|
|
|
# Check tables
|
|
docker exec -it mtgonline_db_card psql -U mtgonline -d mtgdata -c "SELECT count(*) FROM mtg_cards;"
|
|
```
|
|
|
|
## Important Context
|
|
- Backend port: **5555** (not 8000!)
|
|
- Two PostgreSQL containers: `mtgdata` and `users`
|
|
- Redis for caching
|
|
- All code runs as `wall-o` user (UID 1001)
|
|
- Python venv at `/home/wall-o/workspace/venv`
|
|
|
|
## Files to Review if Issues Arise
|
|
- `/home/wall-o/projects/mtgonline/backend/app/main.py` - Router mounting
|
|
- `/home/wall-o/projects/mtgonline/backend/app/routers/interactions.py` - New endpoints
|
|
- `/home/wall-o/projects/mtgonline/backend/app/routers/__init__.py` - Exports
|
|
- `/home/wall-o/projects/mtgonline/backend/Dockerfile` - Container setup
|
|
- `/home/wall-o/projects/mtgonline/.env` - Configuration
|
|
- `/home/wall-o/projects/mtgonline/docker-compose.yml` - Stack definition
|