sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #08598
[Merge] ~ack/maas-site-manager:queries-limit-optional into maas-site-manager:main
Alberto Donato has proposed merging ~ack/maas-site-manager:queries-limit-optional into maas-site-manager:main.
Commit message:
make limit parameter optional in queries
Requested reviews:
MAAS Lander (maas-lander): unittests
MAAS Committers (maas-committers)
For more details, see:
https://code.launchpad.net/~ack/maas-site-manager/+git/site-manager/+merge/443419
--
Your team MAAS Committers is requested to review the proposed merge of ~ack/maas-site-manager:queries-limit-optional into maas-site-manager:main.
diff --git a/backend/msm/db/queries.py b/backend/msm/db/queries.py
index 35bd3a9..bba64d6 100644
--- a/backend/msm/db/queries.py
+++ b/backend/msm/db/queries.py
@@ -25,8 +25,7 @@ from sqlalchemy import (
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.sql.expression import FromClause
-from ..schema import MAX_PAGE_SIZE
-from ..schema._sorting import SortParam
+from ..schema import SortParam
from ._tables import (
Site,
SiteData,
@@ -137,7 +136,7 @@ async def get_sites(
session: AsyncSession,
sort_params: list[SortParam],
offset: int = 0,
- limit: int = MAX_PAGE_SIZE,
+ limit: int | None = None,
city: list[str] | None = None,
country: list[str] | None = None,
name: list[str] | None = None,
@@ -209,9 +208,10 @@ async def get_sites(
)
.where(*filters) # type: ignore[arg-type]
.order_by(*order_by)
- .limit(limit)
.offset(offset)
)
+ if limit is not None:
+ stmt = stmt.limit(limit)
result = await session.execute(stmt)
return count, [SiteSchema(**row._asdict()) for row in result.all()]
@@ -219,7 +219,7 @@ async def get_sites(
async def get_pending_sites(
session: AsyncSession,
offset: int = 0,
- limit: int = MAX_PAGE_SIZE,
+ limit: int | None = None,
) -> tuple[int, Iterable[PendingSiteSchema]]:
filters = [Site.c.accepted == False] # noqa
count = await row_count(session, Site, *filters)
@@ -233,9 +233,10 @@ async def get_pending_sites(
.select_from(Site)
.where(*filters)
.order_by(Site.c.id)
- .limit(limit)
.offset(offset)
)
+ if limit is not None:
+ stmt = stmt.limit(limit)
result = await session.execute(stmt)
return count, [PendingSiteSchema(**row._asdict()) for row in result.all()]
@@ -271,10 +272,10 @@ async def accept_reject_pending_sites(
async def get_tokens(
session: AsyncSession,
offset: int = 0,
- limit: int = MAX_PAGE_SIZE,
+ limit: int | None = None,
) -> tuple[int, Iterable[TokenSchema]]:
count = await row_count(session, Token)
- result = await session.execute(
+ stmt = (
select(
Token.c.id,
Token.c.site_id,
@@ -285,8 +286,10 @@ async def get_tokens(
.select_from(Token)
.order_by(Token.c.id)
.offset(offset)
- .limit(limit)
)
+ if limit is not None:
+ stmt = stmt.limit(limit)
+ result = await session.execute(stmt)
return count, [TokenSchema(**row._asdict()) for row in result.all()]
diff --git a/backend/msm/schema/__init__.py b/backend/msm/schema/__init__.py
index 114792b..38ed657 100644
--- a/backend/msm/schema/__init__.py
+++ b/backend/msm/schema/__init__.py
@@ -7,11 +7,13 @@ from ._pagination import (
pagination_params,
PaginationParams,
)
+from ._sorting import SortParam
__all__ = [
"MAX_PAGE_SIZE",
"PaginatedResults",
"PaginationParams",
"pagination_params",
+ "SortParam",
"TimeZone",
]