Files
takeyourmeds/server/api/content.py
T
Frank Schwenk 88bdf6f34b feat: overhaul with modular API, agent endpoints, migrations, backup and tests
- Split monolithic app.py into server/api/ routers
- Add Pydantic schemas for input validation
- Add /agent/* API with separate AGENT_TOKEN auth
- Replace static schema.sql with versioned migrations (datenerhaltend)
- Add tools/backup_db.py for SQLite backups
- Add Dockerfile HEALTHCHECK and compose.yml AGENT_TOKEN env
- Add pytest tests for user and agent API
- Update README with API docs and deployment safety notes
- Bump version to 1.2.0
2026-09-21 12:46:44 +02:00

36 lines
1021 B
Python

from __future__ import annotations
from fastapi import APIRouter, Depends
from fastapi.responses import JSONResponse
from server.ai import get_daily_motivation, get_roast_of_the_day
from server.auth import require_auth
from server.config_loader import load_meds_config
from server.db import get_db
router = APIRouter(prefix="/api", tags=["content"])
NO_STORE = {"Cache-Control": "no-store"}
@router.get("/roast")
async def get_roast(_: dict = Depends(require_auth)) -> JSONResponse:
config = load_meds_config()
db = await get_db()
try:
data = await get_roast_of_the_day(db, config.timezone)
finally:
await db.close()
return JSONResponse(data, headers=NO_STORE)
@router.get("/motivation")
async def get_motivation(_: dict = Depends(require_auth)) -> JSONResponse:
config = load_meds_config()
db = await get_db()
try:
data = await get_daily_motivation(db, config.timezone)
finally:
await db.close()
return JSONResponse(data, headers=NO_STORE)