impl_data_entity_validated

Macro impl_data_entity_validated 

Source
macro_rules! impl_data_entity_validated {
    (
        $type:ident,
        $type_name:expr,
        [ $( $indexed_field:expr ),* $(,)? ],
        {
            $( $specific_field:ident : $specific_type:ty ),* $(,)?
        }
        $(,)?
        validate: {
            $(
                $op:ident: {
                    $(
                        $val_field:ident: [ $( $validator:tt )* ]
                    ),* $(,)?
                }
            ),* $(,)?
        }
        $(,)?
        filters: {
            $(
                $fop:ident: {
                    $(
                        $fil_field:ident: [ $( $filter:tt )* ]
                    ),* $(,)?
                }
            ),* $(,)?
        }
        $(,)?
    ) => { ... };
}
Expand description

Extended macro to create a Data entity with validation and filtering

This macro extends impl_data_entity! with declarative validation and filtering support.

§Example

use this::prelude::*;

impl_data_entity_validated!(
    Invoice,
    "invoice",
    ["name", "number"],
    {
        number: String,
        amount: f64,
        due_date: Option<String>,
    },
    validate: {
        create: {
            number: [required, string_length(3, 50)],
            amount: [required, positive],
        },
        update: {
            amount: [optional, positive],
        },
    },
    filters: {
        create: {
            number: [trim, uppercase],
            amount: [round_decimals(2)],
        },
    }
);