diff --git a/Pilz/Data/IDataObject.cs b/Pilz/Data/IDataObject.cs index 964fafe..ae1cdbd 100644 --- a/Pilz/Data/IDataObject.cs +++ b/Pilz/Data/IDataObject.cs @@ -2,5 +2,5 @@ public interface IDataObject { - public int Id { get; } + public int Id { get; set; } } diff --git a/Pilz/Data/Json/JsonDataContainer.cs b/Pilz/Data/Json/JsonDataContainer.cs index 1bd9568..24d0a31 100644 --- a/Pilz/Data/Json/JsonDataContainer.cs +++ b/Pilz/Data/Json/JsonDataContainer.cs @@ -4,21 +4,27 @@ namespace Pilz.Data.Json; public abstract class JsonDataContainer { + public class DataSet + { + public int LastId { get; set; } + public HashSet Data { get; } = []; + } + [JsonProperty("Sets")] protected readonly HashSet sets = []; - public virtual HashSet? Set(bool allowCreate) where T : class, IDataObject + public virtual DataSet? Set(bool allowCreate) where T : class, IDataObject { lock (sets) { - var list = sets.OfType>().FirstOrDefault(); + var list = sets.OfType>().FirstOrDefault(); if (list == null && allowCreate) { - list = []; + list = new(); sets.Add(list); } - + return list; } } diff --git a/Pilz/Data/Json/JsonDataManager.cs b/Pilz/Data/Json/JsonDataManager.cs index 7e92016..de2fa18 100644 --- a/Pilz/Data/Json/JsonDataManager.cs +++ b/Pilz/Data/Json/JsonDataManager.cs @@ -8,22 +8,24 @@ public class JsonDataManager(JsonDataContainer container) : DataManager { if (id == 0) return null; - return container.Set(false)?.FirstOrDefault(n => n.Id == id); + return container.Set(false)?.Data.FirstOrDefault(n => n.Id == id); } protected override IQueryable GetEntitySet() { - return container.Set(true).AsQueryable(); + return container.Set(true).Data.AsQueryable(); } protected override void RemoveEntity(T obj) { - container.Set(false)?.Remove(obj); + container.Set(false)?.Data.Remove(obj); } protected override void UpdateEntity(T obj) { - container.Set(true).Add(obj); + var set = container.Set(true); + obj.Id = ++set.LastId; + set.Data.Add(obj); } protected override void SaveChanges() diff --git a/Pilz/Pilz.csproj b/Pilz/Pilz.csproj index f3657d8..e33953f 100644 --- a/Pilz/Pilz.csproj +++ b/Pilz/Pilz.csproj @@ -5,7 +5,7 @@ latest enable annotations - 2.4.5 + 2.4.6