#orm #sql #软删除

柴油-软删除

为 Diesel ORM 提供软删除支持

1 个不稳定版本

0.1.0 2022年7月12日

#1375 in 数据库接口

MIT/Apache

25KB
451

柴油-软删除

将软删除集成到 Diesel 查询构建器中。

软删除是一种不实际删除数据库条目,而是将其标记为已删除的实践。这通常采用 deleted 布尔标志的形式。然而,这隐含着在查询中始终筛选此标志,这既繁琐又容易出错:始终筛选标志是重复的,可能会被遗忘,并且可能导致如连接中的查询错误。

该库的主要新增功能是对查询构建器的扩展,新增了以下操作

用法

您的模型需要有一个 deleted 布尔列。然后,使用 soft_delete 宏在表上实现 SoftDelete 特性。然后就可以使用它了!一旦导入前言,就可以使用 soft_find 和其他函数来代替常规的 find 等宏。

示例

use diesel_softdelete::prelude::*;

table! {
    user (id) {
        id -> Integer,
        name -> Text,
        deleted -> Bool,
    }
}
soft_delete!(user);

conn.batch_execute("
    create table user(
        id integer primary key,
        name text not null,
        deleted bool not null default false
    );
    insert into user(id, name, deleted) values (1, 'Alice', false), (2, 'Bob', true);
")?;

let name = user::table.soft_find(1).select(user::name).first::<String>(&conn).optional()?;
assert_eq!(name, Some("Alice".to_owned()));
let name = user::table.soft_find(2).select(user::name).first::<String>(&conn).optional()?;
assert_eq!(name, None);

许可证:MIT OR Apache-2.0

依赖项

~3.5MB
~73K SLoC