Skip to main content

SqlModelValidate

Trait SqlModelValidate 

Source
pub trait SqlModelValidate:
    Model
    + DeserializeOwned
    + Sized {
    // Provided methods
    fn sql_model_validate(
        input: impl Into<ValidateInput>,
        options: ValidateOptions,
    ) -> ValidateResult<Self> { ... }
    fn sql_model_validate_json(json: &str) -> ValidateResult<Self> { ... }
    fn sql_model_validate_dict(
        dict: HashMap<String, Value>,
    ) -> ValidateResult<Self> { ... }
}
Expand description

Model-aware validation that supports field aliases.

Unlike the generic ModelValidate, this trait uses the Model::fields() metadata to transform aliased input keys to their actual field names before deserialization.

§Example

#[derive(Model, Serialize, Deserialize)]
struct User {
    #[sqlmodel(validation_alias = "userName")]
    name: String,
}

// Input with alias key works
let user = User::sql_model_validate(r#"{"userName": "Alice"}"#)?;
assert_eq!(user.name, "Alice");

Provided Methods§

Source

fn sql_model_validate( input: impl Into<ValidateInput>, options: ValidateOptions, ) -> ValidateResult<Self>

Create and validate a model from input, applying validation aliases.

Source

fn sql_model_validate_json(json: &str) -> ValidateResult<Self>

Create and validate a model from JSON string with default options.

Source

fn sql_model_validate_dict(dict: HashMap<String, Value>) -> ValidateResult<Self>

Create and validate a model from a HashMap with default options.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<T: Model + DeserializeOwned> SqlModelValidate for T

Blanket implementation for all Model types that implement DeserializeOwned.