"""Logic for the ReferencePaymentEntity endpoints.""" from owsresponse import response from abacus_contract import models from abacus_contract.schemas.reference_payment_entity import ( ReferencePaymentEntitySchema, ) from abacus_contract.utils.format_response import prepare_dataload_response def get_payment_entities_by_ids( payment_entity_ids: list[int], ) -> response.Response: """Retrieve reference payment entities for the given ids. Args: payment_entity_ids (list[int]): A list of reference payment entity IDs. Returns: response.Response: One ordered entry per requested id (the entity or None). """ unique_ids = list(dict.fromkeys(payment_entity_ids)) items = models.ReferencePaymentEntity.get_by_ids(unique_ids) payment_entities = ReferencePaymentEntitySchema(many=True).dump(items) message = prepare_dataload_response( unique_ids, payment_entities, 'reference_payment_entity_id', ) return response.Response( message=message, status=200, )