add ids filter
This commit is contained in:
@@ -45,7 +45,7 @@ public abstract class BaseChildItemHandler<TEntity, TParent, TUpdateMsg>(IApiSer
|
|||||||
server.RegisterHandler(t.GetMethod(nameof(Post))!.CreateDelegate(this), new(RouteParent + "/{pid}" + RouteChild, "POST"), Debugger.IsAttached);
|
server.RegisterHandler(t.GetMethod(nameof(Post))!.CreateDelegate(this), new(RouteParent + "/{pid}" + RouteChild, "POST"), Debugger.IsAttached);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual ApiResult GetAll(int pid, int offset, int amount)
|
public virtual ApiResult GetAll(int pid, string? ids, int offset, int amount)
|
||||||
{
|
{
|
||||||
IQueryable<TEntity> entities;
|
IQueryable<TEntity> entities;
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ public abstract class BaseChildItemHandler<TEntity, TParent, TUpdateMsg>(IApiSer
|
|||||||
else
|
else
|
||||||
entities = server.Manager.Get<TEntity>();
|
entities = server.Manager.Get<TEntity>();
|
||||||
|
|
||||||
entities = SortEntities(entities);
|
entities = SortEntities(FilterByIDs(entities, ids));
|
||||||
|
|
||||||
if (offset > 0)
|
if (offset > 0)
|
||||||
entities = entities.Skip(offset);
|
entities = entities.Skip(offset);
|
||||||
|
|||||||
@@ -79,6 +79,16 @@ public abstract class BaseHandler<TEntity, TUpdateMsg>(IApiServer server)
|
|||||||
return Activator.CreateInstance<TEntity>();
|
return Activator.CreateInstance<TEntity>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected virtual IQueryable<TEntity> FilterByIDs(IQueryable<TEntity> entities, string? idsStr)
|
||||||
|
{
|
||||||
|
if (idsStr != null)
|
||||||
|
{
|
||||||
|
var ids = idsStr.Split(',').Select(n => int.TryParse(n, out var v) ? v : default);
|
||||||
|
return entities.Where(n => ids.Contains(n.Id));
|
||||||
|
}
|
||||||
|
return entities;
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract ApiResult? UpdateEntity(EntityUpdate update);
|
protected abstract ApiResult? UpdateEntity(EntityUpdate update);
|
||||||
|
|
||||||
protected abstract IDataObject ToClient(TEntity entity);
|
protected abstract IDataObject ToClient(TEntity entity);
|
||||||
|
|||||||
@@ -24,9 +24,9 @@ public abstract class BaseItemHandler<TEntity, TUpdateMsg>(IApiServer server)
|
|||||||
server.RegisterHandler(t.GetMethod(nameof(Post))!.CreateDelegate(this), new(Route, "POST"), Debugger.IsAttached);
|
server.RegisterHandler(t.GetMethod(nameof(Post))!.CreateDelegate(this), new(Route, "POST"), Debugger.IsAttached);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual ApiResult GetAll(int offset, int amount)
|
public virtual ApiResult GetAll(string? ids, int offset, int amount)
|
||||||
{
|
{
|
||||||
var entities = SortEntities(server.Manager.Get<TEntity>());
|
var entities = SortEntities(FilterByIDs(server.Manager.Get<TEntity>(), ids));
|
||||||
if (offset > 0)
|
if (offset > 0)
|
||||||
entities = entities.Skip(offset);
|
entities = entities.Skip(offset);
|
||||||
if (amount > 0)
|
if (amount > 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user