backend: Pydantic response_models für 5 GET-Endpoints hinzufügen
- health.py: HealthResponse - eigenleben.py: EigenlebenOverviewResponse + SkillTextResponse - chronik.py: ChronikResponse + ChronikItem - wissen.py: WissenListResponse + WissenFileResponse - reminders.py: ReminderListResponse + ReminderOut py_compile bestanden, /docs zeigt neue Schemata. Response-Payloads unverändert — nur Typisierung hinzugefügt.
This commit is contained in:
@@ -6,6 +6,8 @@ import os
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from fastapi import APIRouter, HTTPException
|
||||
|
||||
router = APIRouter(prefix="/api")
|
||||
@@ -30,7 +32,27 @@ def _title_of(p: Path) -> str:
|
||||
return p.stem
|
||||
|
||||
|
||||
@router.get("/wissen")
|
||||
class VaultFile(BaseModel):
|
||||
path: str
|
||||
name: str
|
||||
dir: str
|
||||
title: str
|
||||
mtime: float
|
||||
neu: bool
|
||||
|
||||
|
||||
class WissenListResponse(BaseModel):
|
||||
available: bool
|
||||
files: list[VaultFile]
|
||||
|
||||
|
||||
class WissenFileResponse(BaseModel):
|
||||
path: str
|
||||
content: str
|
||||
mtime: float
|
||||
|
||||
|
||||
@router.get("/wissen", response_model=WissenListResponse)
|
||||
def list_vault() -> dict:
|
||||
"""Alle Markdown-Notizen des Vaults (relativer Pfad, Titel, Ordner, Alter)."""
|
||||
if not _available():
|
||||
@@ -54,7 +76,7 @@ def list_vault() -> dict:
|
||||
return {"available": True, "files": files}
|
||||
|
||||
|
||||
@router.get("/wissen/datei")
|
||||
@router.get("/wissen/datei", response_model=WissenFileResponse)
|
||||
def read_file(pfad: str) -> dict:
|
||||
"""Inhalt einer Vault-Notiz — Traversal hart geblockt (resolve + is_relative_to)."""
|
||||
if not _available():
|
||||
|
||||
Reference in New Issue
Block a user