public async Task <int> TrimAsync(TimeSpan retentionPeriod) { var dateThreshold = _clock.UtcNow.AddDays(1) - retentionPeriod; var auditTrailEvents = await _session.Query <AuditTrailEvent, AuditTrailEventIndex>() .Where(index => index.CreatedUtc <= dateThreshold).ListAsync(); var deletedEvents = 0; // Related Orchard Core issue to be able to delete items without a foreach: // https://github.com/OrchardCMS/OrchardCore/issues/5821 foreach (var auditTrailEvent in auditTrailEvents) { _session.Delete(auditTrailEvent); deletedEvents++; } return(deletedEvents); }
public async Task <int> TrimEventsAsync(TimeSpan retentionPeriod) { var dateThreshold = _clock.UtcNow.AddDays(1) - retentionPeriod; var events = await _session.Query <AuditTrailEvent, AuditTrailEventIndex>(collection : AuditTrailEvent.Collection) .Where(index => index.CreatedUtc <= dateThreshold) .ListAsync(); var deletedEvents = 0; foreach (var auditTrailEvent in events) { _session.Delete(auditTrailEvent, collection: AuditTrailEvent.Collection); deletedEvents++; } return(deletedEvents); }