"""Common logic.""" from typing import Any, List import config from src.constants.table_mapping import PROJECT_TABLES, RELEASE_TABLES, TRACK_TABLES from src.logic.types import OpensearchBulkDocument def check_document_exists( documents: List[OpensearchBulkDocument], target_doc_id: int, index_name: str ) -> bool: """Check if doc_id exists in existing documents.""" return any( ( d.get("_id") == target_doc_id and d.get("_index") == index_name and d.get("_op_type") == "update" ) for d in documents ) def is_duplicate_event(event: dict[str, Any], documents: List[OpensearchBulkDocument]) -> bool: """Check if this event is duplicate or not.""" if event.get("type") == "delete": # ignore dupe deletes return False if event.get("table") in RELEASE_TABLES: doc_id = event.get("data", {}).get("release_id") index_name = config.PRODUCT_INDEX_NAME return check_document_exists(documents, doc_id, index_name) if event.get("table") in PROJECT_TABLES: doc_id = event.get("data", {}).get("project_id") index_name = config.PROJECT_INDEX_NAME return check_document_exists(documents, doc_id, index_name) if event.get("table") in TRACK_TABLES: doc_id = event.get("data", {}).get("id") index_name = config.TRACK_INDEX_NAME return check_document_exists(documents, doc_id, index_name) else: return False