Skip to content

Commit

Permalink
search for tables and closed data
Browse files Browse the repository at this point in the history
  • Loading branch information
mfagundes committed Jul 28, 2023
1 parent d90ec9b commit d0ac690
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 4 deletions.
5 changes: 5 additions & 0 deletions basedosdados_api/api/v1/search_indexes.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ class DatasetIndex(indexes.SearchIndex, indexes.Indexable):
)
is_closed = indexes.BooleanField(model_attr="is_closed")
contains_tables = indexes.BooleanField(model_attr="contains_tables")
contains_closed_data = indexes.BooleanField(model_attr="contains_closed_data")
contains_open_tables = indexes.BooleanField(model_attr="contains_open_tables")
contains_closed_tables = indexes.BooleanField(model_attr="contains_closed_tables")
contains_raw_data_sources = indexes.BooleanField(
Expand Down Expand Up @@ -204,6 +205,10 @@ def prepare(self, obj):
contains_tables = data.get("contains_tables", False)
data["contains_tables"] = contains_tables

# Contains closed data
contains_closed_data = data.get("contains_closed_data", False)
data["contains_closed_data"] = contains_closed_data

# Contains open tables
contains_open_tables = data.get("contains_open_tables", False)
data["contains_open_tables"] = contains_open_tables
Expand Down
35 changes: 31 additions & 4 deletions basedosdados_api/api/v1/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,18 @@ def get(self, request, *args, **kwargs):

if "datasets_with" in req_args:
options = req_args.getlist("datasets_with")
if "open_tables" in options:
all_filters.append({"match": {"contains_open_tables": True}})
if "closed_tables" in options:
all_filters.append({"match": {"contains_closed_tables": True}})
if "tables" in options:
all_filters.append({"match": {"contains_tables": True}})
if "closed_data" in options:
all_filters.append({"match": {"contains_closed_data": True}})
if "raw_data_sources" in options:
all_filters.append({"match": {"contains_raw_data_sources": True}})
if "information_requests" in options:
all_filters.append({"match": {"contains_information_requests": True}})
if "open_tables" in options:
all_filters.append({"match": {"contains_open_tables": True}})
if "closed_tables" in options:
all_filters.append({"match": {"contains_closed_tables": True}})

raw_query = {
"from": (page - 1) * page_size,
Expand Down Expand Up @@ -170,6 +174,12 @@ def get(self, request, *args, **kwargs):
"size": agg_page_size,
}
},
"contains_closed_data_counts": {
"terms": {
"field": "contains_closed_data",
"size": agg_page_size,
}
},
"contains_open_tables_counts": {
"terms": {
"field": "contains_open_tables",
Expand Down Expand Up @@ -329,6 +339,9 @@ def get(self, request, *args, **kwargs):
# boolean fields
cleaned_results["is_closed"] = r.get("is_closed", False)
cleaned_results["contains_tables"] = r.get("contains_tables", False)
cleaned_results["contains_closed_data"] = r.get(
"contains_closed_data", False
)
cleaned_results["contains_closed_tables"] = r.get(
"contains_closed_tables", False
)
Expand All @@ -345,6 +358,7 @@ def get(self, request, *args, **kwargs):
observation_levels_counts = agg["observation_levels_counts"]["buckets"]
is_closed_counts = agg["is_closed_counts"]["buckets"]
contains_tables_counts = agg["contains_tables_counts"]["buckets"]
contains_closed_data_counts = agg["contains_closed_data_counts"]["buckets"]
contains_open_tables_counts = agg["contains_open_tables_counts"]["buckets"]
contains_closed_tables_counts = agg["contains_closed_tables_counts"]["buckets"]
contains_information_requests_counts = agg[
Expand Down Expand Up @@ -443,6 +457,19 @@ def get(self, request, *args, **kwargs):
]
aggregations["contains_tables"] = agg_contains_tables

if contains_closed_data_counts:
agg_contains_closed_data = [
{
"key": contains_closed_data["key"],
"count": contains_closed_data["doc_count"],
"name": "dados fechados"
if contains_closed_data["key"] == 1
else "sem dados fechados",
}
for idx, contains_closed_data in enumerate(contains_closed_data_counts)
]
aggregations["contains_closed_data"] = agg_contains_closed_data

if contains_open_tables_counts:
agg_contains_open_tables = [
{
Expand Down

0 comments on commit d0ac690

Please sign in to comment.