nswdpc/silverstripe-pruner

从配置的 DataObject 类中删除记录

安装次数: 1,382

依赖者: 1

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放性问题: 1

类型:silverstripe-vendormodule

v1.0.0 2024-07-26 02:55 UTC

This package is auto-updated.

Last update: 2024-08-26 03:05:59 UTC


README

使用可配置的选项,通过队列作业从 Silverstripe 项目关联的数据库中删除记录。

它可以应用于任何 SilverStripe\ORM\DataObject 记录,对于可以持续增长的表中的记录(如表单提交)非常有用。

安装

composer require nswdpc/silverstripe-pruner

用户表单支持

有关 silverstripe/userforms 支持的信息,请参阅 nswdpc/silverstripe-pruner-userforms 模块。

要求

请参阅 composer.json

配置

配置项目 .yml 文件如下

---
Name: prunerconfiglocal
After:
  - '#nswdpc-pruner'
---
NSWDPC\Pruner\Pruner:
  # sample target_models
  target_models:
    # remove/backup submitted forms from the userforms module
    - 'SilverStripe\UserForms\Model\Submission\SubmittedForm'
    # a namespaced DataObject
    - 'Some\Namespaced\DataObject'

界面

当将 SilverStripe\ORM\DataObject 添加到 target_models 列表时,这些 DataObjects 必须实现以下接口之一:

  • NSWDPC\Utility\Pruner\Interfaces\PrunerInterface 或者
  • 具有实现该接口的扩展

该模块将忽略未实现此接口的模型。

请参阅 PrunerInterface 的文档。

通过队列作业删除记录

PruneJob 用于从目标模型中删除相关记录。

您可以通过以下构造函数参数传递以下内容:

  • $days_ago - 应截断的记录的最小天数。首先删除旧记录。默认 = 30
  • $limit - 一次最多删除的记录数。默认 = 50(在提交表单记录的情况下,这是父类限制)
  • $targets - 数据对象类名(命名空间)的逗号分隔模型。如果为空,则使用配置的名称,如果有的话。这允许您在特定时间安排删除特定类别的记录。
  • $report_only - 0|1 - 传入 1 仅报告将要删除的内容。

返回要删除的记录列表

虽然最常用的列表是返回比 days_ago 年龄参数旧的记录,但您可以通过 pruneList 控制如何过滤并返回记录。

您可以在查询中添加额外的过滤器或修改/忽略年龄参数。例如,您可以删除比特定日期旧且不是特定域名成员创作的记录。

剪枝前后的操作

除了常用的 onBeforeDelete/onAfterDelete Silverstripe 方法外,该模块在记录删除前后分别调用 onBeforePrune 和 onAfterPrune。

每个记录删除的操作顺序是:

  1. onBeforePrune
  2. 删除操作
    1. onBeforeDelete
    2. 删除
    3. onAfterDelete
  3. onAfterPrune

即使您不执行任何记录剪枝前后的操作,也必须实现这些方法。

报告任务

存在一个任务,可以提供快速报告,显示基于提供的参数将要删除的内容。

针对目标模型(15天前)的报告,每个模型最多删除50条记录

./vendor/bin/sake dev/tasks/ReportOnlyPrunerTask age=15 limit=50 targets=SilverStripe\\UserForms\\Model\\Submission\\SubmittedForm

多个目标可以通过逗号分隔。如果没有提供目标,则使用配置的 NSWDPC\Pruner\Pruner.target_models 的值。

维护者

许可证

BSD-3-Clause

安全

如果您发现此模块存在安全问题,请首先通过 email digital[@]dpc.nsw.gov.au 详细说明您的发现。

错误追踪器

我们欢迎在此项目的 Github 问题跟踪器上报告错误、拉取请求和功能请求。

在提交新问题之前,请先审阅行为准则

开发和贡献

如果您想对该模块做出贡献,请确保您发起一个拉取请求并与模块维护者进行讨论。

在完成拉取请求之前,请先审阅行为准则