SarahXia0405 commited on
Commit
10a4808
·
verified ·
1 Parent(s): a581a5b

Create routes_directory.py

Browse files
Files changed (1) hide show
  1. api/routes_directory.py +38 -0
api/routes_directory.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # api/routes_directory.py
2
+ from __future__ import annotations
3
+ from fastapi import APIRouter, HTTPException
4
+ from pydantic import BaseModel
5
+
6
+ from api.store import load_courses, load_workspaces, enrich_workspace_course_info, rename_workspace
7
+
8
+ router = APIRouter()
9
+
10
+
11
+ @router.get("/api/course-directory")
12
+ def get_course_directory():
13
+ courses = load_courses()
14
+ return {"items": [c.model_dump() for c in courses]}
15
+
16
+
17
+ @router.get("/api/workspaces")
18
+ def get_workspaces():
19
+ courses = load_courses()
20
+ workspaces = load_workspaces()
21
+ workspaces = enrich_workspace_course_info(workspaces, courses)
22
+ return {"items": [w.model_dump() for w in workspaces]}
23
+
24
+
25
+ class RenameWorkspaceBody(BaseModel):
26
+ name: str
27
+
28
+
29
+ @router.post("/api/workspaces/{workspace_id}/rename")
30
+ def post_rename_workspace(workspace_id: str, body: RenameWorkspaceBody):
31
+ name = (body.name or "").strip()
32
+ if not name:
33
+ raise HTTPException(status_code=400, detail="name is required")
34
+ try:
35
+ w = rename_workspace(workspace_id, name)
36
+ return {"ok": True, "workspace": w.model_dump()}
37
+ except KeyError as e:
38
+ raise HTTPException(status_code=404, detail=str(e))