1616from strawberry_django .pagination import OffsetPaginationInput
1717
1818from api .models import (
19+ SDG ,
1920 Dataset ,
21+ Geography ,
2022 Metadata ,
2123 Organization ,
2224 Sector ,
@@ -62,6 +64,8 @@ class UpdateUseCaseMetadataInput:
6264 metadata : List [UCMetadataItemType ]
6365 tags : Optional [List [str ]]
6466 sectors : List [uuid .UUID ]
67+ sdgs : Optional [List [uuid .UUID ]]
68+ geographies : Optional [List [int ]] = None
6569
6670
6771use_case_running_status = strawberry .enum (UseCaseRunningStatus ) # type: ignore
@@ -79,6 +83,8 @@ class UseCaseInputPartial:
7983 platform_url : Optional [str ] = None
8084 tags : Optional [List [str ]] = None
8185 sectors : Optional [List [uuid .UUID ]] = None
86+ sdgs : Optional [List [uuid .UUID ]] = None
87+ geographies : Optional [List [int ]] = None
8288 started_on : Optional [datetime .date ] = None
8389 completed_on : Optional [datetime .date ] = None
8490
@@ -202,6 +208,23 @@ def _update_usecase_sectors(usecase: UseCase, sectors: List[uuid.UUID]) -> None:
202208 usecase .save ()
203209
204210
211+ @trace_resolver (name = "update_usecase_geographies" , attributes = {"component" : "usecase" })
212+ def _update_usecase_geographies (usecase : UseCase , geography_ids : List [int ]) -> None :
213+ """Update geographies for a usecase."""
214+ usecase .geographies .clear ()
215+ geographies = Geography .objects .filter (id__in = geography_ids )
216+ usecase .geographies .add (* geographies )
217+ usecase .save ()
218+
219+
220+ @trace_resolver (name = "update_usecase_sdgs" , attributes = {"component" : "usecase" })
221+ def _update_usecase_sdgs (usecase : UseCase , sdgs : List [uuid .UUID ]) -> None :
222+ sdgs_objs = SDG .objects .filter (id__in = sdgs )
223+ usecase .sdgs .clear ()
224+ usecase .sdgs .add (* sdgs_objs )
225+ usecase .save ()
226+
227+
205228@trace_resolver (
206229 name = "add_update_usecase_metadata" ,
207230 attributes = {"component" : "usecase" , "operation" : "mutation" },
@@ -339,6 +362,10 @@ def add_update_usecase_metadata(
339362 _update_usecase_tags (usecase , update_metadata_input .tags )
340363 _add_update_usecase_metadata (usecase , metadata_input )
341364 _update_usecase_sectors (usecase , update_metadata_input .sectors )
365+ if update_metadata_input .sdgs is not None :
366+ _update_usecase_sdgs (usecase , update_metadata_input .sdgs )
367+ if update_metadata_input .geographies is not None :
368+ _update_usecase_geographies (usecase , update_metadata_input .geographies )
342369 return TypeUseCase .from_django (usecase )
343370
344371 @strawberry_django .mutation (handle_django_errors = False )
0 commit comments