Skip to content

Commit f81b6a6

Browse files
authored
fix elasticsearch delete (#1109)
1 parent 9684ee6 commit f81b6a6

File tree

4 files changed

+32
-9
lines changed

4 files changed

+32
-9
lines changed

backend/app/routers/files.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,7 @@ async def download_file_url(
356356
file_id: str,
357357
version: Optional[int] = None,
358358
expires_in_seconds: Optional[int] = 3600,
359+
increment: Optional[bool] = True,
359360
es: Elasticsearch = Depends(dependencies.get_elasticsearchclient),
360361
external_fs: Minio = Depends(dependencies.get_external_fs),
361362
allow: bool = Depends(FileAuthorization("viewer")),
@@ -395,14 +396,20 @@ async def download_file_url(
395396
expires=expires,
396397
)
397398

398-
# Increment download count
399-
await file.update(Inc({FileDB.downloads: 1}))
399+
if presigned_url is not None:
400+
if increment:
401+
# Increment download count
402+
await file.update(Inc({FileDB.downloads: 1}))
400403

401-
# reindex
402-
await index_file(es, FileOut(**file.dict()), update=True)
404+
# reindex
405+
await index_file(es, FileOut(**file.dict()), update=True)
403406

404-
# return presigned url
405-
return {"presigned_url": presigned_url}
407+
# return presigned url
408+
return {"presigned_url": presigned_url}
409+
else:
410+
raise HTTPException(
411+
status_code=500, detail="Unable to generate presigned URL"
412+
)
406413
else:
407414
raise HTTPException(status_code=404, detail=f"File {file_id} not found")
408415

backend/app/search/connect.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from app.models.errors import ServiceUnreachable
77
from app.models.feeds import SearchObject
88
from app.models.files import FileOut
9-
from elasticsearch import BadRequestError, Elasticsearch
9+
from elasticsearch import BadRequestError, ConflictError, Elasticsearch, NotFoundError
1010

1111
logger = logging.getLogger(__name__)
1212
no_of_shards = settings.elasticsearch_no_of_shards
@@ -114,8 +114,11 @@ def delete_document_by_id(es_client, index_name, id):
114114
id -- unique identifier of the document
115115
"""
116116
try:
117-
query = {"match": {"_id": id}}
118-
es_client.delete_by_query(index=index_name, query=query)
117+
es_client.delete(index=index_name, id=id)
118+
except NotFoundError:
119+
print(f"Document with ID {id} not found.")
120+
except ConflictError as ex:
121+
print(f"Version conflict error: {str(ex)}")
119122
except BadRequestError as ex:
120123
logger.error(str(ex))
121124

frontend/src/openapi/v2/services/FilesService.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ export class FilesService {
9393
* @param fileId
9494
* @param version
9595
* @param expiresInSeconds
96+
* @param increment
9697
* @param datasetId
9798
* @returns any Successful Response
9899
* @throws ApiError
@@ -101,6 +102,7 @@ export class FilesService {
101102
fileId: string,
102103
version?: number,
103104
expiresInSeconds: number = 3600,
105+
increment: boolean = true,
104106
datasetId?: string,
105107
): CancelablePromise<any> {
106108
return __request({
@@ -109,6 +111,7 @@ export class FilesService {
109111
query: {
110112
'version': version,
111113
'expires_in_seconds': expiresInSeconds,
114+
'increment': increment,
112115
'dataset_id': datasetId,
113116
},
114117
errors: {

openapi.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2823,6 +2823,16 @@
28232823
"name": "expires_in_seconds",
28242824
"in": "query"
28252825
},
2826+
{
2827+
"required": false,
2828+
"schema": {
2829+
"title": "Increment",
2830+
"type": "boolean",
2831+
"default": true
2832+
},
2833+
"name": "increment",
2834+
"in": "query"
2835+
},
28262836
{
28272837
"required": false,
28282838
"schema": {

0 commit comments

Comments
 (0)