57 lines
1.4 KiB
Markdown
57 lines
1.4 KiB
Markdown
|
|
# Project Config: Isar to PostgreSQL Migration
|
||
|
|
|
||
|
|
## Goal
|
||
|
|
Migrate mnemo_cards_backend from embedded Isar database to production-ready PostgreSQL with Drift ORM.
|
||
|
|
|
||
|
|
## Stack
|
||
|
|
- **Database**: PostgreSQL 16
|
||
|
|
- **ORM**: Drift 2.14.0
|
||
|
|
- **Language**: Dart 3.0+
|
||
|
|
- **Backend**: Shelf framework
|
||
|
|
|
||
|
|
## Constraints
|
||
|
|
- Must maintain backward compatibility during migration
|
||
|
|
- Zero-downtime deployment preferred
|
||
|
|
- All existing functionality must work after migration
|
||
|
|
- Follow clean architecture principles
|
||
|
|
- Write unit tests for all new code
|
||
|
|
|
||
|
|
## Commands
|
||
|
|
```bash
|
||
|
|
# Setup PostgreSQL (Docker)
|
||
|
|
cd mnemo_cards_backend
|
||
|
|
docker-compose up -d postgres
|
||
|
|
|
||
|
|
# Install dependencies
|
||
|
|
dart pub get
|
||
|
|
|
||
|
|
# Generate Drift code
|
||
|
|
dart run build_runner build --delete-conflicting-outputs
|
||
|
|
|
||
|
|
# Run tests
|
||
|
|
dart test
|
||
|
|
|
||
|
|
# Format code
|
||
|
|
dart format .
|
||
|
|
|
||
|
|
# Analyze code
|
||
|
|
dart analyze
|
||
|
|
```
|
||
|
|
|
||
|
|
## Acceptance Criteria
|
||
|
|
- ✅ PostgreSQL running and accessible
|
||
|
|
- ✅ All Drift schemas created and generated
|
||
|
|
- ✅ All DAOs implemented with CRUD operations
|
||
|
|
- ✅ All existing code refactored to use Drift
|
||
|
|
- ✅ All unit tests pass
|
||
|
|
- ✅ Integration tests pass
|
||
|
|
- ✅ Docker image builds successfully
|
||
|
|
- ✅ Backend starts and connects to PostgreSQL
|
||
|
|
- ✅ API endpoints work correctly
|
||
|
|
|
||
|
|
## Environment Variables
|
||
|
|
- DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD
|
||
|
|
- DB_SSL_MODE (disable for dev, require for prod)
|
||
|
|
- PORT, SERVER_ADDRESS, WORK_DIR, DEBUG
|
||
|
|
- ADMIN_IDS, JWT_SECRET, JWT_REFRESH_SECRET
|