Spaces:
Runtime error
Runtime error
Download app/application/folder_service.py from Peterase/Ragora-Server: direct link, hf CLI and curl.
- Browser
- Download file 2.36 kB
-
https://huggingface.co/spaces/Peterase/Ragora-Server/resolve/main/app/application/folder_service.py
- Command line
-
hf download hf://spaces/Peterase/Ragora-Server/app/application/folder_service.py
-
curl -L -o folder_service.py https://huggingface.co/spaces/Peterase/Ragora-Server/resolve/main/app/application/folder_service.py
2.36 kB
| """Folder management use cases.""" | |
| from typing import List, Optional | |
| from sqlalchemy.orm import Session | |
| from app.models import Folder | |
| class FolderService: | |
| """Manages folder operations.""" | |
| def __init__(self, db: Session): | |
| self.db = db | |
| def create_folder( | |
| self, | |
| name: str, | |
| org_id: str, | |
| parent_id: Optional[str] = None | |
| ) -> dict: | |
| """Create a new folder.""" | |
| folder = Folder( | |
| name=name, | |
| org_id=org_id, | |
| parent_id=parent_id | |
| ) | |
| self.db.add(folder) | |
| self.db.commit() | |
| self.db.refresh(folder) | |
| return { | |
| "id": folder.id, | |
| "name": folder.name, | |
| "parent_id": folder.parent_id, | |
| "created_at": folder.created_at | |
| } | |
| def list_folders( | |
| self, | |
| org_id: str, | |
| parent_id: Optional[str] = None | |
| ) -> List[dict]: | |
| """List folders for organization.""" | |
| query = self.db.query(Folder).filter(Folder.org_id == org_id) | |
| if parent_id: | |
| query = query.filter(Folder.parent_id == parent_id) | |
| else: | |
| query = query.filter(Folder.parent_id == None) | |
| folders = query.order_by(Folder.created_at.desc()).all() | |
| return [ | |
| { | |
| "id": f.id, | |
| "name": f.name, | |
| "parent_id": f.parent_id, | |
| "created_at": f.created_at | |
| } | |
| for f in folders | |
| ] | |
| def delete_folder(self, folder_id: str, org_id: str) -> None: | |
| """Delete a folder (must be empty).""" | |
| folder = self.db.query(Folder).filter( | |
| Folder.id == folder_id, | |
| Folder.org_id == org_id | |
| ).first() | |
| if not folder: | |
| raise ValueError("Folder not found") | |
| # Check if folder has documents | |
| if folder.documents: | |
| raise ValueError("Folder must be empty before deletion (contains documents)") | |
| # Check if folder has subfolders | |
| subfolders = self.db.query(Folder).filter(Folder.parent_id == folder_id).count() | |
| if subfolders > 0: | |
| raise ValueError("Folder must be empty before deletion (contains subfolders)") | |
| self.db.delete(folder) | |
| self.db.commit() | |