"""Lambda index-add-product function logic.""" from content_utils.connectors.graphql import LambdaGraphQLConnector from content_utils.connectors.opensearch import LambdaOpensearchConnector from owsclient import M2MTokenManager from secrets_manager.lambda_ext import LambdaSecretsManager from src import config os_opts = {} if config.OPENSEARCH_PORT: os_opts.update(port=int(config.OPENSEARCH_PORT)) if config.OPENSEARCH_INDEX_ALIAS: os_opts.update(alias_name=config.OPENSEARCH_INDEX_ALIAS) os_connector = LambdaOpensearchConnector( config.OPENSEARCH_ENDPOINT, config.app_logger, **os_opts ) m2m_token_manager = M2MTokenManager( environment=config.ENVIRONMENT, service_name=config.APPLICATION_NAME, secrets_manager=LambdaSecretsManager( environment=config.ENVIRONMENT, service_name=config.APPLICATION_NAME ) ) graphql_connector = LambdaGraphQLConnector( graphql_service_name=config.GRAPHQL_SERVICE_NAME, application_name=config.APPLICATION_NAME, logger=config.app_logger, environment=config.ENVIRONMENT, m2m_token_manager=m2m_token_manager, raise_on_error=True ) def add_to_index(data): """Add a product to the index.""" formatted_row_data = { 'review_queue_id': data.get('id'), 'product_id': data.get('product_id'), 'added_at': data.get('created_datetime') } os_connector.check_product_existing_status( formatted_row_data, expected_status='not found') index_record = graphql_connector.get_indexable_product(formatted_row_data) os_connector.index_product(index_record)