Job for deleting removed properties
I've been annoyed by properties staying on page types after deleting them from code, especially on the .Net 5 version where "From Code" doesn't seem to work. I couldn't find a way to do this, so I wrote this quick and dirty job for removing them. I simply load all properties from optimizely, and check if a property with the same name exists on the type, and if not, delete it.
It has not been tested thoroughly, and I would definitely not use it in a production environment, but it saves me a lot of annoynance when working locallly.
This deletes all data related to the property, so use with caution.
public class RemovedDeletedPropertiesJob : ScheduledJobBase
{
private readonly IContentTypeRepository _contentTypeRepository;
private readonly IPropertyDefinitionRepository _propertyDefinitionRepository;
private int _amountDeleted;
public RemovedDeletedPropertiesJob(IContentTypeRepository contentTypeRepository,
IPropertyDefinitionRepository propertyDefinitionRepository)
{
_contentTypeRepository = contentTypeRepository;
_propertyDefinitionRepository = propertyDefinitionRepository;
}
public override string Execute()
{
_amountDeleted = 0;
foreach (var contentType in _contentTypeRepository.List())
{
var clone = contentType.CreateWritableClone() as ContentType;
if(clone == null) continue;
foreach (var prop in _propertyDefinitionRepository.List(contentType.ID))
{
try
{
if (contentType.ModelType.GetProperty(prop.Name) == null)
{
_propertyDefinitionRepository.Delete(prop);
_amountDeleted++;
}
}
catch (Exception e) { }
}
}
return $"Removed {_amountDeleted} properties";
}
I did this MissingProperties initmodule/plugin a long tme ago but the logic in that for identifying missing properties does not work in :Net Core version?
https://world.optimizely.com/blogs/Per-Nergard/Dates/2016/4/missing-properties-initializationmodule/
I only found the old blog post where the code is missing, so I haven't seen this one. It seems to work though. Only the appsettings part doesn't work, but that's simple enough to fix
NIce!
This works perfectly!