Skip to content

Commit

Permalink
refactor: change method signatures of search API endpoint helpers #268
Browse files Browse the repository at this point in the history
- The endpoint name won't actually be used in the endpoint code, only the entity name will be
- Also changed `get_with_id()` to `get_with_pid()` as all use cases will be with a persistent identifier
  • Loading branch information
MRichards99 committed Jan 13, 2022
1 parent 34fa7d9 commit b0f4b13
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 28 deletions.
18 changes: 5 additions & 13 deletions datagateway_api/src/api_start_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,39 +233,31 @@ def create_api_endpoints(flask_app, api, spec):
}

for endpoint_name, entity_name in search_api_entity_endpoints.items():
get_search_endpoint_resource = get_search_endpoint(
endpoint_name, entity_name,
)
get_search_endpoint_resource = get_search_endpoint(entity_name)
api.add_resource(
get_search_endpoint_resource,
f"{search_api_extension}/{endpoint_name}",
endpoint=f"search_api_get_{endpoint_name}",
)
spec.path(resource=get_search_endpoint_resource, api=api)

get_single_endpoint_resource = get_single_endpoint(
endpoint_name, entity_name,
)
get_single_endpoint_resource = get_single_endpoint(entity_name)
api.add_resource(
get_single_endpoint_resource,
f"{search_api_extension}/{endpoint_name}/<int:pid>",
endpoint=f"search_api_get_single_{endpoint_name}",
)
spec.path(resource=get_single_endpoint_resource, api=api)

get_number_count_endpoint_resource = get_number_count_endpoint(
endpoint_name, entity_name,
)
get_number_count_endpoint_resource = get_number_count_endpoint(entity_name)
api.add_resource(
get_number_count_endpoint_resource,
f"{search_api_extension}/{endpoint_name}/count",
endpoint=f"search_api_count_{endpoint_name}",
)
spec.path(resource=get_number_count_endpoint_resource, api=api)

get_files_endpoint_resource = get_files_endpoint(
search_api_entity_endpoints["datasets"], "datasets",
)
get_files_endpoint_resource = get_files_endpoint("File")
api.add_resource(
get_files_endpoint_resource,
f"{search_api_extension}/datasets/<int:pid>/files",
Expand All @@ -274,7 +266,7 @@ def create_api_endpoints(flask_app, api, spec):
spec.path(resource=get_files_endpoint_resource, api=api)

get_number_count_files_endpoint_resource = get_number_count_files_endpoint(
search_api_entity_endpoints["datasets"], "datasets",
"File",
)
api.add_resource(
get_number_count_files_endpoint_resource,
Expand Down
20 changes: 10 additions & 10 deletions datagateway_api/src/resources/search_api_endpoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
log = logging.getLogger()


def get_search_endpoint(endpoint_name, entity_name):
def get_search_endpoint(entity_name):
"""
TODO - Add docstring
"""
Expand All @@ -23,15 +23,15 @@ class Endpoint(Resource):
def get(self):
filters = get_filters_from_query_string("search_api", entity_name)
log.debug("Filters: %s", filters)
return get_search(endpoint_name, entity_name, filters), 200
return get_search(entity_name, filters), 200

# TODO - Add `get.__doc__`

Endpoint.__name__ = entity_name
return Endpoint


def get_single_endpoint(endpoint_name, entity_name):
def get_single_endpoint(entity_name):
"""
TODO - Add docstring
"""
Expand All @@ -40,15 +40,15 @@ class EndpointWithID(Resource):
def get(self, pid):
filters = get_filters_from_query_string("search_api", entity_name)
log.debug("Filters: %s", filters)
return get_with_id(entity_name, pid), 200
return get_with_pid(entity_name, pid, filters), 200

# TODO - Add `get.__doc__`

EndpointWithID.__name__ = entity_name
return EndpointWithID


def get_number_count_endpoint(endpoint_name, entity_name):
def get_number_count_endpoint(entity_name):
"""
TODO - Add docstring
"""
Expand All @@ -58,15 +58,15 @@ def get(self):
# Only WHERE included on count endpoints
filters = get_filters_from_query_string("search_api", entity_name)
log.debug("Filters: %s", filters)
return get_count(entity_name), 200
return get_count(entity_name, filters), 200

# TODO - Add `get.__doc__`

CountEndpoint.__name__ = entity_name
return CountEndpoint


def get_files_endpoint(endpoint_name, entity_name):
def get_files_endpoint(entity_name):
"""
TODO - Add docstring
"""
Expand All @@ -75,15 +75,15 @@ class FilesEndpoint(Resource):
def get(self, pid):
filters = get_filters_from_query_string("search_api", entity_name)
log.debug("Filters: %s", filters)
return get_files(entity_name), 200
return get_files(entity_name, pid, filters), 200

# TODO - Add `get.__doc__`

FilesEndpoint.__name__ = entity_name
return FilesEndpoint


def get_number_count_files_endpoint(endpoint_name, entity_name):
def get_number_count_files_endpoint(entity_name):
"""
TODO - Add docstring
"""
Expand All @@ -93,7 +93,7 @@ def get(self, pid):
# Only WHERE included on count endpoints
filters = get_filters_from_query_string("search_api", entity_name)
log.debug("Filters: %s", filters)
return get_files_count(entity_name, pid)
return get_files_count(entity_name, filters, pid)

# TODO - Add `get.__doc__`

Expand Down
10 changes: 5 additions & 5 deletions datagateway_api/src/search_api/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@


@client_manager
def get_search(endpoint_name, entity_name, filters):
def get_search(entity_name, filters):
log.debug("Entity Name: %s, Filters: %s", entity_name, filters)

query = SearchAPIQuery(entity_name)
Expand All @@ -28,20 +28,20 @@ def get_search(endpoint_name, entity_name, filters):


@client_manager
def get_with_id(endpoint_name, entity_name, id_, filters):
def get_with_pid(entity_name, pid, filters):
pass


@client_manager
def get_count(endpoint_name, entity_name, filters):
def get_count(entity_name, filters):
pass


@client_manager
def get_files(endpoint_name, entity_name, filters):
def get_files(entity_name, pid, filters):
pass


@client_manager
def get_files_count(endpoint_name, entity_name, id_, filters):
def get_files_count(entity_name, filters, pid):
pass

0 comments on commit b0f4b13

Please sign in to comment.