Files
spliteasy/app/main.py

38 lines
1.0 KiB
Python

from __future__ import annotations
from collections.abc import AsyncIterator
from contextlib import asynccontextmanager
from starlette.applications import Starlette
from starlette.middleware import Middleware
from starlette.routing import Route
from tortoise import Tortoise
from app.auth import OIDCAuthMiddleware, init_oidc
from app.config import settings
from app.resources.expenses import create_expense_report, list_expense_reports
@asynccontextmanager
async def lifespan(app: Starlette) -> AsyncIterator[None]:
await Tortoise.init(
db_url=settings.database_url,
modules={"models": ["app.models"]},
)
await Tortoise.generate_schemas(safe=True)
await init_oidc()
yield
await Tortoise.close_connections()
routes = [
Route("/api/expense-reports", endpoint=create_expense_report, methods=["POST"]),
Route("/api/expense-reports", endpoint=list_expense_reports, methods=["GET"]),
]
middleware = [
Middleware(OIDCAuthMiddleware),
]
app = Starlette(routes=routes, middleware=middleware, lifespan=lifespan)