38 lines
808 B
Python
38 lines
808 B
Python
|
|
|
|
from dataclasses import asdict, dataclass
|
|
import uuid, json
|
|
|
|
from .Metadata import Metadata
|
|
|
|
|
|
@dataclass
|
|
class MessageDataWrapper:
|
|
status: str # COMPLETED / ERROR
|
|
message: str | None
|
|
data: Metadata | None
|
|
derivedFromEventId: str | None
|
|
|
|
def to_dict(self):
|
|
return asdict(self)
|
|
|
|
|
|
class KafkaMessage:
|
|
referenceId: str
|
|
eventId: str = str(uuid.uuid4())
|
|
data: MessageDataWrapper
|
|
|
|
def __init__(self, referenceId: str, data: MessageDataWrapper) -> None:
|
|
self.referenceId = referenceId
|
|
self.data = data
|
|
pass
|
|
|
|
def to_json(self):
|
|
payload = {
|
|
'referenceId': self.referenceId,
|
|
'eventId': self.eventId,
|
|
'data': self.data.to_dict() if self.data else None
|
|
}
|
|
return json.dumps(payload)
|
|
|
|
|