Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions backend/app/routers/datasets.py
Original file line number Diff line number Diff line change
Expand Up @@ -493,13 +493,14 @@ async def delete_folder(
folder_id: str,
db: MongoClient = Depends(dependencies.get_db),
fs: Minio = Depends(dependencies.get_fs),
es: Elasticsearch = Depends(dependencies.get_elasticsearchclient),
):
if (await db["folders"].find_one({"_id": ObjectId(folder_id)})) is not None:
# delete current folder and files
await remove_folder_entry(folder_id, db)
async for file in db["files"].find({"folder_id": ObjectId(folder_id)}):
file = FileOut(**file)
await remove_file_entry(file.id, db, fs)
await remove_file_entry(file.id, db, fs, es)

# list all child folders and delete child folders/files
parent_folder_id = folder_id
Expand Down Expand Up @@ -530,7 +531,7 @@ async def _delete_nested_folders(parent_folder_id):
{"folder_id": ObjectId(folder.id)}
):
file = FileOut(**file)
await remove_file_entry(file.id, db, fs)
await remove_file_entry(file.id, db, fs, es)

await _delete_nested_folders(parent_folder_id)

Expand Down
8 changes: 3 additions & 5 deletions backend/app/routers/files.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,7 @@ async def add_file_entry(

# TODO: Move this to MongoDB middle layer
async def remove_file_entry(
file_id: Union[str, ObjectId],
db: MongoClient,
fs: Minio,
es: Elasticsearch = Depends(dependencies.get_elasticsearchclient),
file_id: Union[str, ObjectId], db: MongoClient, fs: Minio, es: Elasticsearch
):
"""Remove FileDB object into MongoDB, Minio, and associated metadata and version information."""
# TODO: Deleting individual versions will require updating version_id in mongo, or deleting entire document
Expand Down Expand Up @@ -254,9 +251,10 @@ async def delete_file(
file_id: str,
db: MongoClient = Depends(dependencies.get_db),
fs: Minio = Depends(dependencies.get_fs),
es: Elasticsearch = Depends(dependencies.get_elasticsearchclient),
):
if (file := await db["files"].find_one({"_id": ObjectId(file_id)})) is not None:
await remove_file_entry(file_id, db, fs)
await remove_file_entry(file_id, db, fs, es)
return {"deleted": file_id}
else:
raise HTTPException(status_code=404, detail=f"File {file_id} not found")
Expand Down