2222from werkzeug .exceptions import BadRequest , Conflict , NotFound
2323from werkzeug .routing import MapAdapter , Rule , Submount
2424
25+ from app .interfaces .base import PagingMetadata
2526from app .util .converters import IdentifierToBase64URLConverter , IdShortPathConverter , base64url_decode
2627from .base import ObjectStoreWSGIApp , APIResponse , is_stripped_request , HTTPApiDecoder , T
2728from app .model import ServiceSpecificationProfileEnum , ServiceDescription
@@ -429,7 +430,9 @@ def _get_submodel_reference(
429430 return ref
430431 raise NotFound (f"The AAS { aas !r} doesn't have a submodel reference to { submodel_id !r} !" )
431432
432- def _get_shells (self , request : Request ) -> Tuple [Iterator [model .AssetAdministrationShell ], Optional [int ]]:
433+ def _get_shells (
434+ self , request : Request
435+ ) -> Tuple [Iterator [model .AssetAdministrationShell ], Optional [PagingMetadata ]]:
433436 aas : Iterator [model .AssetAdministrationShell ] = self ._get_all_obj_of_type (model .AssetAdministrationShell )
434437
435438 id_short = request .args .get ("idShort" )
@@ -475,13 +478,13 @@ def _get_shells(self, request: Request) -> Tuple[Iterator[model.AssetAdministrat
475478 aas ,
476479 )
477480
478- paginated_aas , end_index = self ._get_slice (request , aas )
479- return paginated_aas , end_index
481+ paginated_aas , paging_metadata = self ._get_slice (request , aas )
482+ return paginated_aas , paging_metadata
480483
481484 def _get_shell (self , url_args : Dict ) -> model .AssetAdministrationShell :
482485 return self ._get_obj_ts (url_args ["aas_id" ], model .AssetAdministrationShell )
483486
484- def _get_submodels (self , request : Request ) -> Tuple [Iterator [model .Submodel ], Optional [int ]]:
487+ def _get_submodels (self , request : Request ) -> Tuple [Iterator [model .Submodel ], Optional [PagingMetadata ]]:
485488 submodels : Iterator [model .Submodel ] = self ._get_all_obj_of_type (model .Submodel )
486489 id_short = request .args .get ("idShort" )
487490 if id_short is not None :
@@ -492,19 +495,19 @@ def _get_submodels(self, request: Request) -> Tuple[Iterator[model.Submodel], Op
492495 semantic_id , model .Reference , False # type: ignore[type-abstract]
493496 )
494497 submodels = filter (lambda sm : sm .semantic_id == spec_semantic_id , submodels )
495- paginated_submodels , end_index = self ._get_slice (request , submodels )
496- return paginated_submodels , end_index
498+ paginated_submodels , paging_metadata = self ._get_slice (request , submodels )
499+ return paginated_submodels , paging_metadata
497500
498501 def _get_submodel (self , url_args : Dict ) -> model .Submodel :
499502 return self ._get_obj_ts (url_args ["submodel_id" ], model .Submodel )
500503
501504 def _get_submodel_submodel_elements (
502505 self , request : Request , url_args : Dict
503- ) -> Tuple [Iterator [model .SubmodelElement ], Optional [int ]]:
506+ ) -> Tuple [Iterator [model .SubmodelElement ], Optional [PagingMetadata ]]:
504507 submodel = self ._get_submodel (url_args )
505508 paginated_submodel_elements : Iterator [model .SubmodelElement ]
506- paginated_submodel_elements , end_index = self ._get_slice (request , submodel .submodel_element )
507- return paginated_submodel_elements , end_index
509+ paginated_submodel_elements , paging_metadata = self ._get_slice (request , submodel .submodel_element )
510+ return paginated_submodel_elements , paging_metadata
508511
509512 def _get_submodel_submodel_elements_id_short_path (self , url_args : Dict ) -> model .SubmodelElement :
510513 submodel = self ._get_submodel (url_args )
@@ -523,8 +526,8 @@ def get_description(self, request: Request, url_args: Dict, response_t: Type[API
523526
524527 # ------ AAS REPO ROUTES -------
525528 def get_aas_all (self , request : Request , url_args : Dict , response_t : Type [APIResponse ], ** _kwargs ) -> Response :
526- aashells , cursor = self ._get_shells (request )
527- return response_t (list (aashells ), cursor = cursor )
529+ aashells , paging_metadata = self ._get_shells (request )
530+ return response_t (list (aashells ), paging_metadata = paging_metadata )
528531
529532 def post_aas (
530533 self , request : Request , url_args : Dict , response_t : Type [APIResponse ], map_adapter : MapAdapter
@@ -540,9 +543,9 @@ def post_aas(
540543 def get_aas_all_reference (
541544 self , request : Request , url_args : Dict , response_t : Type [APIResponse ], ** _kwargs
542545 ) -> Response :
543- aashells , cursor = self ._get_shells (request )
546+ aashells , paging_metadata = self ._get_shells (request )
544547 references : list [model .ModelReference ] = [model .ModelReference .from_referable (aas ) for aas in aashells ]
545- return response_t (references , cursor = cursor )
548+ return response_t (references , paging_metadata = paging_metadata )
546549
547550 # --------- AAS ROUTES ---------
548551 def get_aas (self , request : Request , url_args : Dict , response_t : Type [APIResponse ], ** _kwargs ) -> Response :
@@ -651,8 +654,8 @@ def aas_submodel_refs_redirect(
651654
652655 # ------ SUBMODEL REPO ROUTES -------
653656 def get_submodel_all (self , request : Request , url_args : Dict , response_t : Type [APIResponse ], ** _kwargs ) -> Response :
654- submodels , cursor = self ._get_submodels (request )
655- return response_t (list (submodels ), cursor = cursor , stripped = is_stripped_request (request ))
657+ submodels , paging_metadata = self ._get_submodels (request )
658+ return response_t (list (submodels ), paging_metadata = paging_metadata , stripped = is_stripped_request (request ))
656659
657660 def post_submodel (
658661 self , request : Request , url_args : Dict , response_t : Type [APIResponse ], map_adapter : MapAdapter
@@ -669,17 +672,17 @@ def get_submodel_all_metadata(self, request: Request, url_args: Dict, response_t
669672 ** _kwargs ) -> Response :
670673 if "level" in request .args :
671674 raise BadRequest (f"level cannot be used when retrieving metadata!" )
672- submodels , cursor = self ._get_submodels (request )
673- return response_t (list (submodels ), cursor = cursor , stripped = True )
675+ submodels , paging_metadata = self ._get_submodels (request )
676+ return response_t (list (submodels ), paging_metadata = paging_metadata , stripped = True )
674677
675678 def get_submodel_all_reference (
676679 self , request : Request , url_args : Dict , response_t : Type [APIResponse ], ** _kwargs
677680 ) -> Response :
678- submodels , cursor = self ._get_submodels (request )
681+ submodels , paging_metadata = self ._get_submodels (request )
679682 references : list [model .ModelReference ] = [
680683 model .ModelReference .from_referable (submodel ) for submodel in submodels
681684 ]
682- return response_t (references , cursor = cursor , stripped = is_stripped_request (request ))
685+ return response_t (references , paging_metadata = paging_metadata , stripped = is_stripped_request (request ))
683686
684687 # --------- SUBMODEL ROUTES ---------
685688
@@ -713,24 +716,26 @@ def put_submodel(self, request: Request, url_args: Dict, response_t: Type[APIRes
713716 def get_submodel_submodel_elements (
714717 self , request : Request , url_args : Dict , response_t : Type [APIResponse ], ** _kwargs
715718 ) -> Response :
716- submodel_elements , cursor = self ._get_submodel_submodel_elements (request , url_args )
717- return response_t (list (submodel_elements ), cursor = cursor , stripped = is_stripped_request (request ))
719+ submodel_elements , paging_metadata = self ._get_submodel_submodel_elements (request , url_args )
720+ return response_t (
721+ list (submodel_elements ), paging_metadata = paging_metadata , stripped = is_stripped_request (request )
722+ )
718723
719724 def get_submodel_submodel_elements_metadata (self , request : Request , url_args : Dict , response_t : Type [APIResponse ],
720725 ** _kwargs ) -> Response :
721726 if "level" in request .args :
722727 raise BadRequest (f"level cannot be used when retrieving metadata!" )
723- submodel_elements , cursor = self ._get_submodel_submodel_elements (request , url_args )
724- return response_t (list (submodel_elements ), cursor = cursor , stripped = True )
728+ submodel_elements , paging_metadata = self ._get_submodel_submodel_elements (request , url_args )
729+ return response_t (list (submodel_elements ), paging_metadata = paging_metadata , stripped = True )
725730
726731 def get_submodel_submodel_elements_reference (
727732 self , request : Request , url_args : Dict , response_t : Type [APIResponse ], ** _kwargs
728733 ) -> Response :
729- submodel_elements , cursor = self ._get_submodel_submodel_elements (request , url_args )
734+ submodel_elements , paging_metadata = self ._get_submodel_submodel_elements (request , url_args )
730735 references : list [model .ModelReference ] = [
731736 model .ModelReference .from_referable (element ) for element in list (submodel_elements )
732737 ]
733- return response_t (references , cursor = cursor , stripped = is_stripped_request (request ))
738+ return response_t (references , paging_metadata = paging_metadata , stripped = is_stripped_request (request ))
734739
735740 def get_submodel_submodel_elements_id_short_path (
736741 self , request : Request , url_args : Dict , response_t : Type [APIResponse ], ** _kwargs
0 commit comments