pub enum HookEvent {
Show 16 variants
BeforeInsert,
AfterInsert,
BeforeUpdate,
AfterUpdate,
BeforeDelete,
AfterDelete,
BeforeWrite,
AfterWrite,
BeforeSave,
AfterSave,
BeforeRestore,
AfterRestore,
BeforeFind,
AfterFind,
BeforeValidate,
AfterValidate,
}Expand description
钩子事件类型
在 think-orm 风格的 6 个细粒度 insert/update/delete 事件基础上, 进一步提供 6 个通用写入事件(write/save/restore):
BeforeWrite/AfterWrite:任何写入操作(insert/update)前后触发BeforeSave/AfterSave:插入或更新保存前后触发(与 write 等价,命名借用 Rails/ActiveRecord)BeforeRestore/AfterRestore:软删除恢复前后触发
此外还提供 4 个查询/验证事件:
BeforeFind/AfterFind:单行 SELECT 前后触发(可用于查询缓存、审计)BeforeValidate/AfterValidate:数据验证前后触发(写入前的业务规则校验)
触发顺序示例(执行 INSERT 时):
BeforeWrite → BeforeSave → BeforeValidate → BeforeInsert → (INSERT) → AfterInsert → AfterSave → AfterWrite
触发顺序示例(执行 SELECT 时):
BeforeFind → (SELECT) → AfterFind
Variants§
BeforeInsert
AfterInsert
BeforeUpdate
AfterUpdate
BeforeDelete
AfterDelete
BeforeWrite
通用写入前:insert 或 update 前均触发
AfterWrite
通用写入后:insert 或 update 后均触发
BeforeSave
保存前(与 BeforeWrite 等价,命名风格不同)
AfterSave
保存后(与 AfterWrite 等价,命名风格不同)
BeforeRestore
软删除恢复前
AfterRestore
软删除恢复后
BeforeFind
查询前(单行 SELECT 前触发,可用于查询缓存预热、审计日志)
AfterFind
查询后(单行 SELECT 后触发,可用于查询结果后处理、缓存填充)
BeforeValidate
数据验证前(写入前的业务规则校验,在 before_insert/before_update 之前触发)
AfterValidate
数据验证后(验证完成后触发,可清理临时状态)
Implementations§
Source§impl HookEvent
impl HookEvent
Sourcepub fn is_write_level(&self) -> bool
pub fn is_write_level(&self) -> bool
是否为通用写入事件(write/save)
Sourcepub fn is_find_level(&self) -> bool
pub fn is_find_level(&self) -> bool
是否为查询事件(find)
Sourcepub fn is_validate_level(&self) -> bool
pub fn is_validate_level(&self) -> bool
是否为验证事件(validate)
Sourcepub fn is_fine_grained(&self) -> bool
pub fn is_fine_grained(&self) -> bool
是否为细粒度事件(v0.2.0+ 新增的事件)
Trait Implementations§
impl Copy for HookEvent
impl Eq for HookEvent
impl StructuralPartialEq for HookEvent
Auto Trait Implementations§
impl Freeze for HookEvent
impl RefUnwindSafe for HookEvent
impl Send for HookEvent
impl Sync for HookEvent
impl Unpin for HookEvent
impl UnsafeUnpin for HookEvent
impl UnwindSafe for HookEvent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more