Skip to main content

sz_rust_orm_facade/
lib.rs

1//! ORM Facade — 统一访问 sz-orm 全家桶
2//!
3//! ## 设计目标
4//!
5//! 减少 `sz-rust-addons-operate`、`sz-rust-sz300` 等业务包对 `sz-orm-*` 子包的穿透依赖。
6//! 业务包应通过 `sz_rust_orm_facade::*` 访问 ORM 功能,而非直接依赖 `sz-orm-core`、
7//! `sz-orm-auth`、`sz-orm-mqtt`、`sz-orm-scheduler`、`sz-orm-logger`。
8//!
9//! ## 使用示例
10//!
11//! ```ignore
12//! // 业务包统一通过 facade 访问(推荐)
13//! use sz_rust_orm_facade::{Pool, Value, Model, ModelExt, Authorizer, JwtAuthenticator, MqttConfig, QoS};
14//! use sz_rust_orm_facade::repository::{Repository, WhereCondition, WhereOp};
15//! use sz_rust_orm_facade::scheduler::{CronScheduler, JobHandler, ScheduledTask, Scheduler};
16//! ```
17
18// ============================================================================
19// sz-orm-core:连接池 + 模型 trait + 值类型 + 仓储层 + 错误类型 + 迁移系统
20// ============================================================================
21pub use sz_orm_core::{
22    value_to_json,
23    BelongsTo,
24    BelongsToMany,
25    Cache,
26    CacheError,
27    Connection,
28    ConnectionFactory,
29    DbError,
30    DbType,
31    HasMany,
32    HasOne,
33    MemoryCache,
34    Model,
35    ModelExt,
36    MorphMany,
37    MorphTo,
38    Pool,
39    PoolConfig,
40    PoolConfigBuilder,
41    PoolError,
42    Relation,
43    RelationAccess,
44    RelationError,
45    RelationLoader,
46    TimestampFields,
47    Value,
48    // NOTE: WithRelation intentionally NOT re-exported at facade root — it is
49    // exported by both sz_orm_model and sz_orm_query via glob re-exports in
50    // sz-orm-core, which is ambiguous under Rust 1.96+'s deny(ambiguous_glob_imports).
51    // Use `crate::find_with_related::WithRelation` instead.
52};
53
54// MultiLevelCache is publicly re-exported at the sz_orm_core crate root via `pub use cache::*`
55pub use sz_orm_core::MultiLevelCache;
56
57/// 仓储子模块(Repository trait + WhereCondition/WhereOp 条件构造)
58///
59/// 业务层应通过 `sz_rust_orm_facade::repository::{Repository, WhereCondition, WhereOp}` 访问,
60/// 而非直接依赖 `sz_orm_core::repository`,以保持 facade 收口。
61pub mod repository {
62    pub use sz_orm_core::repository::{
63        BatchUpdateResult, EntityAttributes, EntityKey, GenericKeyRepository, InMemoryRepository,
64        PageResult, Repository, RepositoryError, RepositoryResult, WhereCondition, WhereOp,
65    };
66}
67
68/// 迁移子模块(schema migration)
69///
70/// 业务层应通过 `sz_rust_orm_facade::migration::*` 访问,
71/// 而非直接依赖 `sz_orm_core::migration`。
72pub mod migration {
73    pub use sz_orm_core::migration::{
74        FileMigrationResolver, Migration, MigrationContext, MigrationResolver, Migrator,
75    };
76}
77
78// ============================================================================
79// sz-orm-auth:认证 + 授权
80// ============================================================================
81pub use sz_orm_auth::{Authorizer, JwtAuthenticator, RbacAuthorizer};
82
83/// 认证子模块(Credentials / User / Claims 等数据结构)
84///
85/// 业务层应通过 `sz_rust_orm_facade::auth::{Credentials, User, Claims}` 访问,
86/// 而非直接依赖 `sz_orm_auth::auth`。
87pub mod auth {
88    pub use sz_orm_auth::auth::{Claims, Credentials, User};
89}
90
91/// JWT 子模块(JwtEncoder / JwtClaims 等编码工具)
92pub mod jwt {
93    pub use sz_orm_auth::jwt::{JwtClaims, JwtEncoder};
94}
95
96// ============================================================================
97// sz-orm-mqtt:MQTT 消息队列
98// ============================================================================
99pub use sz_orm_mqtt::{MqttConfig, MqttError, MqttMessage, MqttPlugin, MqttTopic, QoS};
100
101// ============================================================================
102// sz-orm-scheduler:定时任务调度器
103// ============================================================================
104/// 调度器子模块(CronScheduler / JobHandler / ScheduledTask 等)
105///
106/// 业务层应通过 `sz_rust_orm_facade::scheduler::*` 访问,
107/// 而非直接依赖 `sz_orm_scheduler`。
108pub mod scheduler {
109    pub use sz_orm_scheduler::{
110        CounterJobHandler, CronExpr, CronScheduler, JobHandler, RecordingJobHandler, ScheduledTask,
111        Scheduler, SchedulerError,
112    };
113}
114
115/// 调度器根级 re-export(供 core 内部 dogfood 使用)
116pub use sz_orm_scheduler::{
117    CronExpr, CronScheduler, JobHandler, RecordingJobHandler, ScheduledTask, Scheduler,
118    SchedulerError,
119};
120
121// ============================================================================
122// sz-orm-logger:日志适配器
123// ============================================================================
124/// 日志子模块(Logger / LogEntry / LogLevel 等)
125///
126/// 业务层应通过 `sz_rust_orm_facade::logger::*` 访问,
127/// 而非直接依赖 `sz_orm_logger`。
128pub mod logger {
129    pub use sz_orm_logger::{
130        LogEntry, LogLevel, Logger, LoggerFactory, Metrics, MetricsSnapshot, StructuredLogger,
131    };
132}
133
134// ============================================================================
135// sz-orm-query-builder:链式 SQL 构造器(sea-query 风格,独立于 Model)
136// Query 已废弃(sz-orm 3.5.0),保留 re-export 维持向下兼容;
137// 迁移待办:标准 CRUD 迁至 sz_orm_core::QueryBuilder<M>(见 CHANGELOG 0.6.9)
138// ============================================================================
139#[allow(deprecated)]
140pub use sz_orm_query_builder::{
141    BuiltQuery, DeleteQuery, InsertQuery, Query, SelectQuery, UpdateQuery,
142};
143
144// ============================================================================
145// sz-orm-macros:编译时 SQL 宏(sql_string! / query! 等)
146// ============================================================================
147pub use sz_orm_macros::{query, sql_string};
148
149// ============================================================================
150// sz-orm-core 补充子模块(core 内部 dogfood 所需)
151// ============================================================================
152
153/// Hooks 子模块(生命周期钩子)
154///
155/// 业务层应通过 `sz_rust_orm_facade::hooks::*` 访问,
156/// 而非直接依赖 `sz_orm_core::hooks`。
157pub mod hooks {
158    pub use sz_orm_core::hooks::*;
159}
160
161/// L2 缓存子模块(二级缓存共享层)
162///
163/// 业务层应通过 `sz_rust_orm_facade::l2_cache::*` 访问,
164/// 而非直接依赖 `sz_orm_core::l2_cache`。
165pub mod l2_cache {
166    pub use sz_orm_core::l2_cache::*;
167}
168
169/// 关联查询子模块(find_with_related  eager/join/subquery 策略)
170///
171/// 业务层应通过 `sz_rust_orm_facade::find_with_related::*` 访问,
172/// 而非直接依赖 `sz_orm_core::find_with_related`。
173pub mod find_with_related {
174    pub use sz_orm_core::find_with_related::{
175        find_with_related_eager_sql, find_with_related_join, find_with_related_subquery,
176        inspect_relation, FindWithRelated, WithRelation, WithRelation as FindWithRelation,
177    };
178}
179
180// ============================================================================
181// sz-orm-limit:限流器(速率限制中间件依赖)
182// ============================================================================
183pub use sz_orm_limit::{
184    DistributedRateLimiter, FixedWindowRateLimiter, InMemoryBackend, RateLimitError,
185    RateLimitHeaders, RateLimitResponseStrategy, RateLimitResult, SlidingWindowRateLimiter,
186    TokenBucketRateLimiter,
187};
188
189/// RateLimiter trait re-export(限流中间件核心 trait)
190pub use sz_orm_limit::RateLimiter;
191
192// ============================================================================
193// sz-orm-tracing:分布式追踪(trace 中间件依赖)
194// ============================================================================
195pub use sz_orm_tracing::{
196    Alert, AlertHook, AlertLevel, ErrorBudget, ErrorRateCounter, LatencyHistogram, LogAlertHook,
197    OtelTracer, SaturationGauge, SlaMonitor, SlaReport, Span, SpanLog, SzTracer, Tracer,
198    TracingError,
199};
200
201// ============================================================================
202// sz-orm-queue:消息队列(runtime::queue 依赖)
203// ============================================================================
204pub use sz_orm_queue::{
205    ActiveConfig, BackpressurePolicy, InMemoryQueue, KafkaConfig, Message, MessageQueue, MqError,
206    MqProvider, NatsConfig, OverflowStrategy, PulsarConfig, QueueConfig,
207};
208
209// ============================================================================
210// sz-orm-websocket:WebSocket 服务(runtime::websocket 依赖)
211// ============================================================================
212pub use sz_orm_websocket::{DefaultWebSocketHandler, WebSocketHandler, WsError, WsServer};
213
214// ============================================================================
215// sz-orm-storage:云存储驱动(upload/storage 依赖)
216// ============================================================================
217pub use sz_orm_storage::{
218    AliyunOssStorage, HuaweiObsStorage, LocalStorage, QiniuKodoStorage, S3Storage, Storage,
219    StorageBuilder, StorageConfig, StorageError, StorageProvider, StorageWrapper,
220    TencentCosStorage, UpYunStorage,
221};
222
223// ============================================================================
224// sz-orm-sql-validator:SQL 安全校验(SQL 注入防护)
225// ============================================================================
226pub use sz_orm_sql_validator::{
227    detect_statement_type, validate, validate_column_name, validate_delete, validate_insert,
228    validate_parameter_count, validate_select, validate_sql, validate_table_name, validate_update,
229    ComplexityLevel, SqlComplexityScore, SqlStatementType, SqlToken, SqlValidationError,
230    ValidationResult, WhitelistValidator,
231};
232
233// ============================================================================
234// sz-orm-graphql — GraphQL 集成(可选 feature: graphql)
235// ============================================================================
236#[cfg(feature = "graphql")]
237pub mod graphql;
238
239// ============================================================================
240// sz-orm-grpc — gRPC 支持(可选 feature: grpc)
241// ============================================================================
242#[cfg(feature = "grpc")]
243pub mod grpc;
244
245// ============================================================================
246// 连接池配置调优(L2 方案:sqlx 配置调优,不修改 sz-orm 上游)
247// ============================================================================
248pub mod pool_config;
249pub use pool_config::SqlxPoolConfig;
250
251// ============================================================================
252// P3 L3 连接池调优(PoolWarmer + QueryCache + PoolScaler)
253// ============================================================================
254pub mod pool_scaler;
255pub mod pool_warmer;
256pub mod query_cache;
257
258pub use pool_scaler::{PoolMetrics, PoolScaler, PoolScalerConfig};
259pub use pool_warmer::{PoolWarmer, WarmupError as PoolWarmupError};
260pub use query_cache::{QueryCache, QueryCacheConfig, QueryCacheError};
261
262// ============================================================================
263// 可靠任务队列(数据库持久化 Job 表:状态机 / 原子领取 / 退避重试 / 幂等 / 死信)
264// ============================================================================
265pub mod jobs;
266pub use jobs::{
267    Job, JobError, JobErrorKind, JobQueue, JobQueueConfig, JobQueueError, JobStatus, QueueSnapshot,
268    TaskHandler, JOBS_TABLE,
269};
270
271// ============================================================================
272// 数据范围控制 Data Scope — 应用层行级数据过滤
273// ============================================================================
274pub mod data_scope;