Database & Migrations

Database development guide for eval_752.

Technology

  • PostgreSQL 14+ - Database
  • SQLAlchemy - ORM
  • Alembic - Migrations

Creating Migrations

cd backend

# Auto-generate from model changes
uv run alembic revision --autogenerate -m "add new table"

# Review generated file in backend/alembic/versions/

# Apply migration
uv run alembic upgrade head

# Rollback
uv run alembic downgrade -1

Best Practices

  • Always review auto-generated migrations
  • Test both up and down migrations
  • Avoid data loss with multi-step migrations
  • Document breaking changes

Models

Models live in backend/src/eval_752/infra/models/:

from sqlalchemy.orm import Mapped, mapped_column

class Provider(Base):
    __tablename__ = "providers"

    id: Mapped[str] = mapped_column(primary_key=True)
    name: Mapped[str]
    base_url: Mapped[str]
    # ...

See existing models for patterns and conventions.