import uuid from fastapi import APIRouter, status from app.api.deps import CurrentUser, SessionDep from app.schemas.tree import TreeCreate, TreeRead from app.services import tree_service router = APIRouter(prefix="/trees", tags=["trees"]) @router.post("", response_model=TreeRead, status_code=status.HTTP_201_CREATED) async def create_tree(data: TreeCreate, session: SessionDep, current: CurrentUser) -> TreeRead: tree = await tree_service.create_tree( session, owner=current, name=data.name, description=data.description, visibility=data.visibility, ) return TreeRead.model_validate(tree) @router.get("", response_model=list[TreeRead]) async def list_my_trees(session: SessionDep, current: CurrentUser) -> list[TreeRead]: trees = await tree_service.list_trees_for_user(session, user=current) return [TreeRead.model_validate(t) for t in trees] @router.get("/{tree_id}", response_model=TreeRead) async def get_tree(tree_id: uuid.UUID, session: SessionDep, current: CurrentUser) -> TreeRead: tree = await tree_service.get_tree(session, viewer_id=current.id, tree_id=tree_id) return TreeRead.model_validate(tree)