"""Schemas for report_payment serialization.""" from abacus_common_logic.marshalling.custom_fields import ma from marshmallow.validate import Length from payment.constants.constants import REPORT_TYPE class ReportPaymentPutSchema(ma.Schema): """Report Payment PUT schema.""" report_type = ma.Enum(options=REPORT_TYPE, required=True) report_export_url = ma.NonemptyString(required=True) class ReportPaymentDetailSchema(ReportPaymentPutSchema): """Report Payment Detail schema.""" report_payment_id = ma.IntegerId(required=True) target_type = ma.String(required=True, validate=Length(min=1, max=64)) target_id = ma.IntegerId(required=True) original_filename = ma.String(allow_none=True, required=False) created_at = ma.FormattedDateTime(required=True) created_by = ma.String(required=True) last_modified = ma.FormattedDateTime(required=True) last_modified_by = ma.String(required=True) class ReportPaymentDownloadSchema(ma.Schema): """Report Payment Download schema.""" download_url = ma.NonemptyString(required=True)