fix tree
This commit is contained in:
parent
e86f4148f1
commit
25dcb7d17f
|
|
@ -48,23 +48,30 @@ async def list_folders(
|
|||
current_user: CurrentUser,
|
||||
session: DatabaseSession,
|
||||
parent_folder_id: Optional[str] = Query(None),
|
||||
all: bool = Query(False, description="Return all folders (ignore parent_folder_id)"),
|
||||
):
|
||||
"""
|
||||
List folders in a specific parent folder.
|
||||
List folders in a specific parent folder or all folders.
|
||||
|
||||
Args:
|
||||
current_user: Current authenticated user
|
||||
session: Database session
|
||||
parent_folder_id: Parent folder ID (None for root folders)
|
||||
all: If True, return all user's folders (for building tree)
|
||||
|
||||
Returns:
|
||||
List of folders
|
||||
"""
|
||||
folder_service = FolderService(session)
|
||||
folders = await folder_service.list_folders(
|
||||
user_id=current_user.id,
|
||||
parent_folder_id=parent_folder_id,
|
||||
)
|
||||
|
||||
if all:
|
||||
folders = await folder_service.list_all_folders(user_id=current_user.id)
|
||||
else:
|
||||
folders = await folder_service.list_folders(
|
||||
user_id=current_user.id,
|
||||
parent_folder_id=parent_folder_id,
|
||||
)
|
||||
|
||||
return FolderListResponse(items=folders)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -89,6 +89,20 @@ class FolderRepository:
|
|||
result = await self.session.execute(query)
|
||||
return list(result.scalars().all())
|
||||
|
||||
async def list_all_by_user(self, user_id: str) -> list[Folder]:
|
||||
"""
|
||||
List ALL folders for a user (no parent filter).
|
||||
|
||||
Args:
|
||||
user_id: User ID
|
||||
|
||||
Returns:
|
||||
List of all user's folders
|
||||
"""
|
||||
query = select(Folder).where(Folder.user_id == user_id).order_by(Folder.name)
|
||||
result = await self.session.execute(query)
|
||||
return list(result.scalars().all())
|
||||
|
||||
async def get_all_subfolders(self, folder_id: str) -> list[Folder]:
|
||||
"""
|
||||
Get all subfolders recursively.
|
||||
|
|
|
|||
|
|
@ -116,6 +116,18 @@ class FolderService:
|
|||
|
||||
return folders
|
||||
|
||||
async def list_all_folders(self, user_id: str) -> list[Folder]:
|
||||
"""
|
||||
List ALL folders for a user (no parent filter).
|
||||
|
||||
Args:
|
||||
user_id: User ID
|
||||
|
||||
Returns:
|
||||
List of all user's folders
|
||||
"""
|
||||
return await self.folder_repo.list_all_by_user(user_id)
|
||||
|
||||
async def rename_folder(
|
||||
self,
|
||||
user_id: str,
|
||||
|
|
|
|||
|
|
@ -110,8 +110,8 @@ export default function MoveFolderDialog({ open, onClose, onMove }: MoveFolderDi
|
|||
const loadAllFolders = async () => {
|
||||
try {
|
||||
setLoading(true);
|
||||
// Load all folders (no parent_id filter to get all)
|
||||
const response = await api.listFolders();
|
||||
// Load all folders with all=true parameter
|
||||
const response = await api.listFolders(null, true);
|
||||
const allFolders: Folder[] = response.items || [];
|
||||
|
||||
// Build tree structure
|
||||
|
|
|
|||
|
|
@ -194,9 +194,15 @@ class ApiClient {
|
|||
return data;
|
||||
}
|
||||
|
||||
async listFolders(parentFolderId?: string | null): Promise<any> {
|
||||
async listFolders(parentFolderId?: string | null, all: boolean = false): Promise<any> {
|
||||
const params: any = {};
|
||||
if (all) {
|
||||
params.all = true;
|
||||
} else if (parentFolderId) {
|
||||
params.parent_folder_id = parentFolderId;
|
||||
}
|
||||
const { data } = await this.client.get('/folders', {
|
||||
params: parentFolderId ? { parent_folder_id: parentFolderId } : undefined,
|
||||
params: Object.keys(params).length > 0 ? params : undefined,
|
||||
});
|
||||
return data;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue