Skip to content
Snippets Groups Projects
Commit 1a7f40b3 authored by Nico Vermaas's avatar Nico Vermaas
Browse files

add distinct

parent 6ac9a13e
Branches
No related tags found
No related merge requests found
...@@ -118,12 +118,26 @@ class DataProductDB: ...@@ -118,12 +118,26 @@ class DataProductDB:
item = augment_item(item) item = augment_item(item)
return item return item
def get_items(self, collection_name, query, skip=0, limit=100, url=None, select=None, sort=None): def get_tasks_distinct_field(self, collection_name, query, select=None, distinct=None):
n_results = self.db[collection_name].count_documents(query) n_results = self.db[collection_name].count_documents(query)
print(query) print(query)
selected_fields = {} selected_fields = {}
for item in select:
selected_fields[item] = 1
if distinct:
results = self.db[collection_name].find(query, selected_fields).distinct(distinct)
return {'count': n_results, 'results': results}
def get_items(self, collection_name, query, skip=0, limit=100, url=None, select=None, sort=None):
n_results = self.db[collection_name].count_documents(query)
selected_fields = {}
if "additional_files_path" in select or "additional_files_url" in select: if "additional_files_path" in select or "additional_files_url" in select:
selected_fields["filename"] = 1 selected_fields["filename"] = 1
selected_fields["storage_path"] = 1 selected_fields["storage_path"] = 1
...@@ -214,6 +228,25 @@ def get_tasks(collection_name: str, task_id: str, request: Request): ...@@ -214,6 +228,25 @@ def get_tasks(collection_name: str, task_id: str, request: Request):
else: else:
raise exceptions.HTTPException(status_code=404, detail=f'Collection {collection_name} does not exist') raise exceptions.HTTPException(status_code=404, detail=f'Collection {collection_name} does not exist')
@app.get('/{collection_name}/tasks/distinct_field/')
def get_tasks_distinct_field(collection_name: str, request: Request, filter: Union[str, None] = None, select: Union[str, None] = None, distinct: str = None):
DB.base_url = from_urlobj_to_url(request.url)
try:
if filter:
query = json.loads(filter)
else:
query = {}
if select:
select = json.loads(select)
else:
select = []
except:
raise exceptions.HTTPException(status_code=422, detail='filter syntax invalid')
if DB.does_collection_exist(collection_name):
return DB.get_tasks_distinct_field(collection_name, query=query, select=select, distinct=distinct)
else:
raise exceptions.HTTPException(status_code=404, detail=f'collection {collection_name} does not exist')
@app.get('/{collection_name}/tasks/') @app.get('/{collection_name}/tasks/')
def get_tasks(collection_name: str, request: Request, skip: int = 0, limit: int = 100, filter: Union[str, None] = None, select: Union[str, None] = None, sort: str = None): def get_tasks(collection_name: str, request: Request, skip: int = 0, limit: int = 100, filter: Union[str, None] = None, select: Union[str, None] = None, sort: str = None):
DB.base_url = from_urlobj_to_url(request.url) DB.base_url = from_urlobj_to_url(request.url)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment