Skip to main content

Module hydration_plugin

Module hydration_plugin 

Source
Expand description

Hydration Modes + Plugin 拦截器链

对应文档 6.8 节改进项 44(Hydration Modes)+ 46(Plugin 拦截器链)。

§核心概念

§Hydration Modes

  • Object:每行 → HashMap<String, Value>(默认)
  • Array:每行 → Vec<Value>(按列顺序)
  • Scalar:每行 → Value(取第一列)
  • SingleScalar:唯一行 + 唯一列 → Value
  • Column:每行的指定列 → Vec<Value>

§Plugin 拦截器链

  • Plugin trait:拦截 Executor 操作
  • PluginContext:上下文(操作类型、SQL、参数、阶段)
  • PluginDecision:插件决策(Continue / Skip / Modified)
  • PluginChain:拦截器链(按注册顺序执行)
  • ExecutionStage:拦截阶段(BeforeQuery / AfterQuery / BeforeUpdate / AfterUpdate / BeforeCommit / AfterCommit / BeforeRollback / AfterRollback)

§设计灵感

  • Doctrine HYDRATE_*(OBJECT/ARRAY/SCALAR/SINGLE_SCALAR/COLUMN)
  • MyBatis Interceptor(拦截 Executor.query/update/commit)
  • Hibernate Interceptor / EventListeners

§使用示例

use sz_orm_core::hydration_plugin::{
    HydrationMode, hydrate, PluginChain, PluginContext, ExecutionStage, PluginDecision,
};
use sz_orm_core::result_map::RowData;
use sz_orm_core::Value;
use std::collections::HashMap;

// HydrationMode::Scalar
let mut row = RowData::empty();
row.set("count", Value::I64(42));
let result = hydrate(&[row], HydrationMode::Scalar).unwrap();
assert_eq!(result.first(), Some(&Value::I64(42)));

Structs§

AuditPlugin
审计插件(记录所有写操作)
AuditRecord
审计记录
BlockPlugin
阻断插件(演示 Abort 决策)
PluginChain
插件链(按注册顺序执行)
PluginContext
插件上下文(携带操作信息)
SlowQueryPlugin
慢查询检测插件
SlowQueryRecord
慢查询记录
SqlLogPlugin
SQL 日志插件
SqlRewritePlugin
SQL 改写插件(演示 Modified 决策)

Enums§

ExecutionStage
执行阶段
HydrationError
Hydration 错误
HydrationMode
Hydration 填充模式
PluginDecision
插件决策

Traits§

Plugin
Plugin 拦截器 trait

Functions§

hydrate
通用 hydrate 函数:根据 mode 自动选择
hydrate_array
Array 模式:每行 → Vec<Value>(按列名排序后顺序)
hydrate_column
Column 模式:每行的指定列 → Vec<Value>
hydrate_object
Object 模式:每行 → HashMap<String, Value>
hydrate_scalar
Scalar 模式:每行 → Value(取第一列,按列名排序)
hydrate_single_scalar
SingleScalar 模式:唯一行 + 唯一列 → Value

Type Aliases§

HydrationResult
Hydration 结果类型