New: Add custom filter by protocol for indexer stats

pull/1865/head
Bogdan 1 year ago
parent ee5ed0c91b
commit 80e5ac4aa9

@ -61,6 +61,12 @@ export const defaultState = {
type: filterBuilderTypes.CONTAINS, type: filterBuilderTypes.CONTAINS,
valueType: filterBuilderValueTypes.INDEXER valueType: filterBuilderValueTypes.INDEXER
}, },
{
name: 'protocols',
label: () => translate('Protocols'),
type: filterBuilderTypes.EXACT,
valueType: filterBuilderValueTypes.PROTOCOL
},
{ {
name: 'tags', name: 'tags',
label: () => translate('Tags'), label: () => translate('Tags'),
@ -112,6 +118,10 @@ export const actionHandlers = handleThunks({
requestParams.indexers = selectedFilter.value.join(','); requestParams.indexers = selectedFilter.value.join(',');
} }
if (selectedFilter.key === 'protocols') {
requestParams.protocols = selectedFilter.value.join(',');
}
if (selectedFilter.key === 'tags') { if (selectedFilter.key === 'tags') {
requestParams.tags = selectedFilter.value.join(','); requestParams.tags = selectedFilter.value.join(',');
} }

@ -26,13 +26,30 @@ namespace Prowlarr.Api.V1.Indexers
[HttpGet] [HttpGet]
[Produces("application/json")] [Produces("application/json")]
public IndexerStatsResource GetAll(DateTime? startDate, DateTime? endDate, string indexers, string tags) public IndexerStatsResource GetAll(DateTime? startDate, DateTime? endDate, string indexers, string protocols, string tags)
{ {
var statsStartDate = startDate ?? DateTime.MinValue; var statsStartDate = startDate ?? DateTime.MinValue;
var statsEndDate = endDate ?? DateTime.Now; var statsEndDate = endDate ?? DateTime.Now;
var parsedIndexers = new List<int>(); var parsedIndexers = new List<int>();
var parsedTags = new List<int>(); var parsedTags = new List<int>();
var indexerIds = _indexerFactory.All().Select(i => i.Id).ToList();
var allIndexers = _indexerFactory.All().Select(_indexerFactory.GetInstance).ToList();
if (protocols.IsNotNullOrWhiteSpace())
{
var parsedProtocols = protocols.Split(',')
.Select(protocol =>
{
Enum.TryParse(protocol, true, out DownloadProtocol downloadProtocol);
return downloadProtocol;
})
.ToHashSet();
allIndexers = allIndexers.Where(i => parsedProtocols.Contains(i.Protocol)).ToList();
}
var indexerIds = allIndexers.Select(i => i.Definition.Id).ToList();
if (tags.IsNotNullOrWhiteSpace()) if (tags.IsNotNullOrWhiteSpace())
{ {

Loading…
Cancel
Save