"""Function Logic.""" from kafka_utils.consumer.message.product import ProductEventMessage from kafka_utils.exceptions import IneligibleEventException from src.logic.matches import collect_all_matches_for_publish from src.logic.ows_assets import get_matches_by_product_id from src.logic.publish import publish_audio_infringements_event def processing_logic(topic, value, deserializer=None): """Single event handling logic.""" review_msg = ProductEventMessage( message=value, topic=topic, value_deserializer=deserializer ) if review_msg.operation_context != 'approve': raise IneligibleEventException(f'skip operations {review_msg.operation_context}') data = get_matches_by_product_id(review_msg.product_id) if data.get('items'): matches_for_publish = collect_all_matches_for_publish(data['items']) if len(matches_for_publish) == 0: raise IneligibleEventException( f'no matches to publish for product_id: {review_msg.product_id}' ) publish_audio_infringements_event(matches_for_publish) else: raise Exception( f'ows-assets response does not contain items for product_id: {review_msg.product_id}' )