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}