Ecto Soft Delete 使用教程

Ecto Soft Delete 使用教程

ecto_soft_deleteSoft Deletion for Ecto项目地址:https://gitcode.com/gh_mirrors/ec/ecto_soft_delete

项目介绍

Ecto Soft Delete 是一个用于 Ecto 的软删除功能的扩展库。它允许你在数据库中标记记录为已删除,而不是永久删除它们。这样可以保留数据的历史记录,同时避免数据丢失。

项目快速启动

安装

首先,在你的 mix.exs 文件中添加依赖:

defp deps do
  [
    {:ecto_soft_delete, "~> 2.0"}
  ]
end

然后运行以下命令来获取依赖:

mix deps.get

配置

在你的 Repo 模块中使用 Ecto Soft Delete:

defmodule MyApp.Repo do
  use Ecto.Repo, otp_app: :my_app, adapter: Ecto.Adapters.Postgres
  use Ecto.SoftDelete.Repo
end

迁移

在迁移文件中添加软删除列:

defmodule MyApp.Repo.Migrations.CreateUser do
  use Ecto.Migration
  import Ecto.SoftDelete.Migration

  def change do
    create table(:users) do
      add :email, :string
      add :password, :string
      timestamps()
      soft_delete_columns()
    end
  end
end

模型

在模型中添加软删除字段:

defmodule MyApp.User do
  use Ecto.Schema
  import Ecto.SoftDelete.Schema

  schema "users" do
    field :email, :string
    soft_delete_schema()
  end
end

查询

查询未删除的记录:

import Ecto.Query
query = from u in MyApp.User, select: u
results = MyApp.Repo.all(query) |> Ecto.SoftDelete.Query.with_undeleted()

应用案例和最佳实践

软删除用户

假设你有一个用户管理系统,你可以使用软删除来标记用户为已删除,而不是永久删除他们的记录。

user = MyApp.Repo.get(MyApp.User, 42)
case MyApp.Repo.soft_delete(user) do
  {:ok, struct} ->
    IO.puts("Soft deleted with success")
  {:error, changeset} ->
    IO.puts("Something went wrong")
end

查询已删除的用户

如果你需要查询已删除的用户,可以使用 with_deleted: true 选项:

query = from u in MyApp.User, select: u
results = MyApp.Repo.all(query) |> Ecto.SoftDelete.Query.with_deleted()

典型生态项目

Ecto Soft Delete 可以与其他 Ecto 相关的项目一起使用,例如:

  • Ecto: 数据库包装和集成库。
  • Phoenix: Elixir 的 Web 框架,可以与 Ecto 一起使用来构建 Web 应用程序。
  • Absinthe: Elixir 的 GraphQL 库,可以与 Ecto 一起使用来构建 GraphQL API。

通过结合这些项目,你可以构建一个完整的数据驱动应用程序,同时利用软删除功能来管理数据的生命周期。

ecto_soft_deleteSoft Deletion for Ecto项目地址:https://gitcode.com/gh_mirrors/ec/ecto_soft_delete

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怀谦熹Glynnis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值