Expand description
Storage abstraction layer for SCIM resources.
This module provides a clean separation between storage concerns and SCIM protocol logic.
The StorageProvider trait defines pure data storage operations that are protocol-agnostic,
allowing for pluggable storage backends while keeping SCIM-specific logic in the provider layer.
§Architecture
The storage layer is responsible for:
- Pure PUT/GET/DELETE operations on JSON data
- Tenant isolation and data organization
- Basic querying and filtering
- Data persistence and retrieval
The storage layer is NOT responsible for:
- SCIM metadata generation (timestamps, versions, etc.)
- SCIM validation rules
- Business logic (limits, permissions, etc.)
- Protocol-specific transformations
§Design Philosophy
This interface follows the principle that at the storage level, CREATE and UPDATE are the same operation - you’re just putting data at a location. The distinction between “create” vs “update” is business logic that belongs in the SCIM provider layer.
§Example Usage
use scim_server::storage::{StorageProvider, StorageKey, InMemoryStorage};
use serde_json::json;
let storage = InMemoryStorage::new();
// Put a resource (works for both create and update)
let key = StorageKey::new("tenant1", "User", "123");
let user_data = json!({
"id": "123",
"userName": "john.doe",
"displayName": "John Doe"
});
let stored_data = storage.put(key.clone(), user_data).await?;
// Get the resource
let retrieved = storage.get(key.clone()).await?;
assert!(retrieved.is_some());
// Delete the resource
let was_deleted = storage.delete(key).await?;
assert!(was_deleted);Re-exports§
pub use errors::StorageError;pub use in_memory::InMemoryStorage;pub use in_memory::InMemoryStorageStats;
Modules§
- errors
- Storage-specific error types for pure data operations.
- in_
memory - In-memory storage implementation for SCIM resources.
Structs§
- Storage
Key - A hierarchical key for identifying resources in storage.
- Storage
Prefix - A prefix for querying resources by tenant and type.
Traits§
- Storage
Provider - Core trait for storage providers that handle pure data persistence operations.