"""Logic for Legacy Contract.""" from typing import Type from owsresponse import response from abacus_contract import models from abacus_contract.schemas.legacy_contract import LegacyContractSchema from abacus_contract.utils.format_error import validation_error def create_legacy_contract(contract_id, oa_contract_id): """Save legacy contract.""" models.Contract.get_by_id_or_error(contract_id) try: legacy_contract = models.LegacyContract.create( contract_id=contract_id, oa_contract_id=oa_contract_id ) except Exception as exc: return validation_error(str(exc)) return response.Response( message=LegacyContractSchema().dump(legacy_contract), status=201 ) def get_legacy_contract_by_contract_id(contract_id: int) -> Type[response.Response]: """Get a legacy_contract by contract_id. Args: contract_id (int): Id of the contract Returns: legacy_contract for specified contract_id. """ result = models.LegacyContract.get_by_contract_id(contract_id) return response.Response( message=LegacyContractSchema().dump(result), status=200 ) def update_legacy_contract(legacy_contract, oa_contract_id): """Update legacy contract.""" if oa_contract_id and not legacy_contract.oa_contract_id == oa_contract_id: legacy_contract.update_attributes(oa_contract_id=oa_contract_id)