from delivery_metadata.api.app import app from delivery_metadata.constants import TerritoryStandard from delivery_metadata.models import Model from delivery_metadata.models.schemas import ( TerritoryCodeA2, ) class Territory(Model): orch_id: int standard: str territory_name: str territory_code_a2: str territory_code_a3: str territory_code_numeric: int continent: str class Pagination(Model): type: str offset: int limit: int total_records: int class TerritoryResponse(Model): items: list[Territory] pagination: Pagination async def get_all_territories(standard: TerritoryStandard) -> TerritoryResponse: response = await app.state.ows_connector.get( service_name="ows-territories", path=f"/territory/{standard.value}", ) response.raise_for_status() return TerritoryResponse(**response.json()) async def convert_territories( from_standard: TerritoryStandard, to_standard: TerritoryStandard, territories: list[TerritoryCodeA2], ) -> TerritoryResponse: codes = ",".join([x.country_code for x in territories]) response = await app.state.ows_connector.get( service_name="ows-territories", path=f"/conversion/{from_standard.value}/{to_standard.value}", params={"territory_code_a2": codes}, ) response.raise_for_status() return TerritoryResponse(**response.json())