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

add distinct

parent 1a7f40b3
No related branches found
No related tags found
No related merge requests found
......@@ -118,19 +118,9 @@ class DataProductDB:
item = augment_item(item)
return item
def get_tasks_distinct_field(self, collection_name, query, select=None, distinct=None):
n_results = self.db[collection_name].count_documents(query)
print(query)
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_distinct_field(self, collection_name, query, distinct=None):
results = self.db[collection_name].find(query,distinct).distinct(distinct)
return {'results': results}
def get_items(self, collection_name, query, skip=0, limit=100, url=None, select=None, sort=None):
......@@ -228,22 +218,20 @@ def get_tasks(collection_name: str, task_id: str, request: Request):
else:
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):
@app.get('/{collection_name}/distinct_field/')
def get_tasks_distinct_field(collection_name: str, request: Request, filter: Union[str, None] = None, distinct: str = None):
print(filter)
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)
return DB.get_distinct_field(collection_name, query=query, distinct=distinct)
else:
raise exceptions.HTTPException(status_code=404, detail=f'collection {collection_name} does not exist')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment