2.6 KiB
2.6 KiB
Story 1.3: Datenbank-Migrationen mit Alembic
Status: done
Story
Als Backend-Entwickler,
möchte ich Alembic-Migrationen für blueprints und council_runs,
so dass ich das Datenbankschema versioniert verwalten kann.
Acceptance Criteria
alembic upgrade headerstellt Tabellenblueprintsundcouncil_runsalembic currentzeigt die aktuelle Revisionblueprints-Tabelle hat:id(UUID),version(Int),name,nodes(JSON),edges(JSON),created_at,updated_atcouncil_runs-Tabelle hat:id,blueprint_id(nullable FK),input_topic,status,final_draft,critic_score,iteration_count,created_at,completed_at- SQLAlchemy async ORM-Modelle existieren für beide Tabellen
Tasks / Subtasks
- Task 1: Alembic-Konfiguration initialisieren (AC: 1, 2)
- Subtask 1.1:
alembic.inimitscript_locationkonfigurieren - Subtask 1.2:
alembic/env.pyfür async SQLAlchemy anpassen
- Subtask 1.1:
- Task 2: Migration 001 —
blueprints-Tabelle (AC: 3) - Task 3: Migration 002 —
council_runs-Tabelle (AC: 4) - Task 4: SQLAlchemy ORM-Modelle (AC: 5)
- Subtask 4.1:
models/blueprint.py - Subtask 4.2:
models/council_run.py
- Subtask 4.1:
- Task 5:
database.pymit async Engine und Session-Fabrik
Dev Notes
- Async SQLAlchemy mit
asyncpgfür PostgreSQL,aiosqlitefür Tests get_session()als FastAPI-Dependency für Dependency Injection- In Tests:
AsyncEnginemit In-Memory-SQLite,create_all()statt Alembic
Project Structure Notes
backend/alembic/versions/001_create_blueprints_table.pybackend/alembic/versions/002_create_council_runs_table.pybackend/models/blueprint.pybackend/models/council_run.pybackend/database.py
References
- [Source: _bmad-output/planning-artifacts/architecture.md#Datenbankschema]
- [Source: CLAUDE.md#Database — Alembic for migrations]
Dev Agent Record
Agent Model Used
Amelia (💻 BMAD Dev Agent)
Completion Notes List
- Alembic
env.pywurde für async Engine (run_async_migrations) angepasst. - ORM-Modelle nutzen
String(36)für UUIDs (portabel zwischen PostgreSQL und SQLite).
File List
backend/alembic.inibackend/alembic/env.pybackend/alembic/versions/001_create_blueprints_table.pybackend/alembic/versions/002_create_council_runs_table.pybackend/models/__init__.pybackend/models/blueprint.pybackend/models/council_run.pybackend/database.py