mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 11:56:30 +00:00
Moved from EF and SQLite to LiteDB
This commit is contained in:
1 parent
296414001b
commit
2fb2e5444c
57 files changed
+379
-1279
No files matched your search
+25
@@ -1,5 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
|
||||
namespace Artemis.Core.Models.Profile.Abstract
|
||||
{
|
||||
@@ -35,5 +36,29 @@ namespace Artemis.Core.Models.Profile.Abstract
|
||||
/// Applies the profile element's properties to the underlying storage entity
|
||||
/// </summary>
|
||||
internal abstract void ApplyToEntity();
|
||||
|
||||
public List<Folder> GetAllFolders()
|
||||
{
|
||||
var folders = new List<Folder>();
|
||||
foreach (var childFolder in Children.Where(c => c is Folder).Cast<Folder>())
|
||||
{
|
||||
folders.Add(childFolder);
|
||||
folders.AddRange(childFolder.GetAllFolders());
|
||||
}
|
||||
|
||||
return folders;
|
||||
}
|
||||
|
||||
public List<Layer> GetAllLayers()
|
||||
{
|
||||
var folders = new List<Layer>();
|
||||
foreach (var childLayer in Children.Where(c => c is Layer).Cast<Layer>())
|
||||
{
|
||||
folders.Add(childLayer);
|
||||
folders.AddRange(childLayer.GetAllLayers());
|
||||
}
|
||||
|
||||
return folders;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using Artemis.Core.Models.Profile.Abstract;
|
||||
using Artemis.Core.Services.Interfaces;
|
||||
using Artemis.Storage.Entities;
|
||||
using Artemis.Storage.Entities.Profile;
|
||||
|
||||
namespace Artemis.Core.Models.Profile
|
||||
{
|
||||
@@ -11,7 +13,7 @@ namespace Artemis.Core.Models.Profile
|
||||
public Folder(Profile profile, Folder folder, string name)
|
||||
{
|
||||
FolderEntity = new FolderEntity();
|
||||
Guid = System.Guid.NewGuid().ToString();
|
||||
EntityId = Guid.NewGuid();
|
||||
|
||||
Profile = profile;
|
||||
ParentFolder = folder;
|
||||
@@ -22,22 +24,22 @@ namespace Artemis.Core.Models.Profile
|
||||
public Folder(Profile profile, Folder folder, FolderEntity folderEntity, IPluginService pluginService)
|
||||
{
|
||||
FolderEntity = folderEntity;
|
||||
Guid = folderEntity.Guid;
|
||||
EntityId = folderEntity.Id;
|
||||
|
||||
Profile = profile;
|
||||
ParentFolder = folder;
|
||||
Children = new List<ProfileElement>();
|
||||
|
||||
// Load child folders
|
||||
foreach (var childFolder in folderEntity.Folders)
|
||||
foreach (var childFolder in Profile.ProfileEntity.Folders.Where(f => f.ParentId == EntityId))
|
||||
folder.Children.Add(new Folder(profile, this, childFolder, pluginService));
|
||||
// Load child layers
|
||||
foreach (var childLayer in folderEntity.Layers)
|
||||
foreach (var childLayer in Profile.ProfileEntity.Layers.Where(f => f.ParentId == EntityId))
|
||||
folder.Children.Add(new Layer(profile, this, childLayer, pluginService));
|
||||
}
|
||||
|
||||
internal FolderEntity FolderEntity { get; set; }
|
||||
internal string Guid { get; set; }
|
||||
internal Guid EntityId { get; set; }
|
||||
|
||||
public Profile Profile { get; }
|
||||
public Folder ParentFolder { get; }
|
||||
@@ -59,25 +61,15 @@ namespace Artemis.Core.Models.Profile
|
||||
|
||||
internal override void ApplyToEntity()
|
||||
{
|
||||
FolderEntity.Guid = Guid;
|
||||
FolderEntity.Id = EntityId;
|
||||
FolderEntity.ParentId = ParentFolder?.EntityId ?? new Guid();
|
||||
|
||||
FolderEntity.Order = Order;
|
||||
FolderEntity.Name = Name;
|
||||
|
||||
foreach (var profileElement in Children)
|
||||
{
|
||||
profileElement.ApplyToEntity();
|
||||
// Add missing children
|
||||
if (profileElement is Folder folder)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
else if (profileElement is Layer layer)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
FolderEntity.ProfileId = Profile.EntityId;
|
||||
|
||||
// Remove extra childen
|
||||
}
|
||||
// TODO: conditions
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using Artemis.Core.Models.Profile.Abstract;
|
||||
using Artemis.Core.Plugins.Abstract;
|
||||
using Artemis.Core.Plugins.Interfaces;
|
||||
using Artemis.Core.Services.Interfaces;
|
||||
using Artemis.Storage.Entities;
|
||||
using Artemis.Storage.Entities.Profile;
|
||||
|
||||
namespace Artemis.Core.Models.Profile
|
||||
{
|
||||
@@ -14,7 +13,7 @@ namespace Artemis.Core.Models.Profile
|
||||
internal Layer(Profile profile, Folder folder, string name)
|
||||
{
|
||||
LayerEntity = new LayerEntity();
|
||||
Guid = System.Guid.NewGuid().ToString();
|
||||
EntityId = Guid.NewGuid();
|
||||
|
||||
Profile = profile;
|
||||
ParentFolder = folder;
|
||||
@@ -24,15 +23,15 @@ namespace Artemis.Core.Models.Profile
|
||||
internal Layer(Profile profile, Folder folder, LayerEntity layerEntity, IPluginService pluginService)
|
||||
{
|
||||
LayerEntity = layerEntity;
|
||||
Guid = layerEntity.Guid;
|
||||
EntityId = layerEntity.Id;
|
||||
|
||||
Profile = profile;
|
||||
ParentFolder = folder;
|
||||
LayerType = pluginService.GetLayerTypeByGuid(System.Guid.Parse(layerEntity.LayerTypeGuid));
|
||||
LayerType = pluginService.GetLayerTypeByGuid(layerEntity.LayerTypeGuid);
|
||||
}
|
||||
|
||||
internal LayerEntity LayerEntity { get; set; }
|
||||
internal string Guid { get; set; }
|
||||
internal Guid EntityId { get; set; }
|
||||
|
||||
public Profile Profile { get; }
|
||||
public Folder ParentFolder { get; }
|
||||
@@ -64,12 +63,16 @@ namespace Artemis.Core.Models.Profile
|
||||
|
||||
internal override void ApplyToEntity()
|
||||
{
|
||||
LayerEntity.Guid = Guid;
|
||||
LayerEntity.Id = EntityId;
|
||||
LayerEntity.ParentId = ParentFolder?.EntityId ?? new Guid();
|
||||
LayerEntity.LayerTypeGuid = LayerType?.PluginInfo.Guid ?? new Guid();
|
||||
|
||||
LayerEntity.Order = Order;
|
||||
LayerEntity.Name = Name;
|
||||
LayerEntity.LayerTypeGuid = LayerType?.PluginInfo.Guid.ToString();
|
||||
|
||||
// TODO: Settings
|
||||
LayerEntity.ProfileId = Profile.EntityId;
|
||||
|
||||
// TODO: LEDs, conditions, elements
|
||||
}
|
||||
|
||||
public void UpdateLayerType(LayerType layerType)
|
||||
|
||||
@@ -6,7 +6,7 @@ using Artemis.Core.Exceptions;
|
||||
using Artemis.Core.Models.Profile.Abstract;
|
||||
using Artemis.Core.Plugins.Models;
|
||||
using Artemis.Core.Services.Interfaces;
|
||||
using Artemis.Storage.Entities;
|
||||
using Artemis.Storage.Entities.Profile;
|
||||
|
||||
namespace Artemis.Core.Models.Profile
|
||||
{
|
||||
@@ -14,8 +14,8 @@ namespace Artemis.Core.Models.Profile
|
||||
{
|
||||
internal Profile(PluginInfo pluginInfo, string name)
|
||||
{
|
||||
ProfileEntity = new ProfileEntity {RootFolder = new FolderEntity()};
|
||||
Guid = System.Guid.NewGuid().ToString();
|
||||
ProfileEntity = new ProfileEntity();
|
||||
EntityId = Guid.NewGuid();
|
||||
|
||||
PluginInfo = pluginInfo;
|
||||
Name = name;
|
||||
@@ -26,20 +26,24 @@ namespace Artemis.Core.Models.Profile
|
||||
internal Profile(PluginInfo pluginInfo, ProfileEntity profileEntity, IPluginService pluginService)
|
||||
{
|
||||
ProfileEntity = profileEntity;
|
||||
Guid = profileEntity.Guid;
|
||||
EntityId = profileEntity.Id;
|
||||
|
||||
PluginInfo = pluginInfo;
|
||||
Name = profileEntity.Name;
|
||||
|
||||
// Populate the profile starting at the root, the rest is populated recursively
|
||||
Children = new List<ProfileElement> {new Folder(this, null, profileEntity.RootFolder, pluginService)};
|
||||
var rootFolder = profileEntity.Folders.FirstOrDefault(f => f.ParentId == new Guid());
|
||||
if (rootFolder == null)
|
||||
Children = new List<ProfileElement> {new Folder(this, null, "Root folder")};
|
||||
else
|
||||
Children = new List<ProfileElement> {new Folder(this, null, rootFolder, pluginService)};
|
||||
}
|
||||
|
||||
public PluginInfo PluginInfo { get; }
|
||||
public bool IsActivated { get; private set; }
|
||||
|
||||
internal ProfileEntity ProfileEntity { get; set; }
|
||||
internal string Guid { get; set; }
|
||||
public Guid EntityId { get; set; }
|
||||
|
||||
public override void Update(double deltaTime)
|
||||
{
|
||||
@@ -67,13 +71,22 @@ namespace Artemis.Core.Models.Profile
|
||||
|
||||
internal override void ApplyToEntity()
|
||||
{
|
||||
ProfileEntity.Guid = Guid;
|
||||
ProfileEntity.Id = EntityId;
|
||||
ProfileEntity.PluginGuid = PluginInfo.Guid;
|
||||
ProfileEntity.Name = Name;
|
||||
ProfileEntity.IsActive = IsActivated;
|
||||
|
||||
var rootFolder = Children.Single();
|
||||
foreach (var profileElement in Children)
|
||||
profileElement.ApplyToEntity();
|
||||
|
||||
ProfileEntity.Folders.Clear();
|
||||
ProfileEntity.Folders.AddRange(GetAllFolders().Select(f => f.FolderEntity));
|
||||
|
||||
ProfileEntity.Layers.Clear();
|
||||
ProfileEntity.Layers.AddRange(GetAllLayers().Select(f => f.LayerEntity));
|
||||
}
|
||||
|
||||
|
||||
internal void Activate()
|
||||
{
|
||||
lock (this)
|
||||
@@ -95,7 +108,7 @@ namespace Artemis.Core.Models.Profile
|
||||
OnDeactivated();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{nameof(Order)}: {Order}, {nameof(Name)}: {Name}, {nameof(PluginInfo)}: {PluginInfo}";
|
||||
|
||||
Reference in new issue
Block a user