1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
//! # Reinhardt Metadata
//!
//! Metadata API for handling OPTIONS requests in Reinhardt framework.
//!
//! ## Features
//!
//! - **BaseMetadata**: Base trait for metadata providers
//! - **SimpleMetadata**: Default metadata implementation that returns view and field information
//! - **OpenAPI Schema Generation**: Convert field metadata to OpenAPI 3.0 schemas
//! - **Type Inference**: Automatic schema inference from Rust types
//! - **Validation Patterns**: Pre-defined regex patterns for common validation scenarios
//! - **Field Dependencies**: Define conditional requirements and field relationships
//! - Automatic field type detection
//! - Action-based metadata (POST, PUT, etc.)
//!
//! ## Example
//!
//! ```rust
//! use reinhardt_rest::metadata::{BaseMetadata, SimpleMetadata, MetadataOptions};
//!
//! let metadata = SimpleMetadata::new();
//! let mut options = MetadataOptions::default();
//! options.name = "User List".to_string();
//! options.description = "List all users".to_string();
//! options.allowed_methods = vec!["GET".to_string(), "POST".to_string()];
//! options.renders = vec!["application/json".to_string()];
//! options.parses = vec!["application/json".to_string()];
//! options.serializer_fields = None;
//! ```
//!
//! ## OpenAPI Schema Generation Example
//!
//! ```rust
//! use reinhardt_rest::metadata::{FieldInfoBuilder, FieldType, generate_field_schema};
//!
//! let field = FieldInfoBuilder::new(FieldType::String)
//! .required(true)
//! .min_length(3)
//! .max_length(50)
//! .build();
//!
//! let schema = generate_field_schema(&field);
//! assert_eq!(schema.schema_type, Some("string".to_string()));
//! ```
//!
//! ## Type Inference Example
//!
//! ```rust
//! use reinhardt_rest::metadata::SchemaInferencer;
//!
//! let inferencer = SchemaInferencer::new();
//! let schema = inferencer.infer_openapi_schema("Vec<String>");
//! assert_eq!(schema.schema_type, Some("array".to_string()));
//! ```
//!
//! ## Validation Pattern Example
//!
//! ```rust
//! use reinhardt_rest::metadata::ValidationPattern;
//!
//! let pattern = ValidationPattern::email();
//! assert!(pattern.is_valid("user@example.com"));
//! ```
//!
//! ## Field Dependencies Example
//!
//! ```rust
//! use reinhardt_rest::metadata::{DependencyManager, FieldDependency};
//!
//! let mut manager = DependencyManager::new();
//! manager.add_dependency(FieldDependency::requires("country", vec!["address"]));
//! ```
// Re-export all public items
pub use ;
pub use ;
pub use ;
pub use SchemaInferencer;
pub use ;
pub use ValidationPattern;
pub use ;
pub use ;
pub use ;
pub use FieldValidator;