native amount/offset handling

This commit is contained in:
2025-05-23 11:17:48 +02:00
parent 6712751141
commit c10fca45e6
6 changed files with 39 additions and 7 deletions

View File

@@ -45,20 +45,27 @@ public abstract class BaseChildItemHandler<TEntity, TParent, TUpdateMsg>(IApiSer
server.RegisterHandler(t.GetMethod(nameof(Post))!.CreateDelegate(this), new(RouteParent + "/{pid}" + RouteChild, "POST"), Debugger.IsAttached);
}
public virtual ApiResult GetAll(int pid)
public virtual ApiResult GetAll(int pid, int offset, int amount)
{
IQueryable<TEntity> list;
IQueryable<TEntity> entities;
if (pid != 0)
{
if (!server.Manager.Find(pid, out TParent? parentEntity))
return ApiResult.NotFound();
list = GetChilds(parentEntity).AsQueryable();
entities = GetChilds(parentEntity).AsQueryable();
}
else
list = server.Manager.Get<TEntity>();
entities = server.Manager.Get<TEntity>();
return SortEntities(list).ToList().Select(ToClient).ToItemsResult();
entities = SortEntities(entities);
if (offset > 0)
entities = entities.Skip(offset);
if (amount > 0)
entities = entities.Take(amount);
return SortEntities(entities).ToList().Select(ToClient).ToItemsResult();
}
public virtual ApiResult Post(int pid, TUpdateMsg msg, ApiRequestInfo req)

View File

@@ -24,9 +24,14 @@ public abstract class BaseItemHandler<TEntity, TUpdateMsg>(IApiServer server)
server.RegisterHandler(t.GetMethod(nameof(Post))!.CreateDelegate(this), new(Route, "POST"), Debugger.IsAttached);
}
public virtual ApiResult GetAll()
public virtual ApiResult GetAll(int offset, int amount)
{
return SortEntities(server.Manager.Get<TEntity>()).ToList().Select(ToClient).ToItemsResult();
var entities = SortEntities(server.Manager.Get<TEntity>());
if (offset > 0)
entities = entities.Skip(offset);
if (amount > 0)
entities = entities.Take(amount);
return entities.ToList().Select(ToClient).ToItemsResult();
}
public virtual ApiResult Post(TUpdateMsg msg, ApiRequestInfo req)