use std::sync::Arc;

use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize)]
#[serde(tag = "type")]
pub enum Validation {
    #[serde(rename = "ValidateNotNullOrEmpty")]
    NotNullOrEmpty,
    #[serde(rename = "ValidateRange")]
    Range { min: i32, max: i32 },
    #[serde(rename = "ValidateScript")]
    Script { value: Arc<str> },
    #[serde(rename = "ValidatePattern")]
    Pattern { value: Arc<str> },
    #[serde(rename = "ValidateSet")]
    Set { values: Vec<Arc<str>> },
}