From 993544ff99979fcc0708f8c46aa95157c64782f8 Mon Sep 17 00:00:00 2001 From: Leopoldadmin Date: Tue, 9 Jun 2026 23:33:10 +0000 Subject: [PATCH] Add backend/app/routers/workspaces.py --- backend/app/routers/workspaces.py | 54 +++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 backend/app/routers/workspaces.py diff --git a/backend/app/routers/workspaces.py b/backend/app/routers/workspaces.py new file mode 100644 index 0000000..89e8ae1 --- /dev/null +++ b/backend/app/routers/workspaces.py @@ -0,0 +1,54 @@ +"""Workspace routes.""" +from fastapi import APIRouter, Depends, HTTPException +from sqlalchemy.orm import Session +from typing import List + +from app.database import get_db +from app.models.workspace import Workspace +from app.schemas.workspace import WorkspaceCreate, WorkspaceUpdate, WorkspaceResponse + +router = APIRouter(prefix="/workspaces", tags=["workspaces"]) + +@router.get("", response_model=List[WorkspaceResponse]) +def list_workspaces(db: Session = Depends(get_db)): + """List all workspaces.""" + return db.query(Workspace).all() + +@router.post("", response_model=WorkspaceResponse) +def create_workspace(workspace: WorkspaceCreate, db: Session = Depends(get_db)): + """Create new workspace.""" + db_workspace = Workspace(**workspace.model_dump()) + db.add(db_workspace) + db.commit() + db.refresh(db_workspace) + return db_workspace + +@router.get("/{workspace_id}", response_model=WorkspaceResponse) +def get_workspace(workspace_id: int, db: Session = Depends(get_db)): + """Get workspace by ID.""" + workspace = db.query(Workspace).filter(Workspace.id == workspace_id).first() + if not workspace: + raise HTTPException(status_code=404, detail="Workspace not found") + return workspace + +@router.put("/{workspace_id}", response_model=WorkspaceResponse) +def update_workspace(workspace_id: int, workspace: WorkspaceUpdate, db: Session = Depends(get_db)): + """Update workspace.""" + db_workspace = db.query(Workspace).filter(Workspace.id == workspace_id).first() + if not db_workspace: + raise HTTPException(status_code=404, detail="Workspace not found") + for key, value in workspace.model_dump(exclude_unset=True).items(): + setattr(db_workspace, key, value) + db.commit() + db.refresh(db_workspace) + return db_workspace + +@router.delete("/{workspace_id}") +def delete_workspace(workspace_id: int, db: Session = Depends(get_db)): + """Delete workspace.""" + workspace = db.query(Workspace).filter(Workspace.id == workspace_id).first() + if not workspace: + raise HTTPException(status_code=404, detail="Workspace not found") + db.delete(workspace) + db.commit() + return {"message": "Workspace deleted"}