Skip to content

Commit

Permalink
Merge pull request #95 from OCHA-DAP/feature/better-typing-for-util-f…
Browse files Browse the repository at this point in the history
…unctions

Better typing for util functions
  • Loading branch information
alexandru-m-g authored May 17, 2024
2 parents 161a7ee + 713e16f commit 2896670
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions hdx_hapi/db/dao/util/util.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Type
from sqlalchemy import Column, Select
from typing import Protocol, Type
from sqlalchemy import DateTime, Select
from sqlalchemy.orm import Mapped

from hdx_hapi.db.models.views.all_views import Admin1View, Admin2View, LocationView
from hdx_hapi.endpoints.util.util import PaginationParams, ReferencePeriodParameters


Expand All @@ -16,10 +16,15 @@ def apply_pagination(query: Select, pagination_parameters: PaginationParams) ->
return query.limit(limit).offset(offset)


class EntityWithReferencePeriod(Protocol):
reference_period_start: Mapped[DateTime]
reference_period_end: Mapped[DateTime]


def apply_reference_period_filter(
query: Select,
ref_period_parameters: ReferencePeriodParameters,
db_class: Type[LocationView] | Type[Admin1View] | Type[Admin2View],
db_class: Type[EntityWithReferencePeriod],
) -> Select:
if ref_period_parameters.reference_period_start_min:
query = query.where(db_class.reference_period_start >= ref_period_parameters.reference_period_start_min)
Expand All @@ -32,6 +37,6 @@ def apply_reference_period_filter(
return query


def case_insensitive_filter(query: Select, column: Column, value: str) -> Select:
def case_insensitive_filter(query: Select, column: Mapped[str], value: str) -> Select:
query = query.where(column.ilike(value))
return query

0 comments on commit 2896670

Please sign in to comment.