from enum import Enum
[docs]
class MessageSchemaFields(Enum):
"""Enum for standard message schema fields used in pub/sub messages."""
SOURCE = "source"
MESSAGE_TYPE = "messageType"
MESSAGE_SUBJECT = "messageSubject"
PRIORITY = "priority"
PAYLOAD = "payload"
METADATA = "metadata"
[docs]
class MessageData(Enum):
"""Enum for standard message data fields used in pub/sub messages."""
CLIENT_ID = "clientID"
STRUCTURE_ENTITY_IDS = "structureEntityIDs"
STRUCTURE_CORRELATION_IDS = "StructureCorrelationIDs"
STRUCTURE_CORRELATION_IDS_FOUND = "structureCorrelationIDs_found"
STRUCTURE_CORRELATION_IDS_UNFOUND = "structureCorrelationIDs_unfound"
ENTITY_IDS = "entityIDs"
WEBSOCKET_MESSAGE = "websocketMessage"
STATUS = "status"
DETAILS = "details"
UPLOAD_UUID = "uploadUUID" # the messaging field for the upload UUID, differs from the bq and manifest key: upload_uuid
[docs]
class MessageType(Enum):
"""Enum for standard message types."""
EVENT = "event"
ALERT = "alert"
METRIC = "metric"
ERROR = "error"
SUCCESS = "success"
[docs]
class Priority(Enum):
"""Enum for message priority levels."""
LOW = "low"
MEDIUM = "medium"
HIGH = "high"
[docs]
class AttributeKeys(Enum):
"""Enum for standard attribute keys used in pub/sub messages."""
EVENT_AUDIENCE = "event_audience"
# CORRELATION_ID = "correlationID"
ORIGIN_SERVICE = "origin_service"
[docs]
class EventAudience(Enum):
"""Enum for event audience types."""
RAW_STRUCTURE_POSTED = "raw_structure_posted"
WEBSOCKET_NOTIFICATION = "websocket-notification"
BQ_TABLE_PUBLICATION = "bq-table-publication"
GET_STRUCTURE_DATA = "get-structure-data"
GET_STRUCTURE_DATA_BACKOFF = "get-structure-data-backoff"
STRUCTURE_POSTED = "structure-posted"
ETL_SERVICE = "standardize-structure-data"
STANDARD_STRUCTURE_AVRO_POSTED = "standard-structure-avro-posted"
CHECK_UPLOAD_FOR_STRUCTURE = "check-upload-for-structure"
METADATA_UPDATE = "metadata-update"
[docs]
class Topic(Enum):
"""Enum for pub/sub topics."""
COLUMNA_TEST = "columna-test"
# COLUMNA_PROD = "columna-prod"
[docs]
class Schema(Enum):
"""Enum for pub/sub schemas."""
COLUMNA_PRIMARY = "columna-primary"
[docs]
class GCPMessageFields(Enum):
"""Enum for top level pub/sub message fields."""
"""Enum for standard GCP pub/sub message fields."""
DATA = "data"
ATTRIBUTES = "attributes"
MESSAGE_ID = "messageId"
PUBLISH_TIME = "publishTime"
ORDERING_KEY = "orderingKey"