fix: resolve N+1 query in knowledge batch file add (#21006)
This commit is contained in:
@@ -958,17 +958,19 @@ async def add_files_to_knowledge_batch(
|
|||||||
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
|
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Get files content
|
# Batch-fetch all files to avoid N+1 queries
|
||||||
log.info(f"files/batch/add - {len(form_data)} files")
|
log.info(f"files/batch/add - {len(form_data)} files")
|
||||||
files: List[FileModel] = []
|
file_ids = [form.file_id for form in form_data]
|
||||||
for form in form_data:
|
files = Files.get_files_by_ids(file_ids, db=db)
|
||||||
file = Files.get_file_by_id(form.file_id, db=db)
|
|
||||||
if not file:
|
# Verify all requested files were found
|
||||||
raise HTTPException(
|
found_ids = {file.id for file in files}
|
||||||
status_code=status.HTTP_400_BAD_REQUEST,
|
missing_ids = [fid for fid in file_ids if fid not in found_ids]
|
||||||
detail=f"File {form.file_id} not found",
|
if missing_ids:
|
||||||
)
|
raise HTTPException(
|
||||||
files.append(file)
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail=f"File {missing_ids[0]} not found",
|
||||||
|
)
|
||||||
|
|
||||||
# Process files
|
# Process files
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user