import json from typing import List, Optional from dataclasses import dataclass, field from marshmallow import EXCLUDE from enum import Enum class DetailType(Enum): ACCOUNT_DELETE = 'dna_account.delete' ACCOUNT_CREATE = 'dna_account.create' ACCOUNT_UPDATE = 'dna_account.update' @dataclass class Record: message_id: str = field(metadata={"data_key": "messageId"}) body: str detail_type: Optional[str] account_id: Optional[str] class Meta: unknown = EXCLUDE def __post_init__(self): parsed_body = json.loads(self.body) self.account_id = parsed_body["detail"]["id"] self.detail_type = parsed_body["detail-type"] @dataclass class Event: records: List[Record] = field(metadata={"data_key": "Records"}) class Meta: unknown = EXCLUDE