@@ -185,18 +185,19 @@ async def get_content(
185185 async with self ._uow () as uow :
186186 # check if the user owns the file
187187 await uow .files .get (file_id = file_id , user_id = user .id , context_id = context_id )
188- async with self ._object_storage .get_file (file_id = file_id ) as file :
189- yield file
188+
189+ async with self ._object_storage .get_file (file_id = file_id ) as file :
190+ yield file
190191
191192 async def get_extraction (self , * , file_id : UUID , user : User , context_id : UUID | None = None ) -> TextExtraction :
192193 async with self ._uow () as uow :
193194 return await uow .files .get_extraction_by_file_id (file_id = file_id , user_id = user .id , context_id = context_id )
194195
195196 async def delete (self , * , file_id : UUID , user : User , context_id : UUID | None = None ) -> None :
196- async with self ._uow () as uow :
197- # Collect all file IDs to delete from object storage
198- file_ids_to_delete = [file_id ]
197+ file_ids_to_delete = [file_id ]
198+ deleted = False
199199
200+ async with self ._uow () as uow :
200201 # Find all extractions for this file and collect their extracted files
201202 try :
202203 extraction = await uow .files .get_extraction_by_file_id (
@@ -209,10 +210,11 @@ async def delete(self, *, file_id: UUID, user: User, context_id: UUID | None = N
209210 pass
210211
211212 # Delete from database first (this will cascade delete extractions and extraction_files)
212- if await uow .files .delete (file_id = file_id , user_id = user .id , context_id = context_id ):
213- # Then delete all related files from object storage
214- await self ._object_storage .delete_files (file_ids = file_ids_to_delete )
215- await uow .commit ()
213+ deleted = await uow .files .delete (file_id = file_id , user_id = user .id , context_id = context_id )
214+ await uow .commit ()
215+
216+ if deleted :
217+ await self ._object_storage .delete_files (file_ids = file_ids_to_delete )
216218
217219 async def _cleanup_extracted_files (self , file_ids : list [UUID ]) -> None :
218220 """Best-effort cleanup for partially uploaded extracted files."""
@@ -282,13 +284,13 @@ async def delete_extraction(self, *, file_id: UUID, user: User, context_id: UUID
282284 file_id = file_id , user_id = user .id , context_id = context_id
283285 )
284286
285- # Delete all extracted files
286- if extraction . extracted_files :
287- file_ids_to_delete = [ ef . file_id for ef in extraction . extracted_files if ef . file_id != file_id ]
288- if file_ids_to_delete :
289- await self ._object_storage . delete_files ( file_ids = file_ids_to_delete )
290- for fid in file_ids_to_delete :
291- await uow .files .delete (file_id = fid )
287+ file_ids_to_delete = [ ef . file_id for ef in extraction . extracted_files if ef . file_id != file_id ]
288+ if file_ids_to_delete :
289+ await self . _object_storage . delete_files ( file_ids = file_ids_to_delete )
290+
291+ async with self ._uow () as uow :
292+ for fid in file_ids_to_delete :
293+ await uow .files .delete (file_id = fid )
292294
293295 await uow .files .delete_extraction (extraction_id = extraction .id )
294296 await uow .commit ()
0 commit comments