"""Module that responds for input message processing.""" import os from sales.config import LOCAL_FILEPATH, SECRETSMANAGER_KEY_NAME from sales.connectors.mysql import dump_table_to_outfile from sales.connectors.s3 import upload_file_to_s3 from sales.connectors.secretsmanager import fetch_credentials from sales.constants.exceptions import WorkerFailureError def process_message(export_request, logger): """Process the export request.""" logger('Removing local file if it exists') try: os.remove(LOCAL_FILEPATH) except FileNotFoundError: pass logger('Starting mysql export') dump_table_to_outfile( fetch_credentials(SECRETSMANAGER_KEY_NAME), export_request.source_table_name, LOCAL_FILEPATH) if not os.path.isfile(LOCAL_FILEPATH): logger('Mysql export file not found') raise WorkerFailureError('Outfile not found') if not os.access(LOCAL_FILEPATH, os.R_OK): logger('Mysql export not readable') raise WorkerFailureError('Outfile not readable') logger('Uploading exported file') upload_file_to_s3( LOCAL_FILEPATH, export_request.destination_s3_bucket, export_request.destination_s3_path, export_request.sales_file_id) logger('Removing local file') os.remove(LOCAL_FILEPATH) logger('Finished processing message')