"""Schema for abacus event serialization.""" from abacus_common_logic.marshalling.custom_fields import ma class AbacusEventSchema(ma.Schema): """Shared Abacus Event fields. Abacus Event is a polymorphic join table.""" abacus_event_id = ma.IntegerId(required=True) event_date = ma.FormattedDateTime() event_name = ma.NonemptyString(required=True) previous_abacus_event_id = ma.IntegerId(allow_none=True) rolled_back_at = ma.FormattedDateTime(allow_none=True) statement_period_id = ma.NonNegativeInteger() target_id = ma.NonNegativeInteger(required=True) target_type = ma.NonemptyString(required=True) created_by = ma.NonemptyString(required=True) class AbacusEventPaymentApprovalCountSchema(ma.Schema): """Schema for payment approval event fields.""" approval_count = ma.NonNegativeInteger(required=True) payment_group_payment_id = ma.IntegerId(required=True) class AbacusEventByTargetTypeSchema(ma.Schema): """Schema for event list fetch.""" abacus_event_id = ma.IntegerId() event_name = ma.NonemptyString() statement_period_id = ma.NonNegativeInteger() rolled_back_at = ma.FormattedDateTime(allow_none=True) event_date = ma.FormattedDateTime() created_by = ma.NonemptyString(required=True) target_id = ma.NonNegativeInteger(required=True) class RetryEventsSchema(ma.Schema): """Schema for retry events payload.""" target_type = ma.NonemptyString(required=True) target_id = ma.NonNegativeInteger(required=True) event_name = ma.NonemptyString(required=True)