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
//! Helper traits for composable SCIM ResourceProvider implementations.
//!
//! This module provides reusable traits that implement specific aspects of SCIM protocol
//! functionality. These traits can be mixed and matched by ResourceProvider implementers
//! to add capabilities without reimplementing complex SCIM logic.
//!
//! # Available Traits
//!
//! * [`ScimPatchOperations`] - RFC 7644 compliant PATCH operations
//! * [`ScimMetadataManager`] - SCIM resource metadata management
//! * [`ScimValidator`] - SCIM attribute validation and path parsing
//! * [`ConditionalOperations`] - Version-based optimistic concurrency control
//! * [`MultiTenantProvider`] - Multi-tenant context management
//!
//! # Usage Pattern
//!
//! ```rust,no_run
//! // Helper traits provide reusable functionality for ResourceProvider implementations:
//! //
//! // ScimPatchOperations - RFC-compliant PATCH operation handling
//! // ScimMetadataManager - Automatic metadata management (timestamps, versions, URIs)
//! // ConditionalOperations - Optimistic locking for concurrent updates
//! // MultiTenantProvider - Tenant isolation and scoping
//! // ScimValidator - SCIM path and data validation
//! //
//! // Simply implement ResourceProvider and add trait implementations:
//! // impl<S> ScimPatchOperations for MyProvider<S> {}
//! // impl<S> ScimMetadataManager for MyProvider<S> {}
//! ```
//!
//! # Benefits
//!
//! * **RFC Compliance** - Battle-tested implementations of SCIM specifications
//! * **Composability** - Mix and match only the capabilities you need
//! * **DRY Principle** - Avoid reimplementing complex SCIM protocol logic
//! * **Maintainability** - Bug fixes and improvements benefit all users
//! * **Testing** - Each trait can be tested independently
// Re-export all traits for convenience
pub use ConditionalOperations;
pub use ScimMetadataManager;
pub use ScimPatchOperations;
pub use MultiTenantProvider;
pub use ScimValidator;