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_tracked(
        input: impl Into<ValidateInput>,
        options: ValidateOptions,
    ) -> ValidateResult<TrackedModel<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_tracked( input: impl Into<ValidateInput>, options: ValidateOptions, ) -> ValidateResult<TrackedModel<Self>>

Create and validate a model from input, also tracking which fields were explicitly set.

This enables Pydantic-compatible exclude_unset behavior when dumping via TrackedModel.

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".

Implementors§

Source§

impl<T: Model + DeserializeOwned> SqlModelValidate for T

Blanket implementation for all Model types that implement DeserializeOwned.