"""Blueprint for Ledger Reserve Adjustment Applied.""" from abacus_common_logic.views.validations import validated_request_body from flask import Blueprint, request from owsrequest import flask_request from owsresponse import response from owsresponse.adaptors.flask import flaskify import ledger.logic.ledger_adjustment_applied as logic from ledger.constants.error import ERROR_CODE_AUTHORIZATION from ledger.schemas.ledger_adjustment_applied import LedgerAdjustmentAppliedPostSchema ledger_adjustment_applied_api = Blueprint( 'ledger_adjustment_applied_api', __name__, url_prefix='/ledger-adjustment-applied' ) @ledger_adjustment_applied_api.route('/bulk', methods=['POST']) def bulk_create_ledger_adjustment_applied(): """POST one or more ledger_adjustment_applied records. This endpoint handles retryable requests by checking if adjustments have already been applied and filtering out duplicates before inserting. This prevents duplicate applies to the ledger when a request is retried after a timeout. """ access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: return flaskify( response.create_error_response( code=ERROR_CODE_AUTHORIZATION, message='Unauthorized', status=401, ) ) processed_body = validated_request_body( LedgerAdjustmentAppliedPostSchema(many=True) ) return flaskify(logic.bulk_create_with_deduplication(processed_body))