Skip to content

Commit 94ba0a8

Browse files
committed
adds filters in service layer
1 parent 7f7293f commit 94ba0a8

File tree

5 files changed

+28
-14
lines changed

5 files changed

+28
-14
lines changed

services/api-server/src/simcore_service_api_server/_service_jobs.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ class JobService:
3939

4040
async def list_jobs(
4141
self,
42+
job_parent_resource_name: str,
4243
*,
43-
filter_by_job_parent_resource_name_prefix: str,
44+
filter_by_job_custom_metadata: list[dict[str, str]] | None = None,
4445
pagination_offset: PageOffsetInt = 0,
4546
pagination_limit: PageLimitInt = MAXIMUM_NUMBER_OF_ITEMS_PER_PAGE - 1,
4647
) -> tuple[list[Job], PageMetaInfoLimitOffset]:
@@ -50,9 +51,10 @@ async def list_jobs(
5051
projects_page = await self._web_rpc_client.list_projects_marked_as_jobs(
5152
product_name=self.product_name,
5253
user_id=self.user_id,
53-
offset=pagination_offset,
54-
limit=pagination_limit,
55-
job_parent_resource_name_prefix=filter_by_job_parent_resource_name_prefix,
54+
pagination_offset=pagination_offset,
55+
pagination_limit=pagination_limit,
56+
filter_by_job_parent_resource_name_prefix=job_parent_resource_name,
57+
filter_by_any_custom_metadata=filter_by_job_custom_metadata,
5658
)
5759

5860
# 2. Convert projects to jobs

services/api-server/src/simcore_service_api_server/_service_solvers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,9 @@ async def list_jobs(
113113

114114
# 2. list jobs under job_parent_resource_name
115115
return await self.job_service.list_jobs(
116+
job_parent_resource_name=job_parent_resource_name,
116117
pagination_offset=pagination_offset,
117118
pagination_limit=pagination_limit,
118-
filter_by_job_parent_resource_name_prefix=job_parent_resource_name,
119119
)
120120

121121
async def solver_release_history(

services/api-server/src/simcore_service_api_server/_service_studies.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ async def list_jobs(
5252

5353
# 2. list jobs under job_parent_resource_name
5454
return await self.job_service.list_jobs(
55+
job_parent_resource_name=job_parent_resource_name,
5556
pagination_offset=pagination_offset,
5657
pagination_limit=pagination_limit,
57-
filter_by_job_parent_resource_name_prefix=job_parent_resource_name,
5858
)

services/api-server/src/simcore_service_api_server/services_rpc/wb_api_server.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111
from models_library.resource_tracker_licensed_items_checkouts import (
1212
LicensedItemCheckoutID,
1313
)
14-
from models_library.rpc.webserver.projects import ListProjectsMarkedAsJobRpcFilter
14+
from models_library.rpc.webserver.projects import (
15+
ListProjectsMarkedAsJobRpcFilter,
16+
MetadataFilterItem,
17+
)
1518
from models_library.services_types import ServiceRunID
1619
from models_library.users import UserID
1720
from models_library.wallets import WalletID
@@ -225,20 +228,29 @@ async def list_projects_marked_as_jobs(
225228
*,
226229
product_name: ProductName,
227230
user_id: UserID,
228-
offset: int = 0,
229-
limit: int = 50,
230-
job_parent_resource_name_prefix: str | None = None,
231+
pagination_offset: int = 0,
232+
pagination_limit: int = 50,
233+
filter_by_job_parent_resource_name_prefix: str | None,
234+
filter_by_any_custom_metadata: list[dict[str, str]] | None,
231235
):
232236
filters = ListProjectsMarkedAsJobRpcFilter(
233-
job_parent_resource_name_prefix=job_parent_resource_name_prefix
237+
job_parent_resource_name_prefix=filter_by_job_parent_resource_name_prefix,
238+
any_of_metadata=(
239+
[
240+
MetadataFilterItem(name=key, pattern=value)
241+
for key, value in filter_by_any_custom_metadata
242+
]
243+
if filter_by_any_custom_metadata
244+
else None
245+
),
234246
)
235247

236248
return await projects_rpc.list_projects_marked_as_jobs(
237249
rpc_client=self._client,
238250
product_name=product_name,
239251
user_id=user_id,
240-
offset=offset,
241-
limit=limit,
252+
offset=pagination_offset,
253+
limit=pagination_limit,
242254
filters=filters,
243255
)
244256

services/api-server/tests/unit/service/test_service_jobs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ async def test_list_jobs_by_resource_prefix(
1616
):
1717
# Test with default pagination parameters
1818
jobs, page_meta = await job_service.list_jobs(
19-
filter_by_job_parent_resource_name_prefix="solvers/some-solver"
19+
job_parent_resource_name="solvers/some-solver"
2020
)
2121

2222
assert isinstance(jobs, list)

0 commit comments

Comments
 (0)