Skip to content

Commit 4c858f0

Browse files
authored
[DOP-22531] Add location_id filter for dataset (#294)
* [DOP-22531] Add location_id filter for dataset, fix type for pagination query * [DOP-22531] Add changelog
1 parent 5874364 commit 4c858f0

File tree

22 files changed

+111
-119
lines changed

22 files changed

+111
-119
lines changed

data_rentgen/db/repositories/dataset.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,16 @@ async def paginate(
4444
page_size: int,
4545
dataset_ids: Collection[int],
4646
tag_value_ids: Collection[int],
47+
location_id: int | None,
4748
search_query: str | None,
4849
) -> PaginationDTO[Dataset]:
4950
where = []
5051
if dataset_ids:
5152
where.append(Dataset.id == any_(list(dataset_ids))) # type: ignore[arg-type]
5253

54+
if location_id:
55+
where.append(Dataset.location_id == location_id)
56+
5357
if tag_value_ids:
5458
tv_ids = list(tag_value_ids)
5559
dataset_ids_subq = (

data_rentgen/server/api/v1/router/dataset.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
@router.get("", summary="Paginated list of Datasets")
3131
async def paginate_datasets(
32-
query_args: Annotated[DatasetPaginateQueryV1, Depends()],
32+
query_args: Annotated[DatasetPaginateQueryV1, Query()],
3333
dataset_service: Annotated[DatasetService, Depends()],
3434
current_user: Annotated[User, Depends(get_user())],
3535
) -> PageResponseV1[DatasetDetailedResponseV1]:
@@ -38,6 +38,7 @@ async def paginate_datasets(
3838
page_size=query_args.page_size,
3939
dataset_ids=query_args.dataset_id,
4040
tag_value_ids=query_args.tag_value_id,
41+
location_id=query_args.location_id,
4142
search_query=query_args.search_query,
4243
)
4344
return PageResponseV1[DatasetDetailedResponseV1].from_pagination(pagination)

data_rentgen/server/api/v1/router/job.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
@router.get("", summary="Paginated list of Jobs")
2929
async def paginate_jobs(
30-
query_args: Annotated[JobPaginateQueryV1, Depends()],
30+
query_args: Annotated[JobPaginateQueryV1, Query()],
3131
job_service: Annotated[JobService, Depends()],
3232
current_user: Annotated[User, Depends(get_user())],
3333
) -> PageResponseV1[JobDetailedResponseV1]:

data_rentgen/server/api/v1/router/location.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# SPDX-License-Identifier: Apache-2.0
33
from typing import Annotated
44

5-
from fastapi import APIRouter, Depends
5+
from fastapi import APIRouter, Depends, Query
66

77
from data_rentgen.db.models import User
88
from data_rentgen.server.errors import get_error_responses
@@ -28,7 +28,7 @@
2828
responses=get_error_responses(include={NotAuthorizedSchema, NotAuthorizedRedirectSchema, InvalidRequestSchema}),
2929
)
3030
async def paginate_locations(
31-
query_args: Annotated[LocationPaginateQueryV1, Depends()],
31+
query_args: Annotated[LocationPaginateQueryV1, Query()],
3232
location_service: Annotated[LocationService, Depends()],
3333
current_user: Annotated[User, Depends(get_user())],
3434
) -> PageResponseV1[LocationDetailedResponseV1]:

data_rentgen/server/api/v1/router/operation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
@router.get("", summary="Paginated list of Operations")
2929
async def operations(
30-
query_args: Annotated[OperationQueryV1, Depends()],
30+
query_args: Annotated[OperationQueryV1, Query()],
3131
unit_of_work: Annotated[UnitOfWork, Depends()],
3232
operation_service: Annotated[OperationService, Depends()],
3333
current_user: Annotated[User, Depends(get_user())],

data_rentgen/server/api/v1/router/run.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
@router.get("", summary="Paginated list of Runs")
2828
async def runs(
29-
query_args: Annotated[RunsQueryV1, Depends()],
29+
query_args: Annotated[RunsQueryV1, Query()],
3030
run_service: Annotated[RunService, Depends()],
3131
current_user: Annotated[User, Depends(get_user())],
3232
) -> PageResponseV1[RunDetailedResponseV1]:

data_rentgen/server/api/v1/router/tag.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# SPDX-License-Identifier: Apache-2.0
33
from typing import Annotated
44

5-
from fastapi import APIRouter, Depends
5+
from fastapi import APIRouter, Depends, Query
66

77
from data_rentgen.db.models.user import User
88
from data_rentgen.server.errors import get_error_responses
@@ -24,7 +24,7 @@
2424

2525
@router.get("", summary="Paginated list of Tags")
2626
async def paginate_tags(
27-
query_args: Annotated[TagPaginateQueryV1, Depends()],
27+
query_args: Annotated[TagPaginateQueryV1, Query()],
2828
tag_service: Annotated[TagService, Depends()],
2929
current_user: Annotated[User, Depends(get_user())],
3030
) -> PageResponseV1[TagDetailedResponseV1]:

data_rentgen/server/schemas/v1/dataset.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
from typing import Literal
66

7-
from fastapi import Query
87
from pydantic import BaseModel, ConfigDict, Field
98

109
from data_rentgen.server.schemas.v1.location import LocationResponseV1
@@ -56,14 +55,13 @@ class DatasetDetailedResponseV1(BaseModel):
5655
class DatasetPaginateQueryV1(PaginateQueryV1):
5756
"""Query params for Dataset paginate request."""
5857

59-
dataset_id: list[int] = Field(Query(default_factory=list), description="Dataset id")
60-
tag_value_id: list[int] = Field(Query(default_factory=list), description="Tag value id")
58+
dataset_id: list[int] = Field(default_factory=list, description="Dataset id")
59+
tag_value_id: list[int] = Field(default_factory=list, description="Tag value id")
60+
location_id: int | None = Field(default=None, description="Location id to filter dataset")
6161
search_query: str | None = Field(
62-
Query(
63-
default=None,
64-
min_length=3,
65-
description="Search query",
66-
),
62+
default=None,
63+
min_length=3,
64+
description="Search query",
6765
)
6866

6967
model_config = ConfigDict(extra="forbid")

data_rentgen/server/schemas/v1/job.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
# SPDX-License-Identifier: Apache-2.0
33
from __future__ import annotations
44

5-
from fastapi import Query
65
from pydantic import BaseModel, ConfigDict, Field
76

87
from data_rentgen.server.schemas.v1.location import LocationResponseV1
@@ -30,13 +29,11 @@ class JobDetailedResponseV1(BaseModel):
3029
class JobPaginateQueryV1(PaginateQueryV1):
3130
"""Query params for Jobs paginate request."""
3231

33-
job_id: list[int] = Field(Query(default_factory=list), description="Job id")
32+
job_id: list[int] = Field(default_factory=list, description="Job id")
3433
search_query: str | None = Field(
35-
Query(
36-
default=None,
37-
min_length=3,
38-
description="Search query",
39-
),
34+
default=None,
35+
min_length=3,
36+
description="Search query",
4037
)
4138

4239
model_config = ConfigDict(extra="forbid")

data_rentgen/server/schemas/v1/location.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
# SPDX-License-Identifier: Apache-2.0
33
from __future__ import annotations
44

5-
from fastapi import Query
65
from pydantic import BaseModel, ConfigDict, Field
76

87
from data_rentgen.server.schemas.v1.address import AddressResponseV1
@@ -55,14 +54,12 @@ class LocationDetailedResponseV1(BaseModel):
5554
class LocationPaginateQueryV1(PaginateQueryV1):
5655
"""Query params for Location paginate request."""
5756

58-
location_id: list[int] = Field(Query(default_factory=list), description="Location id")
59-
location_type: str | None = Field(Query(default=None), description="Location type")
57+
location_id: list[int] = Field(default_factory=list, description="Location id")
58+
location_type: str | None = Field(default=None, description="Location type")
6059
search_query: str | None = Field(
61-
Query(
62-
default=None,
63-
min_length=3,
64-
description="Search query",
65-
),
60+
default=None,
61+
min_length=3,
62+
description="Search query",
6663
)
6764

6865
model_config = ConfigDict(extra="forbid")

0 commit comments

Comments
 (0)