nswdpc / silverstripe-pruner
从配置的 DataObject 类中删除记录
Requires
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3
- phpunit/phpunit: ^9.5
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。
每个记录删除的操作顺序是:
- onBeforePrune
- 删除操作
- onBeforeDelete
- 删除
- onAfterDelete
- onAfterPrune
即使您不执行任何记录剪枝前后的操作,也必须实现这些方法。
报告任务
存在一个任务,可以提供快速报告,显示基于提供的参数将要删除的内容。
针对目标模型(15天前)的报告,每个模型最多删除50条记录
./vendor/bin/sake dev/tasks/ReportOnlyPrunerTask age=15 limit=50 targets=SilverStripe\\UserForms\\Model\\Submission\\SubmittedForm
多个目标可以通过逗号分隔。如果没有提供目标,则使用配置的 NSWDPC\Pruner\Pruner.target_models
的值。
维护者
许可证
安全
如果您发现此模块存在安全问题,请首先通过 email digital[@]dpc.nsw.gov.au 详细说明您的发现。
错误追踪器
我们欢迎在此项目的 Github 问题跟踪器上报告错误、拉取请求和功能请求。
在提交新问题之前,请先审阅行为准则。
开发和贡献
如果您想对该模块做出贡献,请确保您发起一个拉取请求并与模块维护者进行讨论。
在完成拉取请求之前,请先审阅行为准则。