teecup/app/main.py

40 lines
995 B
Python
Raw Normal View History

2026-07-16 07:26:04 +02:00
"""
TeeCup API.
2026-07-16 07:26:04 +02:00
App-factory + livssyklus. All forretningslogikk ligger i app/routers/ hver
rute der følger samme mønster: Depends(get_authorized_org) verifiserer
medlemskap, org_connection(organization_id) setter RLS-konteksten lokalt for
transaksjonen. Se ARCHITECTURE_DECISIONS.md (ADR-001013) for reglene bak.
2026-07-16 07:26:04 +02:00
Kjøres i app-containeren (FastAPI + asyncpg + uvicorn):
uvicorn app.main:app --host 0.0.0.0 --port 8000
"""
from contextlib import asynccontextmanager
from fastapi import FastAPI
2026-07-16 07:26:04 +02:00
from .db import init_pool, close_pool
from .routers import matches, players, tournaments
2026-07-16 07:26:04 +02:00
@asynccontextmanager
async def lifespan(app: FastAPI):
await init_pool()
try:
yield
finally:
await close_pool()
app = FastAPI(title="TeeCup API", lifespan=lifespan)
app.include_router(players.router)
app.include_router(tournaments.router)
app.include_router(matches.router)
2026-07-16 07:26:04 +02:00
@app.get("/health")
async def health() -> dict[str, str]:
return {"status": "ok"}