"""Schema validation for payment hold.""" from abacus_common_logic.marshalling.custom_fields import ma from marshmallow import validate from abacus_account.constants.constants import DEFAULT_PAGE_LIMIT, DEFAULT_PAGE_OFFSET class PaymentHoldSchema(ma.Schema): """Shared payment hold fields.""" payment_hold_id = ma.IntegerId(required=True) account_id = ma.NonNegativeInteger(required=True) is_on_hold = ma.Boolean(required=True) start_date = ma.FormattedDate(required=True) reason = ma.NonemptyString(required=True) created_at = ma.FormattedDate(required=False) created_by = ma.NonemptyString(required=False, allow_none=False) last_modified = ma.FormattedDate(required=False) last_modified_by = ma.NonemptyString(required=False, allow_none=False) class PaymentHoldListInputSchema(ma.Schema): """Payment hold list query parameters.""" limit = ma.Integer( load_default=DEFAULT_PAGE_LIMIT, validate=[validate.Range(min=1)] ) offset = ma.Integer( load_default=DEFAULT_PAGE_OFFSET, validate=[validate.Range(min=0)] ) account_ids = ma.List(ma.IntegerId(), allow_none=True)