From 81c0d51417cf8927d78028d672c917cac780096a Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Fri, 28 Mar 2025 11:08:48 +0100 Subject: [PATCH] only allow reference types on the server side --- Pilz.Net/Api/Server/BaseChildItemHandler.cs | 4 +- Pilz.Net/Api/Server/BaseHandler.cs | 5 +-- Pilz.Net/Api/Server/BaseItemHandler.cs | 2 +- Pilz.Net/Data/DataManager.cs | 44 ++++++++++----------- Pilz.Net/Data/IDataManager.cs | 36 ++++++++--------- 5 files changed, 44 insertions(+), 47 deletions(-) diff --git a/Pilz.Net/Api/Server/BaseChildItemHandler.cs b/Pilz.Net/Api/Server/BaseChildItemHandler.cs index 16b0a94..172cc86 100644 --- a/Pilz.Net/Api/Server/BaseChildItemHandler.cs +++ b/Pilz.Net/Api/Server/BaseChildItemHandler.cs @@ -7,8 +7,8 @@ namespace Pilz.Net.Api.Server; public abstract class BaseChildItemHandler(IApiServer server) : BaseHandler(server) - where TEntity : IDataObject - where TParent : IDataObject + where TEntity : class, IDataObject + where TParent : class, IDataObject where TUpdateMsg : ApiMessage { protected virtual bool RegisterGetAll => true; diff --git a/Pilz.Net/Api/Server/BaseHandler.cs b/Pilz.Net/Api/Server/BaseHandler.cs index b5a8878..f9faa1c 100644 --- a/Pilz.Net/Api/Server/BaseHandler.cs +++ b/Pilz.Net/Api/Server/BaseHandler.cs @@ -2,15 +2,12 @@ using Pilz.Net.Data; using Pilz.Net.Extensions; using System.Diagnostics; -using System.Linq.Expressions; -using System.Reflection; -using System.Runtime.CompilerServices; namespace Pilz.Net.Api.Server; public abstract class BaseHandler(IApiServer server) : IApiHandlerInitializer - where TEntity : IDataObject + where TEntity : class, IDataObject where TUpdateMsg : ApiMessage { public abstract string Route { get; } diff --git a/Pilz.Net/Api/Server/BaseItemHandler.cs b/Pilz.Net/Api/Server/BaseItemHandler.cs index cc49995..5b04a85 100644 --- a/Pilz.Net/Api/Server/BaseItemHandler.cs +++ b/Pilz.Net/Api/Server/BaseItemHandler.cs @@ -7,7 +7,7 @@ namespace Pilz.Net.Api.Server; public abstract class BaseItemHandler(IApiServer server) : BaseHandler(server) - where TEntity : IDataObject + where TEntity : class, IDataObject where TUpdateMsg : ApiMessage { protected virtual bool RegisterGetAll => true; diff --git a/Pilz.Net/Data/DataManager.cs b/Pilz.Net/Data/DataManager.cs index a2fbce6..053ab40 100644 --- a/Pilz.Net/Data/DataManager.cs +++ b/Pilz.Net/Data/DataManager.cs @@ -4,58 +4,58 @@ namespace Pilz.Net.Data; public abstract class DataManager : IDataManager { - protected abstract void UpdateEntity(T obj) where T : IDataObject; - protected abstract IQueryable GetEntitySet() where T : IDataObject; - protected abstract T? FindEntity(int id) where T : IDataObject; - protected abstract void RemoveEntity(T obj) where T : IDataObject; + protected abstract void UpdateEntity(T obj) where T : class, IDataObject; + protected abstract IQueryable GetEntitySet() where T : class, IDataObject; + protected abstract T? FindEntity(int id) where T : class, IDataObject; + protected abstract void RemoveEntity(T obj) where T : class, IDataObject; protected abstract void SaveChanges(); - public virtual IQueryable Get() where T : IDataObject + public virtual IQueryable Get() where T : class, IDataObject { return GetEntitySet(); } - public virtual T FindOrNew(int? id) where T : IDataObject + public virtual T FindOrNew(int? id) where T : class, IDataObject { if (Find(id) is not T obj) obj = Activator.CreateInstance(); return obj; } - public virtual T FindOrNew(int id) where T : IDataObject + public virtual T FindOrNew(int id) where T : class, IDataObject { if (Find(id) is not T obj) obj = Activator.CreateInstance(); return obj; } - public virtual T? FindOrNull(int? id) where T : IDataObject + public virtual T? FindOrNull(int? id) where T : class, IDataObject { if (id == null || id == 0) return default; return Find(id); } - public virtual T? FindOrNull(int id) where T : IDataObject + public virtual T? FindOrNull(int id) where T : class, IDataObject { if (id == 0) return default; return Find(id); } - public virtual T? Find(int? id) where T : IDataObject + public virtual T? Find(int? id) where T : class, IDataObject { if (id == null) return default; return Find(id.Value); } - public virtual T? Find(int id) where T : IDataObject + public virtual T? Find(int id) where T : class, IDataObject { return FindEntity(id); } - public virtual bool FindOrNew(int? id, [NotNullWhen(true)] out T? obj) where T : IDataObject + public virtual bool FindOrNew(int? id, [NotNullWhen(true)] out T? obj) where T : class, IDataObject { if (id == null || id == 0) { @@ -65,7 +65,7 @@ public abstract class DataManager : IDataManager return Find(id.Value, out obj); } - public virtual bool FindOrNew(int id, [NotNullWhen(true)] out T? obj) where T : IDataObject + public virtual bool FindOrNew(int id, [NotNullWhen(true)] out T? obj) where T : class, IDataObject { if (id == 0) { @@ -75,7 +75,7 @@ public abstract class DataManager : IDataManager return Find(id, out obj); } - public virtual bool FindOrNull(int? id, out T? obj) where T : IDataObject + public virtual bool FindOrNull(int? id, out T? obj) where T : class, IDataObject { if (id == null || id == 0) { @@ -85,7 +85,7 @@ public abstract class DataManager : IDataManager return Find(id.Value, out obj); } - public virtual bool FindOrNull(int id, out T? obj) where T : IDataObject + public virtual bool FindOrNull(int id, out T? obj) where T : class, IDataObject { if (id == 0) { @@ -95,7 +95,7 @@ public abstract class DataManager : IDataManager return Find(id, out obj); } - public virtual bool Find(int id, [NotNullWhen(true)] out T? obj) where T : IDataObject + public virtual bool Find(int id, [NotNullWhen(true)] out T? obj) where T : class, IDataObject { if (FindEntity(id) is not T t) { @@ -106,23 +106,23 @@ public abstract class DataManager : IDataManager return true; } - public virtual void Delete(int id) where T : IDataObject + public virtual void Delete(int id) where T : class, IDataObject { Delete(id, false); } - public virtual void Delete(int id, bool save) where T : IDataObject + public virtual void Delete(int id, bool save) where T : class, IDataObject { if (Find(id, out T? obj)) Delete(obj, save); } - public virtual void Delete(T? obj) where T : IDataObject + public virtual void Delete(T? obj) where T : class, IDataObject { Delete(obj, false); } - public virtual void Delete(T? obj, bool save) where T : IDataObject + public virtual void Delete(T? obj, bool save) where T : class, IDataObject { if (obj != null) { @@ -131,12 +131,12 @@ public abstract class DataManager : IDataManager } } - public virtual void Save(T obj) where T : IDataObject + public virtual void Save(T obj) where T : class, IDataObject { Save(obj, false); } - public virtual void Save(T obj, bool save) where T : IDataObject + public virtual void Save(T obj, bool save) where T : class, IDataObject { UpdateEntity(obj); if (save) Save(); diff --git a/Pilz.Net/Data/IDataManager.cs b/Pilz.Net/Data/IDataManager.cs index 6648694..5117a65 100644 --- a/Pilz.Net/Data/IDataManager.cs +++ b/Pilz.Net/Data/IDataManager.cs @@ -4,23 +4,23 @@ namespace Pilz.Net.Data; public interface IDataManager { - void Delete(int id) where T : IDataObject; - void Delete(int id, bool save) where T : IDataObject; - void Delete(T? obj) where T : IDataObject; - void Delete(T? obj, bool save) where T : IDataObject; - T? Find(int id) where T : IDataObject; - bool Find(int id, [NotNullWhen(true)] out T? obj) where T : IDataObject; - T? Find(int? id) where T : IDataObject; - T FindOrNew(int id) where T : IDataObject; - bool FindOrNew(int id, [NotNullWhen(true)] out T? obj) where T : IDataObject; - T FindOrNew(int? id) where T : IDataObject; - bool FindOrNew(int? id, [NotNullWhen(true)] out T? obj) where T : IDataObject; - T? FindOrNull(int id) where T : IDataObject; - bool FindOrNull(int id, out T? obj) where T : IDataObject; - T? FindOrNull(int? id) where T : IDataObject; - bool FindOrNull(int? id, out T? obj) where T : IDataObject; - IQueryable Get() where T : IDataObject; + void Delete(int id) where T : class, IDataObject; + void Delete(int id, bool save) where T : class, IDataObject; + void Delete(T? obj) where T : class, IDataObject; + void Delete(T? obj, bool save) where T : class, IDataObject; + T? Find(int id) where T : class, IDataObject; + bool Find(int id, [NotNullWhen(true)] out T? obj) where T : class, IDataObject; + T? Find(int? id) where T : class, IDataObject; + T FindOrNew(int id) where T : class, IDataObject; + bool FindOrNew(int id, [NotNullWhen(true)] out T? obj) where T : class, IDataObject; + T FindOrNew(int? id) where T : class, IDataObject; + bool FindOrNew(int? id, [NotNullWhen(true)] out T? obj) where T : class, IDataObject; + T? FindOrNull(int id) where T : class, IDataObject; + bool FindOrNull(int id, out T? obj) where T : class, IDataObject; + T? FindOrNull(int? id) where T : class, IDataObject; + bool FindOrNull(int? id, out T? obj) where T : class, IDataObject; + IQueryable Get() where T : class, IDataObject; void Save(); - void Save(T obj) where T : IDataObject; - void Save(T obj, bool save) where T : IDataObject; + void Save(T obj) where T : class, IDataObject; + void Save(T obj, bool save) where T : class, IDataObject; } \ No newline at end of file