Files
ai-rpg/app/migrations/versions/_001_initial_schema.py

30 lines
1020 B
Python
Raw Normal View History

2026-06-20 19:13:05 +03:00
"""Initial schema migration — creates all tables.
This is a hand-rolled async migration that creates all tables defined in
`app.models` via SQLAlchemy `Base.metadata.create_all`. It is the equivalent
of alembic migration 001.
For real-world deployments the project includes an `alembic.ini` and
`alembic env.py` so that incremental migrations can be added but for the
MVP we use this single idempotent script.
"""
from __future__ import annotations
from sqlalchemy.ext.asyncio import AsyncEngine
from app.db import Base
from app.models import * # noqa: F401,F403 — ensure all models are imported
async def create_all_tables(engine: AsyncEngine) -> None:
"""Create all tables defined on Base.metadata. Idempotent."""
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.create_all)
async def drop_all_tables(engine: AsyncEngine) -> None:
"""Drop all tables. Used in tests."""
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.drop_all)