Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, HTTPException | |
| from pydantic import BaseModel, Field | |
| from typing import Any, Dict, Optional | |
| from .manager import get_cms_manager | |
| router = APIRouter( | |
| prefix="/api/cms", | |
| tags=["CMS"] | |
| ) | |
| class ProjectPayload(BaseModel): | |
| project_id: str = Field(min_length=1, max_length=200) | |
| html: str = "" | |
| css: str = "" | |
| components: Optional[Any] = None | |
| styles: Optional[Any] = None | |
| async def get_project(project_id: str): | |
| project = get_cms_manager().get(project_id) | |
| if project is None: | |
| raise HTTPException( | |
| status_code=404, | |
| detail="Project not found" | |
| ) | |
| return project | |
| async def save_project( | |
| project_id: str, | |
| payload: ProjectPayload | |
| ): | |
| if project_id != payload.project_id: | |
| raise HTTPException( | |
| status_code=400, | |
| detail="project_id mismatch" | |
| ) | |
| return get_cms_manager().save( | |
| project_id, | |
| payload.model_dump() | |
| ) | |
| async def delete_project(project_id: str): | |
| deleted = get_cms_manager().delete(project_id) | |
| if not deleted: | |
| raise HTTPException( | |
| status_code=404, | |
| detail="Project not found" | |
| ) | |
| return { | |
| "deleted": True, | |
| "project_id": project_id | |
| } | |