refactor: replace DefaultLimitOffsetPage with LimitOffsetPage in multiple files and update timezone handling to use UTC
This commit is contained in:
@@ -3,19 +3,23 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Awaitable, Callable, Sequence
|
||||
from typing import TYPE_CHECKING, Any, TypeVar, cast
|
||||
from typing import TYPE_CHECKING, Any, TypeVar
|
||||
|
||||
from fastapi_pagination.ext.sqlalchemy import paginate as _paginate
|
||||
|
||||
from app.schemas.pagination import DefaultLimitOffsetPage
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from fastapi_pagination.limit_offset import LimitOffsetPage
|
||||
from sqlmodel.ext.asyncio.session import AsyncSession
|
||||
from sqlmodel.sql.expression import Select, SelectOfScalar
|
||||
|
||||
T = TypeVar("T")
|
||||
|
||||
Transformer = Callable[[Sequence[Any]], Sequence[Any] | Awaitable[Sequence[Any]]]
|
||||
Transformer = Callable[
|
||||
[Sequence[Any]],
|
||||
Sequence[Any] | Awaitable[Sequence[Any]],
|
||||
]
|
||||
|
||||
|
||||
async def paginate(
|
||||
@@ -23,12 +27,7 @@ async def paginate(
|
||||
statement: Select[Any] | SelectOfScalar[Any],
|
||||
*,
|
||||
transformer: Transformer | None = None,
|
||||
) -> DefaultLimitOffsetPage[T]:
|
||||
) -> LimitOffsetPage[T]:
|
||||
"""Execute a paginated query and cast to the project page type alias."""
|
||||
# fastapi-pagination is not fully typed (it returns Any), but response_model
|
||||
# validation ensures runtime correctness. Centralize casts here to keep strict
|
||||
# mypy clean.
|
||||
return cast(
|
||||
DefaultLimitOffsetPage[T],
|
||||
await _paginate(session, statement, transformer=transformer),
|
||||
)
|
||||
page = await _paginate(session, statement, transformer=transformer)
|
||||
return DefaultLimitOffsetPage[T].model_validate(page)
|
||||
|
||||
Reference in New Issue
Block a user