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;
44pub mod i18n;
45mod rules;
46mod traits;
47
48#[cfg(test)]
49mod tests;
50
51pub use context::{DatabaseValidator, HttpValidator, ValidationContext, ValidationContextBuilder};
52pub use error::{RuleError, ValidationErrors};
53pub use group::{GroupedRule, GroupedRules, ValidationGroup};
54pub use rules::*;
55pub use traits::{AsyncValidate, AsyncValidationRule, SerializableRule, Validate, ValidationRule};
56
57/// Prelude module for v2 validation
58pub mod prelude {
59 pub use super::context::{
60 DatabaseValidator, HttpValidator, ValidationContext, ValidationContextBuilder,
61 };
62 pub use super::error::{RuleError, ValidationErrors};
63 pub use super::group::{GroupedRule, GroupedRules, ValidationGroup};
64 pub use super::rules::*;
65 pub use super::traits::{
66 AsyncValidate, AsyncValidationRule, SerializableRule, Validate, ValidationRule,
67 };
68}