Skip to content

Commit bba089c

Browse files
author
Paul Johnson
committed
Implemented ContentVersionCleanup scheduled task.
Note: adding ref to Microsoft.NET.Test.Sdk fixes AutoFixture AutoDataAttribute (and sub classes)
1 parent a1ac730 commit bba089c

30 files changed

+1416
-25
lines changed

src/Umbraco.Core/Composing/CompositionExtensions/Repositories.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public static Composition ComposeRepositories(this Composition composition)
4949
composition.RegisterUnique<IContentTypeCommonRepository, ContentTypeCommonRepository>();
5050
composition.RegisterUnique<IInstallationRepository, InstallationRepository>();
5151
composition.RegisterUnique<IUpgradeCheckRepository, UpgradeCheckRepository>();
52+
composition.RegisterUnique<IDocumentVersionRepository, DocumentVersionRepository>();
5253

5354
return composition;
5455
}

src/Umbraco.Core/Composing/CompositionExtensions/Services.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@ public static Composition ComposeServices(this Composition composition)
3131
composition.RegisterUnique<IDomainService, DomainService>();
3232
composition.RegisterUnique<IAuditService, AuditService>();
3333
composition.RegisterUnique<ITagService, TagService>();
34-
composition.RegisterUnique<IContentService, ContentService>();
34+
35+
composition.RegisterUnique<ContentService>();
36+
composition.RegisterUnique<IContentService>(factory => factory.GetInstance<ContentService>());
37+
composition.RegisterUnique<IContentVersionCleanupService>(factory => factory.GetInstance<ContentService>());
38+
composition.RegisterUnique<IContentVersionCleanupPolicy, DefaultContentVersionCleanupPolicy>();
39+
3540
composition.RegisterUnique<IUserService, UserService>();
3641
composition.RegisterUnique<IMemberService, MemberService>();
3742
composition.RegisterUnique<IMediaService, MediaService>();

src/Umbraco.Core/Configuration/UmbracoSettings/ContentElement.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ internal class ContentElement : UmbracoConfigurationElement, IContentSection
2222
[ConfigurationProperty("notifications", IsRequired = true)]
2323
internal NotificationsElement Notifications => (NotificationsElement) base["notifications"];
2424

25-
[ConfigurationProperty("contentVersionCleanupPolicy", IsRequired = false)]
26-
internal ContentVersionCleanupPolicyElement ContentVersionCleanupPolicy => (ContentVersionCleanupPolicyElement) this["contentVersionCleanupPolicy"];
25+
[ConfigurationProperty("contentVersionCleanupPolicyGlobalSettings", IsRequired = false)]
26+
internal ContentVersionCleanupPolicyGlobalSettingsElement ContentVersionCleanupPolicyGlobalSettingsElement => (ContentVersionCleanupPolicyGlobalSettingsElement) this["contentVersionCleanupPolicyGlobalSettings"];
2727

2828
[ConfigurationProperty("PreviewBadge")]
2929
internal InnerTextConfigurationElement<string> PreviewBadge => GetOptionalTextElement("PreviewBadge", DefaultPreviewBadge);
@@ -64,7 +64,7 @@ internal class ContentElement : UmbracoConfigurationElement, IContentSection
6464

6565
IEnumerable<string> IContentSection.AllowedUploadFiles => AllowedUploadFiles;
6666

67-
IContentVersionCleanupPolicySettings IContentSection.ContentVersionCleanupPolicySettings => ContentVersionCleanupPolicy;
67+
IContentVersionCleanupPolicyGlobalSettings IContentSection.ContentVersionCleanupPolicyGlobalSettings => ContentVersionCleanupPolicyGlobalSettingsElement;
6868

6969
bool IContentSection.ShowDeprecatedPropertyEditors => ShowDeprecatedPropertyEditors;
7070

src/Umbraco.Core/Configuration/UmbracoSettings/ContentVersionCleanupPolicyElement.cs renamed to src/Umbraco.Core/Configuration/UmbracoSettings/ContentVersionCleanupPolicyGlobalSettingsElement.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Umbraco.Core.Configuration.UmbracoSettings
44
{
5-
internal class ContentVersionCleanupPolicyElement : UmbracoConfigurationElement, IContentVersionCleanupPolicySettings
5+
internal class ContentVersionCleanupPolicyGlobalSettingsElement : UmbracoConfigurationElement, IContentVersionCleanupPolicyGlobalSettings
66
{
77
[ConfigurationProperty("enable", DefaultValue = false)]
88
public bool EnableCleanup => (bool)this["enable"];

src/Umbraco.Core/Configuration/UmbracoSettings/IContentSection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public interface IContentSection : IUmbracoConfigurationSection
2525

2626
IEnumerable<string> AllowedUploadFiles { get; }
2727

28-
IContentVersionCleanupPolicySettings ContentVersionCleanupPolicySettings { get; }
28+
IContentVersionCleanupPolicyGlobalSettings ContentVersionCleanupPolicyGlobalSettings { get; }
2929

3030
/// <summary>
3131
/// Gets a value indicating whether to show deprecated property editors in

src/Umbraco.Core/Configuration/UmbracoSettings/IContentVersionCleanupPolicySettings.cs renamed to src/Umbraco.Core/Configuration/UmbracoSettings/IContentVersionCleanupPolicyGlobalSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace Umbraco.Core.Configuration.UmbracoSettings
22
{
3-
public interface IContentVersionCleanupPolicySettings
3+
public interface IContentVersionCleanupPolicyGlobalSettings
44
{
55
bool EnableCleanup { get; }
66
int KeepAllVersionsNewerThanDays { get; }
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System;
2+
3+
namespace Umbraco.Core.Models
4+
{
5+
public class ContentVersionCleanupPolicySettings
6+
{
7+
public int ContentTypeId { get; set; }
8+
public int? KeepAllVersionsNewerThanDays { get; set; }
9+
public int? KeepLatestVersionPerDayForDays { get; set; }
10+
public bool PreventCleanup { get; set; }
11+
public DateTime Updated { get; set; }
12+
}
13+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using System;
2+
3+
namespace Umbraco.Core.Models
4+
{
5+
public class HistoricContentVersionMeta
6+
{
7+
public int ContentId { get; }
8+
public int ContentTypeId { get; }
9+
public int VersionId { get; }
10+
public DateTime VersionDate { get; }
11+
12+
public HistoricContentVersionMeta() { }
13+
14+
public HistoricContentVersionMeta(int contentId, int contentTypeId, int versionId, DateTime versionDate)
15+
{
16+
ContentId = contentId;
17+
ContentTypeId = contentTypeId;
18+
VersionId = versionId;
19+
VersionDate = versionDate;
20+
}
21+
22+
public override string ToString() => $"HistoricContentVersionMeta(versionId: {VersionId}, versionDate: {VersionDate:s}";
23+
}
24+
}

src/Umbraco.Core/Persistence/Dtos/ContentVersionCleanupPolicyDto.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@
66
namespace Umbraco.Core.Persistence.Dtos
77
{
88
[TableName(TableName)]
9-
[PrimaryKey("contentTypeId")]
9+
[PrimaryKey("contentTypeId", AutoIncrement = false)]
1010
[ExplicitColumns]
1111
internal class ContentVersionCleanupPolicyDto
1212
{
1313
public const string TableName = Constants.DatabaseSchema.Tables.ContentVersionCleanupPolicy;
1414

1515
[Column("contentTypeId")]
16-
[PrimaryKeyColumn(AutoIncrement = false)]
1716
[ForeignKey(typeof(ContentTypeDto), Column = "nodeId", OnDelete = Rule.Cascade)]
1817
public int ContentTypeId { get; set; }
1918

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using System.Collections.Generic;
2+
using Umbraco.Core.Models;
3+
4+
namespace Umbraco.Core.Persistence.Repositories
5+
{
6+
public interface IDocumentVersionRepository : IRepository
7+
{
8+
/// <summary>
9+
/// Gets a list of all historic content versions.
10+
/// </summary>
11+
public IReadOnlyCollection<HistoricContentVersionMeta> GetDocumentVersionsEligibleForCleanup();
12+
13+
/// <summary>
14+
/// Gets cleanup policy override settings per content type.
15+
/// </summary>
16+
public IReadOnlyCollection<ContentVersionCleanupPolicySettings> GetCleanupPolicies();
17+
18+
/// <summary>
19+
/// Deletes multiple content versions by ID.
20+
/// </summary>
21+
void DeleteVersions(IEnumerable<int> versionIds);
22+
}
23+
}

0 commit comments

Comments
 (0)