mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-27 12:29:04 +08:00
Changed Audit Trail trimming task to delete all records in one batch, rather than iterating through the table records (#7361)
This commit is contained in:
@@ -18,6 +18,7 @@ using Orchard.Settings;
|
|||||||
namespace Orchard.AuditTrail.Services {
|
namespace Orchard.AuditTrail.Services {
|
||||||
public class AuditTrailManager : Component, IAuditTrailManager {
|
public class AuditTrailManager : Component, IAuditTrailManager {
|
||||||
private readonly IRepository<AuditTrailEventRecord> _auditTrailRepository;
|
private readonly IRepository<AuditTrailEventRecord> _auditTrailRepository;
|
||||||
|
private readonly ITransactionManager _transactionManager;
|
||||||
private readonly IAuditTrailEventProvider _providers;
|
private readonly IAuditTrailEventProvider _providers;
|
||||||
private readonly IClock _clock;
|
private readonly IClock _clock;
|
||||||
private readonly IAuditTrailEventHandler _auditTrailEventHandlers;
|
private readonly IAuditTrailEventHandler _auditTrailEventHandlers;
|
||||||
@@ -30,6 +31,7 @@ namespace Orchard.AuditTrail.Services {
|
|||||||
|
|
||||||
public AuditTrailManager(
|
public AuditTrailManager(
|
||||||
IRepository<AuditTrailEventRecord> auditTrailRepository,
|
IRepository<AuditTrailEventRecord> auditTrailRepository,
|
||||||
|
ITransactionManager transactionManager,
|
||||||
IAuditTrailEventProvider providers,
|
IAuditTrailEventProvider providers,
|
||||||
IClock clock,
|
IClock clock,
|
||||||
IAuditTrailEventHandler auditTrailEventHandlers,
|
IAuditTrailEventHandler auditTrailEventHandlers,
|
||||||
@@ -41,6 +43,7 @@ namespace Orchard.AuditTrail.Services {
|
|||||||
IClientHostAddressAccessor clientHostAddressAccessor) {
|
IClientHostAddressAccessor clientHostAddressAccessor) {
|
||||||
|
|
||||||
_auditTrailRepository = auditTrailRepository;
|
_auditTrailRepository = auditTrailRepository;
|
||||||
|
_transactionManager = transactionManager;
|
||||||
_providers = providers;
|
_providers = providers;
|
||||||
_clock = clock;
|
_clock = clock;
|
||||||
_auditTrailEventHandlers = auditTrailEventHandlers;
|
_auditTrailEventHandlers = auditTrailEventHandlers;
|
||||||
@@ -200,13 +203,10 @@ namespace Orchard.AuditTrail.Services {
|
|||||||
public IEnumerable<AuditTrailEventRecord> Trim(TimeSpan retentionPeriod) {
|
public IEnumerable<AuditTrailEventRecord> Trim(TimeSpan retentionPeriod) {
|
||||||
var dateThreshold = (_clock.UtcNow.EndOfDay() - retentionPeriod);
|
var dateThreshold = (_clock.UtcNow.EndOfDay() - retentionPeriod);
|
||||||
var query = _auditTrailRepository.Table.Where(x => x.CreatedUtc <= dateThreshold);
|
var query = _auditTrailRepository.Table.Where(x => x.CreatedUtc <= dateThreshold);
|
||||||
var records = query.ToArray();
|
|
||||||
|
|
||||||
foreach (var record in records) {
|
_transactionManager.GetSession().Delete(query);
|
||||||
_auditTrailRepository.Delete(record);
|
|
||||||
}
|
|
||||||
|
|
||||||
return records;
|
return query.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public string SerializeProviderConfiguration(IEnumerable<AuditTrailEventSetting> settings) {
|
public string SerializeProviderConfiguration(IEnumerable<AuditTrailEventSetting> settings) {
|
||||||
|
|||||||
Reference in New Issue
Block a user