Aller au contenu principal
Version: v0.6.0

Champs lax

Un champ lax est à la fois un champ d'entrée et de sortie dont la valeur peut ou non être fournie à la création (par ex. email, phone_number).

  • Déclaré avec #[lax(valeur_ou_résolveur)] -- une valeur par défaut statique, ou un résolveur |ctx, opts| -> T, utilisé chaque fois que le champ est absent.
  • Peut avoir un validateur et un re-validateur via #[validate]/#[re_validate].
  • Peut utiliser #[ignore], #[ignore_init] et #[ignore_update] pour ignorer le traitement sous condition.
  • Peut utiliser #[readonly] pour rejeter les mises à jour, si la valeur par défaut est statique.
  • Peut avoir des gestionnaires d'événements on_delete et on_success, ainsi que on_failure s'il a un validateur.

Exemple​

bio retombe sur une valeur par défaut statique lorsqu'elle est absente, et est validée lorsqu'elle est fournie :

use ivo::ivo_schema;

#[ivo_schema(input(DataInput, derive(Debug, Clone, PartialEq)))]
mod lax_schema {
struct Fields {
#[lax("default_bio".to_string())]
#[validate(|v: String, _, _| {
if v.len() > 100 {
return Err(("bio too long".into(), None));
}
Ok(None)
})]
pub bio: String,
}
}

fn main() {
let (created, _ctx_options) = lax_schema::DataInputModel
.create(lax_schema::PartialDataInput { bio: None }, ())
.unwrap();

assert_eq!(created.bio, "default_bio");
println!("{:?}", created); // DataInput { bio: "default_bio" }
}

Autres exemples​

Essayez-le dans le navigateur​

username a une valeur par défaut statique et aucun validateur - laissez l'entrée vide pour voir la valeur par défaut s'appliquer.

Loading playground…