Skip to content

Commit

Permalink
fix: adapt count query generator to correctly count grouped models
Browse files Browse the repository at this point in the history
Fixes #99.
  • Loading branch information
lu-pl committed Oct 23, 2024
1 parent bc3c2c9 commit affe933
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 3 deletions.
2 changes: 1 addition & 1 deletion rdfproxy/adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def query(
size: int = 100,
) -> Page[_TModelInstance]:
"""Run a query against an endpoint and return a Page model object."""
count_query: str = construct_count_query(self._query)
count_query: str = construct_count_query(query=self._query, model=self._model)
items_query: str = ungrouped_pagination_base_query.substitute(
query=self._query, offset=calculate_offset(page, size), limit=size
)
Expand Down
10 changes: 8 additions & 2 deletions rdfproxy/utils/sparql_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from typing import cast

from SPARQLWrapper import QueryResult, SPARQLWrapper
from rdfproxy.utils._types import _TModelInstance


ungrouped_pagination_base_query: Annotated[
Expand Down Expand Up @@ -35,9 +36,14 @@ def replace_query_select_clause(query: str, repl: str) -> str:
return count_query


def construct_count_query(query: str) -> str:
def construct_count_query(query: str, model: type[_TModelInstance]) -> str:
"""Construct a generic count query from a SELECT query."""
count_query = replace_query_select_clause(query, "select (count(*) as ?cnt)")
try:
group_by: str = model.model_config["group_by"]
count_query = construct_grouped_count_query(query, group_by)
except KeyError:
count_query = replace_query_select_clause(query, "select (count(*) as ?cnt)")

return count_query


Expand Down

0 comments on commit affe933

Please sign in to comment.