from fastapi import APIRouter, Request, HTTPException from service_config import ServiceConfig router = APIRouter() service_config = ServiceConfig() service_config.load() @router.get("/list") def list_projects(): return service_config.projects @router.post("/add") async def add_project(request: Request): data = await request.json() project_name = data.get("project_name") if project_name in service_config.projects: raise HTTPException(status_code=400, detail="Project already exists") service_config.projects[project_name] = { "enabled": False, "versions": [] } with open(service_config.config_path, "w", encoding="utf-8") as f: import json json.dump(service_config, f, indent=2) return {"message": f"Project {project_name} added"} @router.post("/enable") async def enable_project(request: Request): data = await request.json() project_name = data.get("project_name") if project_name not in service_config.projects: raise HTTPException(status_code=404, detail="Project not found") service_config.projects[project_name]["enabled"] = True with open(service_config.config_path, "w", encoding="utf-8") as f: import json json.dump(service_config, f, indent=2) return {"message": f"Project {project_name} enabled"} @router.post("/disable") async def disable_project(request: Request): data = await request.json() project_name = data.get("project_name") if project_name not in service_config.projects: raise HTTPException(status_code=404, detail="Project not found") service_config.projects[project_name]["enabled"] = False with open(service_config.config_path, "w", encoding="utf-8") as f: import json json.dump(service_config, f, indent=2) return {"message": f"Project {project_name} disabled"} @router.delete("/delete") async def delete_project(request: Request): data = await request.json() project_name = data.get("project_name") if project_name not in service_config.projects: raise HTTPException(status_code=404, detail="Project not found") del service_config.projects[project_name] with open(service_config.config_path, "w", encoding="utf-8") as f: import json json.dump(service_config, f, indent=2) return {"message": f"Project {project_name} deleted"}