rustapi_validate/v2/
mod.rs

1//! # RustAPI Validation Engine v2
2//!
3//! A custom validation engine with async support, replacing the external `validator` dependency.
4//!
5//! ## Features
6//!
7//! - Sync and async validation support
8//! - Database uniqueness/existence checks
9//! - External API validation
10//! - Custom error messages with interpolation
11//! - Validation groups (Create, Update, Custom)
12//! - Serializable validation rules
13//!
14//! ## Example
15//!
16//! ```rust,ignore
17//! use rustapi_validate::v2::prelude::*;
18//!
19//! struct CreateUser {
20//!     email: String,
21//!     username: String,
22//! }
23//!
24//! impl Validate for CreateUser {
25//!     fn validate(&self) -> Result<(), ValidationErrors> {
26//!         let mut errors = ValidationErrors::new();
27//!         
28//!         if let Err(e) = EmailRule::default().validate(&self.email) {
29//!             errors.add("email", e);
30//!         }
31//!         
32//!         if let Err(e) = LengthRule::new(3, 50).validate(&self.username) {
33//!             errors.add("username", e);
34//!         }
35//!         
36//!         errors.into_result()
37//!     }
38//! }
39//! ```
40
41mod context;
42mod error;
43mod group;
44mod rules;
45mod traits;
46
47#[cfg(test)]
48mod tests;
49
50pub use context::{DatabaseValidator, HttpValidator, ValidationContext, ValidationContextBuilder};
51pub use error::{RuleError, ValidationErrors};
52pub use group::{GroupedRule, GroupedRules, ValidationGroup};
53pub use rules::*;
54pub use traits::{AsyncValidate, AsyncValidationRule, SerializableRule, Validate, ValidationRule};
55
56/// Prelude module for v2 validation
57pub mod prelude {
58    pub use super::context::{
59        DatabaseValidator, HttpValidator, ValidationContext, ValidationContextBuilder,
60    };
61    pub use super::error::{RuleError, ValidationErrors};
62    pub use super::group::{GroupedRule, GroupedRules, ValidationGroup};
63    pub use super::rules::*;
64    pub use super::traits::{
65        AsyncValidate, AsyncValidationRule, SerializableRule, Validate, ValidationRule,
66    };
67}