add paged plugins

This commit is contained in:
Jicheng Lu 2024-01-22 17:26:48 -06:00
parent 653ed1f65f
commit 55c3c70893
3 changed files with 22 additions and 3 deletions

View file

@ -0,0 +1,7 @@
namespace BotSharp.Abstraction.Plugins.Models
{
public class PluginFilter
{
public Pagination Pager { get; set; } = new Pagination();
}
}

View file

@ -89,6 +89,18 @@ public class PluginLoader
return _plugins;
}
public PagedItems<PluginDef> GetPagedPlugins(IServiceProvider services, PluginFilter filter)
{
var plugins = GetPlugins(services);
var pager = filter?.Pager ?? new Pagination();
return new PagedItems<PluginDef>
{
Items = plugins.Skip(pager.Offset).Take(pager.Size),
Count = plugins.Count()
};
}
public PluginDef UpdatePluginStatus(IServiceProvider services, string id, bool enable)
{
var plugin = _plugins.First(x => x.Id == id);

View file

@ -16,11 +16,11 @@ public class PluginController : ControllerBase
_settings = settings;
}
[HttpGet("/plugins")]
public List<PluginDef> GetPlugins()
[HttpPost("/plugins")]
public PagedItems<PluginDef> GetPlugins([FromBody] PluginFilter filter)
{
var loader = _services.GetRequiredService<PluginLoader>();
return loader.GetPlugins(_services);
return loader.GetPagedPlugins(_services, filter);
}
[HttpGet("/plugin/menu")]