enhance UpdateEntity singature
This commit is contained in:
@@ -37,12 +37,12 @@ public abstract class BaseChildItemHandler<TEntity, TParent, TUpdateMsg>(IApiSer
|
|||||||
return list.ToList().Select(ToClient).ToItemsResult();
|
return list.ToList().Select(ToClient).ToItemsResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual ApiResult Post(int parent, TUpdateMsg msg)
|
public virtual ApiResult Post(int parent, TUpdateMsg msg, ApiRequestInfo req)
|
||||||
{
|
{
|
||||||
if (!server.Manager.Find(parent, out TParent? parentEntity))
|
if (!server.Manager.Find(parent, out TParent? parentEntity))
|
||||||
return ApiResult.NotFound();
|
return ApiResult.NotFound();
|
||||||
var entity = CreateNewEntity(msg);
|
var entity = CreateNewEntity(msg);
|
||||||
if (UpdateEntity(entity, msg) is ApiResult result)
|
if (UpdateEntity(new(entity, msg, req)) is ApiResult result)
|
||||||
return result;
|
return result;
|
||||||
GetChilds(parentEntity).Add(entity);
|
GetChilds(parentEntity).Add(entity);
|
||||||
server.Manager.Save(parentEntity, true);
|
server.Manager.Save(parentEntity, true);
|
||||||
|
|||||||
@@ -10,6 +10,13 @@ public abstract class BaseHandler<TEntity, TUpdateMsg>(IApiServer server)
|
|||||||
where TEntity : class, IDataObject
|
where TEntity : class, IDataObject
|
||||||
where TUpdateMsg : ApiMessage
|
where TUpdateMsg : ApiMessage
|
||||||
{
|
{
|
||||||
|
public class EntityUpdate(TEntity entity, TUpdateMsg updateMsg, ApiRequestInfo reqest)
|
||||||
|
{
|
||||||
|
public TEntity Entity { get; } = entity;
|
||||||
|
public TUpdateMsg UpdateMsg { get; } = updateMsg;
|
||||||
|
public ApiRequestInfo Request { get; } = reqest;
|
||||||
|
}
|
||||||
|
|
||||||
public abstract string Route { get; }
|
public abstract string Route { get; }
|
||||||
protected virtual bool RegisterGet => true;
|
protected virtual bool RegisterGet => true;
|
||||||
protected virtual bool RegisterPut => true;
|
protected virtual bool RegisterPut => true;
|
||||||
@@ -33,11 +40,11 @@ public abstract class BaseHandler<TEntity, TUpdateMsg>(IApiServer server)
|
|||||||
return ToClient(entity).ToItemResult();
|
return ToClient(entity).ToItemResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual ApiResult Put(int id, TUpdateMsg msg)
|
public virtual ApiResult Put(int id, TUpdateMsg msg, ApiRequestInfo req)
|
||||||
{
|
{
|
||||||
if (!server.Manager.Find(id, out TEntity? entity))
|
if (!server.Manager.Find(id, out TEntity? entity))
|
||||||
return ApiResult.NotFound();
|
return ApiResult.NotFound();
|
||||||
if (UpdateEntity(entity, msg) is ApiResult result)
|
if (UpdateEntity(new(entity, msg, req)) is ApiResult result)
|
||||||
return result;
|
return result;
|
||||||
server.Manager.Save(entity, true);
|
server.Manager.Save(entity, true);
|
||||||
return ToClient(entity).ToItemResult();
|
return ToClient(entity).ToItemResult();
|
||||||
@@ -54,7 +61,7 @@ public abstract class BaseHandler<TEntity, TUpdateMsg>(IApiServer server)
|
|||||||
return Activator.CreateInstance<TEntity>();
|
return Activator.CreateInstance<TEntity>();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract ApiResult? UpdateEntity(TEntity entity, TUpdateMsg msg);
|
protected abstract ApiResult? UpdateEntity(EntityUpdate update);
|
||||||
|
|
||||||
protected abstract IDataObject ToClient(TEntity entity);
|
protected abstract IDataObject ToClient(TEntity entity);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,10 +29,10 @@ public abstract class BaseItemHandler<TEntity, TUpdateMsg>(IApiServer server)
|
|||||||
return server.Manager.Get<TEntity>().ToList().Select(ToClient).ToItemsResult();
|
return server.Manager.Get<TEntity>().ToList().Select(ToClient).ToItemsResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual ApiResult Post(TUpdateMsg msg)
|
public virtual ApiResult Post(TUpdateMsg msg, ApiRequestInfo req)
|
||||||
{
|
{
|
||||||
var entity = CreateNewEntity(msg);
|
var entity = CreateNewEntity(msg);
|
||||||
if (UpdateEntity(entity, msg) is ApiResult result)
|
if (UpdateEntity(new(entity, msg, req)) is ApiResult result)
|
||||||
return result;
|
return result;
|
||||||
server.Manager.Save(entity, true);
|
server.Manager.Save(entity, true);
|
||||||
return ToClient(entity).ToItemResult(HttpStatusCode.Created);
|
return ToClient(entity).ToItemResult(HttpStatusCode.Created);
|
||||||
|
|||||||
Reference in New Issue
Block a user