29 lines
900 B
Python
29 lines
900 B
Python
from __future__ import annotations
|
|
|
|
from fastapi import FastAPI
|
|
|
|
from app.infrastructure.db.sqlalchemy.models import Base
|
|
from app.infrastructure.db.sqlalchemy.session import get_engine
|
|
from app.presentation.api.v1.health import router as health_router
|
|
from app.presentation.api.v1.users import router as users_router
|
|
|
|
|
|
def create_app() -> FastAPI:
|
|
app = FastAPI(title="DDD Onion FastAPI Demo", version="1.0.0")
|
|
|
|
app.include_router(health_router)
|
|
app.include_router(users_router)
|
|
|
|
@app.on_event("startup")
|
|
async def on_startup() -> None:
|
|
# демо-миграция: создать таблицы при старте
|
|
# в проде делай Alembic, но файл models.py уже готов.
|
|
engine = get_engine()
|
|
async with engine.begin() as conn:
|
|
await conn.run_sync(Base.metadata.create_all)
|
|
|
|
return app
|
|
|
|
|
|
app = create_app()
|