only allow reference types on the server side
This commit is contained in:
@@ -7,8 +7,8 @@ namespace Pilz.Net.Api.Server;
|
|||||||
|
|
||||||
public abstract class BaseChildItemHandler<TEntity, TParent, TUpdateMsg>(IApiServer server)
|
public abstract class BaseChildItemHandler<TEntity, TParent, TUpdateMsg>(IApiServer server)
|
||||||
: BaseHandler<TEntity, TUpdateMsg>(server)
|
: BaseHandler<TEntity, TUpdateMsg>(server)
|
||||||
where TEntity : IDataObject
|
where TEntity : class, IDataObject
|
||||||
where TParent : IDataObject
|
where TParent : class, IDataObject
|
||||||
where TUpdateMsg : ApiMessage
|
where TUpdateMsg : ApiMessage
|
||||||
{
|
{
|
||||||
protected virtual bool RegisterGetAll => true;
|
protected virtual bool RegisterGetAll => true;
|
||||||
|
|||||||
@@ -2,15 +2,12 @@
|
|||||||
using Pilz.Net.Data;
|
using Pilz.Net.Data;
|
||||||
using Pilz.Net.Extensions;
|
using Pilz.Net.Extensions;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Linq.Expressions;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
|
|
||||||
namespace Pilz.Net.Api.Server;
|
namespace Pilz.Net.Api.Server;
|
||||||
|
|
||||||
public abstract class BaseHandler<TEntity, TUpdateMsg>(IApiServer server)
|
public abstract class BaseHandler<TEntity, TUpdateMsg>(IApiServer server)
|
||||||
: IApiHandlerInitializer
|
: IApiHandlerInitializer
|
||||||
where TEntity : IDataObject
|
where TEntity : class, IDataObject
|
||||||
where TUpdateMsg : ApiMessage
|
where TUpdateMsg : ApiMessage
|
||||||
{
|
{
|
||||||
public abstract string Route { get; }
|
public abstract string Route { get; }
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace Pilz.Net.Api.Server;
|
|||||||
|
|
||||||
public abstract class BaseItemHandler<TEntity, TUpdateMsg>(IApiServer server)
|
public abstract class BaseItemHandler<TEntity, TUpdateMsg>(IApiServer server)
|
||||||
: BaseHandler<TEntity, TUpdateMsg>(server)
|
: BaseHandler<TEntity, TUpdateMsg>(server)
|
||||||
where TEntity : IDataObject
|
where TEntity : class, IDataObject
|
||||||
where TUpdateMsg : ApiMessage
|
where TUpdateMsg : ApiMessage
|
||||||
{
|
{
|
||||||
protected virtual bool RegisterGetAll => true;
|
protected virtual bool RegisterGetAll => true;
|
||||||
|
|||||||
@@ -4,58 +4,58 @@ namespace Pilz.Net.Data;
|
|||||||
|
|
||||||
public abstract class DataManager : IDataManager
|
public abstract class DataManager : IDataManager
|
||||||
{
|
{
|
||||||
protected abstract void UpdateEntity<T>(T obj) where T : IDataObject;
|
protected abstract void UpdateEntity<T>(T obj) where T : class, IDataObject;
|
||||||
protected abstract IQueryable<T> GetEntitySet<T>() where T : IDataObject;
|
protected abstract IQueryable<T> GetEntitySet<T>() where T : class, IDataObject;
|
||||||
protected abstract T? FindEntity<T>(int id) where T : IDataObject;
|
protected abstract T? FindEntity<T>(int id) where T : class, IDataObject;
|
||||||
protected abstract void RemoveEntity<T>(T obj) where T : IDataObject;
|
protected abstract void RemoveEntity<T>(T obj) where T : class, IDataObject;
|
||||||
protected abstract void SaveChanges();
|
protected abstract void SaveChanges();
|
||||||
|
|
||||||
public virtual IQueryable<T> Get<T>() where T : IDataObject
|
public virtual IQueryable<T> Get<T>() where T : class, IDataObject
|
||||||
{
|
{
|
||||||
return GetEntitySet<T>();
|
return GetEntitySet<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual T FindOrNew<T>(int? id) where T : IDataObject
|
public virtual T FindOrNew<T>(int? id) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
if (Find<T>(id) is not T obj)
|
if (Find<T>(id) is not T obj)
|
||||||
obj = Activator.CreateInstance<T>();
|
obj = Activator.CreateInstance<T>();
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual T FindOrNew<T>(int id) where T : IDataObject
|
public virtual T FindOrNew<T>(int id) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
if (Find<T>(id) is not T obj)
|
if (Find<T>(id) is not T obj)
|
||||||
obj = Activator.CreateInstance<T>();
|
obj = Activator.CreateInstance<T>();
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual T? FindOrNull<T>(int? id) where T : IDataObject
|
public virtual T? FindOrNull<T>(int? id) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
if (id == null || id == 0)
|
if (id == null || id == 0)
|
||||||
return default;
|
return default;
|
||||||
return Find<T>(id);
|
return Find<T>(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual T? FindOrNull<T>(int id) where T : IDataObject
|
public virtual T? FindOrNull<T>(int id) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
if (id == 0)
|
if (id == 0)
|
||||||
return default;
|
return default;
|
||||||
return Find<T>(id);
|
return Find<T>(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual T? Find<T>(int? id) where T : IDataObject
|
public virtual T? Find<T>(int? id) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
if (id == null)
|
if (id == null)
|
||||||
return default;
|
return default;
|
||||||
return Find<T>(id.Value);
|
return Find<T>(id.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual T? Find<T>(int id) where T : IDataObject
|
public virtual T? Find<T>(int id) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
return FindEntity<T>(id);
|
return FindEntity<T>(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool FindOrNew<T>(int? id, [NotNullWhen(true)] out T? obj) where T : IDataObject
|
public virtual bool FindOrNew<T>(int? id, [NotNullWhen(true)] out T? obj) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
if (id == null || id == 0)
|
if (id == null || id == 0)
|
||||||
{
|
{
|
||||||
@@ -65,7 +65,7 @@ public abstract class DataManager : IDataManager
|
|||||||
return Find(id.Value, out obj);
|
return Find(id.Value, out obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool FindOrNew<T>(int id, [NotNullWhen(true)] out T? obj) where T : IDataObject
|
public virtual bool FindOrNew<T>(int id, [NotNullWhen(true)] out T? obj) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
if (id == 0)
|
if (id == 0)
|
||||||
{
|
{
|
||||||
@@ -75,7 +75,7 @@ public abstract class DataManager : IDataManager
|
|||||||
return Find(id, out obj);
|
return Find(id, out obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool FindOrNull<T>(int? id, out T? obj) where T : IDataObject
|
public virtual bool FindOrNull<T>(int? id, out T? obj) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
if (id == null || id == 0)
|
if (id == null || id == 0)
|
||||||
{
|
{
|
||||||
@@ -85,7 +85,7 @@ public abstract class DataManager : IDataManager
|
|||||||
return Find(id.Value, out obj);
|
return Find(id.Value, out obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool FindOrNull<T>(int id, out T? obj) where T : IDataObject
|
public virtual bool FindOrNull<T>(int id, out T? obj) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
if (id == 0)
|
if (id == 0)
|
||||||
{
|
{
|
||||||
@@ -95,7 +95,7 @@ public abstract class DataManager : IDataManager
|
|||||||
return Find(id, out obj);
|
return Find(id, out obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool Find<T>(int id, [NotNullWhen(true)] out T? obj) where T : IDataObject
|
public virtual bool Find<T>(int id, [NotNullWhen(true)] out T? obj) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
if (FindEntity<T>(id) is not T t)
|
if (FindEntity<T>(id) is not T t)
|
||||||
{
|
{
|
||||||
@@ -106,23 +106,23 @@ public abstract class DataManager : IDataManager
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Delete<T>(int id) where T : IDataObject
|
public virtual void Delete<T>(int id) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
Delete<T>(id, false);
|
Delete<T>(id, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Delete<T>(int id, bool save) where T : IDataObject
|
public virtual void Delete<T>(int id, bool save) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
if (Find(id, out T? obj))
|
if (Find(id, out T? obj))
|
||||||
Delete(obj, save);
|
Delete(obj, save);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Delete<T>(T? obj) where T : IDataObject
|
public virtual void Delete<T>(T? obj) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
Delete(obj, false);
|
Delete(obj, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Delete<T>(T? obj, bool save) where T : IDataObject
|
public virtual void Delete<T>(T? obj, bool save) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
if (obj != null)
|
if (obj != null)
|
||||||
{
|
{
|
||||||
@@ -131,12 +131,12 @@ public abstract class DataManager : IDataManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Save<T>(T obj) where T : IDataObject
|
public virtual void Save<T>(T obj) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
Save(obj, false);
|
Save(obj, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Save<T>(T obj, bool save) where T : IDataObject
|
public virtual void Save<T>(T obj, bool save) where T : class, IDataObject
|
||||||
{
|
{
|
||||||
UpdateEntity(obj);
|
UpdateEntity(obj);
|
||||||
if (save) Save();
|
if (save) Save();
|
||||||
|
|||||||
@@ -4,23 +4,23 @@ namespace Pilz.Net.Data;
|
|||||||
|
|
||||||
public interface IDataManager
|
public interface IDataManager
|
||||||
{
|
{
|
||||||
void Delete<T>(int id) where T : IDataObject;
|
void Delete<T>(int id) where T : class, IDataObject;
|
||||||
void Delete<T>(int id, bool save) where T : IDataObject;
|
void Delete<T>(int id, bool save) where T : class, IDataObject;
|
||||||
void Delete<T>(T? obj) where T : IDataObject;
|
void Delete<T>(T? obj) where T : class, IDataObject;
|
||||||
void Delete<T>(T? obj, bool save) where T : IDataObject;
|
void Delete<T>(T? obj, bool save) where T : class, IDataObject;
|
||||||
T? Find<T>(int id) where T : IDataObject;
|
T? Find<T>(int id) where T : class, IDataObject;
|
||||||
bool Find<T>(int id, [NotNullWhen(true)] out T? obj) where T : IDataObject;
|
bool Find<T>(int id, [NotNullWhen(true)] out T? obj) where T : class, IDataObject;
|
||||||
T? Find<T>(int? id) where T : IDataObject;
|
T? Find<T>(int? id) where T : class, IDataObject;
|
||||||
T FindOrNew<T>(int id) where T : IDataObject;
|
T FindOrNew<T>(int id) where T : class, IDataObject;
|
||||||
bool FindOrNew<T>(int id, [NotNullWhen(true)] out T? obj) where T : IDataObject;
|
bool FindOrNew<T>(int id, [NotNullWhen(true)] out T? obj) where T : class, IDataObject;
|
||||||
T FindOrNew<T>(int? id) where T : IDataObject;
|
T FindOrNew<T>(int? id) where T : class, IDataObject;
|
||||||
bool FindOrNew<T>(int? id, [NotNullWhen(true)] out T? obj) where T : IDataObject;
|
bool FindOrNew<T>(int? id, [NotNullWhen(true)] out T? obj) where T : class, IDataObject;
|
||||||
T? FindOrNull<T>(int id) where T : IDataObject;
|
T? FindOrNull<T>(int id) where T : class, IDataObject;
|
||||||
bool FindOrNull<T>(int id, out T? obj) where T : IDataObject;
|
bool FindOrNull<T>(int id, out T? obj) where T : class, IDataObject;
|
||||||
T? FindOrNull<T>(int? id) where T : IDataObject;
|
T? FindOrNull<T>(int? id) where T : class, IDataObject;
|
||||||
bool FindOrNull<T>(int? id, out T? obj) where T : IDataObject;
|
bool FindOrNull<T>(int? id, out T? obj) where T : class, IDataObject;
|
||||||
IQueryable<T> Get<T>() where T : IDataObject;
|
IQueryable<T> Get<T>() where T : class, IDataObject;
|
||||||
void Save();
|
void Save();
|
||||||
void Save<T>(T obj) where T : IDataObject;
|
void Save<T>(T obj) where T : class, IDataObject;
|
||||||
void Save<T>(T obj, bool save) where T : IDataObject;
|
void Save<T>(T obj, bool save) where T : class, IDataObject;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user