From 221ebfe8d5a45df3038c2b1da14a4a993b877df3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= <78488229+viktor138irk@users.noreply.github.com> Date: Tue, 12 May 2026 01:32:57 +0900 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20AP?= =?UTF-8?q?I=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B5=D0=BA=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/projects_api.py | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/backend/projects_api.py b/backend/projects_api.py index de9596f..9bced38 100644 --- a/backend/projects_api.py +++ b/backend/projects_api.py @@ -1,7 +1,12 @@ -from fastapi import APIRouter +from fastapi import APIRouter, HTTPException from pydantic import BaseModel -from backend.projects_registry import load_projects, save_project +from backend.projects_registry import ( + find_project_by_workspace, + load_projects, + save_project, + update_project_settings, +) router = APIRouter(prefix='/api/projects', tags=['projects']) @@ -13,6 +18,11 @@ class ProjectRegistryRequest(BaseModel): stack: str | None = None +class ProjectSettingsRequest(BaseModel): + workspace: str + settings: dict + + @router.get('/list') async def projects_list(): return { @@ -34,3 +44,27 @@ async def register_project(payload: ProjectRegistryRequest): 'success': True, 'projects': projects, } + + +@router.get('/settings') +async def project_settings(workspace: str): + project = find_project_by_workspace(workspace) + if not project: + raise HTTPException(status_code=404, detail='Project not found') + + return { + 'success': True, + 'project': project, + } + + +@router.post('/settings') +async def save_project_settings(payload: ProjectSettingsRequest): + project = update_project_settings(payload.workspace, payload.settings) + if not project: + raise HTTPException(status_code=404, detail='Project not found') + + return { + 'success': True, + 'project': project, + }