Spaces:
Sleeping
Sleeping
| # api/routes_directory.py | |
| from __future__ import annotations | |
| from fastapi import APIRouter, HTTPException | |
| from pydantic import BaseModel | |
| from api.store import load_courses, load_workspaces, enrich_workspace_course_info, rename_workspace | |
| router = APIRouter() | |
| def get_course_directory(): | |
| courses = load_courses() | |
| return {"items": [c.model_dump() for c in courses]} | |
| def get_workspaces(): | |
| courses = load_courses() | |
| workspaces = load_workspaces() | |
| workspaces = enrich_workspace_course_info(workspaces, courses) | |
| return {"items": [w.model_dump() for w in workspaces]} | |
| class RenameWorkspaceBody(BaseModel): | |
| name: str | |
| def post_rename_workspace(workspace_id: str, body: RenameWorkspaceBody): | |
| name = (body.name or "").strip() | |
| if not name: | |
| raise HTTPException(status_code=400, detail="name is required") | |
| try: | |
| w = rename_workspace(workspace_id, name) | |
| return {"ok": True, "workspace": w.model_dump()} | |
| except KeyError as e: | |
| raise HTTPException(status_code=404, detail=str(e)) | |