Skip to main content

modkit_sdk/
lib.rs

1#![cfg_attr(coverage_nightly, feature(coverage_attribute))]
2//! # `modkit-sdk` - SDK utilities for modkit-based applications
3//!
4//! This crate provides utilities for building SDKs on top of modkit, including:
5//!
6//! - **Security context scoping** (`secured` module) - Zero-allocation wrapper for binding
7//!   `SecurityContext` to clients
8//! - **Type-safe `OData` queries** (`odata` module) - Fluent query builder with compile-time
9//!   field validation
10//! - **Cursor-based pagination** (`pager` module) - Stream API for paginated results
11//!
12//! ## Example
13//!
14//! ```rust,ignore
15//! use modkit_sdk::secured::WithSecurityContext;
16//! use modkit_sdk::odata::QueryBuilder;
17//! use modkit_security::SecurityContext;
18//!
19//! let client = MyClient::new();
20//! let ctx = SecurityContext::root();
21//!
22//! // Bind security context to client
23//! let secured = client.security_ctx(&ctx);
24//!
25//! // Build type-safe query
26//! let query = QueryBuilder::<UserSchema>::new()
27//!     .filter(NAME.contains("john"))
28//!     .page_size(50)
29//!     .build();
30//! ```
31
32pub mod odata;
33pub mod pager;
34pub mod secured;
35
36// Re-export commonly used types for convenience
37pub use pager::PagerError;
38pub use secured::{Secured, WithSecurityContext};
39
40// Re-export proc-macros (feature-gated)
41#[cfg(feature = "derive")]
42pub use modkit_odata_macros::ODataSchema;