mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
55 lines
2.1 KiB
C#
55 lines
2.1 KiB
C#
using Artemis.Storage.Migrations.Interfaces;
|
|
using LiteDB;
|
|
|
|
namespace Artemis.Storage.Migrations
|
|
{
|
|
public class M10BetterDataBindings : IStorageMigration
|
|
{
|
|
private void Migrate(BsonValue bsonValue)
|
|
{
|
|
if (!bsonValue.IsDocument || !bsonValue.AsDocument.TryGetValue("PropertyEntities", out BsonValue propertyEntities))
|
|
return;
|
|
|
|
foreach (BsonValue propertyEntity in propertyEntities.AsArray)
|
|
{
|
|
if (!propertyEntity.AsDocument.TryGetValue("DataBindingEntities", out BsonValue dataBindingEntities))
|
|
continue;
|
|
foreach (BsonValue dataBindingEntity in dataBindingEntities.AsArray)
|
|
{
|
|
if (!dataBindingEntity.AsDocument.TryGetValue("TargetExpression", out BsonValue targetExpression))
|
|
continue;
|
|
string value = targetExpression.AsString;
|
|
if (value == "value => value" || value == "b => b")
|
|
{
|
|
dataBindingEntity.AsDocument["Identifier"] = "Value";
|
|
}
|
|
else
|
|
{
|
|
string selector = value.Split("=>")[1];
|
|
string property = selector.Split(".")[1];
|
|
dataBindingEntity.AsDocument["Identifier"] = property;
|
|
}
|
|
|
|
dataBindingEntity.AsDocument.Remove("TargetExpression");
|
|
}
|
|
}
|
|
}
|
|
|
|
public int UserVersion => 10;
|
|
|
|
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)
|
|
Migrate(bsonLayer);
|
|
|
|
foreach (BsonValue bsonLayer in bsonDocument["Folders"].AsArray)
|
|
Migrate(bsonLayer);
|
|
|
|
collection.Update(bsonDocument);
|
|
}
|
|
}
|
|
}
|
|
} |