Data model conditions - DRY'd predicate code in preparation for events

This commit is contained in:
SpoinkyNL committed 2020-10-23 20:08:30 +02:00
1 parent a79223fa75
commit 574c4b21ec
21 files changed
+510 -918

No files matched your search

@@ -0,0 +1,6 @@
namespace Artemis.Storage.Entities.Profile.Conditions
{
public class DataModelConditionGeneralPredicateEntity : DataModelConditionPredicateEntity
{
}
}
@@ -1,20 +1,6 @@
using System;
using Artemis.Storage.Entities.Profile.Abstract;
namespace Artemis.Storage.Entities.Profile.Conditions
namespace Artemis.Storage.Entities.Profile.Conditions
{
public class DataModelConditionListPredicateEntity : DataModelConditionPartEntity
public class DataModelConditionListPredicateEntity : DataModelConditionPredicateEntity
{
public int PredicateType { get; set; }
public DataModelPathEntity LeftPath { get; set; }
public DataModelPathEntity RightPath { get; set; }
// Stored as a string to be able to control serialization and deserialization ourselves
public string RightStaticValue { get; set; }
public string OperatorType { get; set; }
public Guid? OperatorPluginGuid { get; set; }
}
}
@@ -3,7 +3,7 @@ using Artemis.Storage.Entities.Profile.Abstract;
namespace Artemis.Storage.Entities.Profile.Conditions
{
public class DataModelConditionPredicateEntity : DataModelConditionPartEntity
public abstract class DataModelConditionPredicateEntity : DataModelConditionPartEntity
{
public int PredicateType { get; set; }
public DataModelPathEntity LeftPath { get; set; }
@@ -14,6 +14,5 @@ namespace Artemis.Storage.Entities.Profile.Conditions
// Stored as a string to be able to control serialization and deserialization ourselves
public string RightStaticValue { get; set; }
}
}
@@ -0,0 +1,34 @@
using Artemis.Storage.Migrations.Interfaces;
using LiteDB;
namespace Artemis.Storage.Migrations
{
public class M6PredicateAbstraction : IStorageMigration
{
public int UserVersion => 7;
public void Apply(LiteRepository repository)
{
ILiteCollection<BsonDocument> collection = repository.Database.GetCollection("ProfileEntity");
foreach (BsonDocument bsonDocument in collection.FindAll())
{
foreach (BsonValue bsonLayer in bsonDocument["Layers"].AsArray)
{
bsonLayer["DisplayCondition"] = null;
foreach (BsonValue bsonPropertyEntity in bsonLayer["PropertyEntities"].AsArray)
bsonPropertyEntity["DataBindingEntities"].AsArray.Clear();
}
foreach (BsonValue bsonLayer in bsonDocument["Folders"].AsArray)
{
bsonLayer["DisplayCondition"] = null;
foreach (BsonValue bsonPropertyEntity in bsonLayer["PropertyEntities"].AsArray)
bsonPropertyEntity["DataBindingEntities"].AsArray.Clear();
}
collection.Update(bsonDocument);
}
}
}
}