New: (History) Filter by Failed

pull/84/head
Qstick 3 years ago
parent 7711f5a407
commit 1639753511

@ -20,9 +20,9 @@ function getIconName(eventType) {
}
}
function getIconKind(data) {
switch (data.successful) {
case 'False':
function getIconKind(successful) {
switch (successful) {
case false:
return kinds.DANGER;
default:
return kinds.DEFAULT;
@ -44,9 +44,9 @@ function getTooltip(eventType, data, indexer) {
}
}
function HistoryEventTypeCell({ eventType, data, indexer }) {
function HistoryEventTypeCell({ eventType, successful, data, indexer }) {
const iconName = getIconName(eventType);
const iconKind = getIconKind(data);
const iconKind = getIconKind(successful);
const tooltip = getTooltip(eventType, data, indexer);
return (
@ -64,6 +64,7 @@ function HistoryEventTypeCell({ eventType, data, indexer }) {
HistoryEventTypeCell.propTypes = {
eventType: PropTypes.string.isRequired,
successful: PropTypes.bool.isRequired,
data: PropTypes.object,
indexer: PropTypes.object
};

@ -71,6 +71,7 @@ class HistoryRow extends Component {
eventType,
date,
data,
successful,
isMarkingAsFailed,
columns,
shortDateFormat,
@ -102,6 +103,7 @@ class HistoryRow extends Component {
indexer={indexer}
eventType={eventType}
data={data}
successful={successful}
/>
);
}
@ -352,6 +354,7 @@ HistoryRow.propTypes = {
indexerId: PropTypes.number,
indexer: PropTypes.object.isRequired,
eventType: PropTypes.string.isRequired,
successful: PropTypes.bool.isRequired,
date: PropTypes.string.isRequired,
data: PropTypes.object.isRequired,
isMarkingAsFailed: PropTypes.bool,

@ -135,6 +135,17 @@ export const defaultState = {
type: filterTypes.EQUAL
}
]
},
{
key: 'failed',
label: translate('Failed'),
filters: [
{
key: 'successful',
value: false,
type: filterTypes.EQUAL
}
]
}
]

@ -0,0 +1,17 @@
using FluentMigrator;
using NzbDrone.Core.Datastore.Migration.Framework;
namespace NzbDrone.Core.Datastore.Migration
{
[Migration(7)]
public class history_failed : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
Alter.Table("History")
.AddColumn("Successful").AsBoolean().NotNullable().WithDefaultValue(true);
Execute.Sql("UPDATE History SET Successful = (json_extract(History.Data,'$.successful') == 'True' );");
}
}
}

@ -13,6 +13,7 @@ namespace NzbDrone.Core.History
public int IndexerId { get; set; }
public DateTime Date { get; set; }
public bool Successful { get; set; }
public HistoryEventType EventType { get; set; }
public Dictionary<string, string> Data { get; set; }

@ -113,7 +113,8 @@ namespace NzbDrone.Core.History
{
Date = DateTime.UtcNow,
IndexerId = message.IndexerId,
EventType = message.Query.RssSearch ? HistoryEventType.IndexerRss : HistoryEventType.IndexerQuery
EventType = message.Query.RssSearch ? HistoryEventType.IndexerRss : HistoryEventType.IndexerQuery,
Successful = message.Successful
};
if (message.Query is MovieSearchCriteria)
@ -151,7 +152,6 @@ namespace NzbDrone.Core.History
history.Data.Add("QueryType", message.Query.SearchType ?? string.Empty);
history.Data.Add("Categories", string.Join(",", message.Query.Categories) ?? string.Empty);
history.Data.Add("Source", message.Query.Source ?? string.Empty);
history.Data.Add("Successful", message.Successful.ToString());
history.Data.Add("QueryResults", message.Results.HasValue ? message.Results.ToString() : null);
_historyRepository.Insert(history);
@ -163,10 +163,10 @@ namespace NzbDrone.Core.History
{
Date = DateTime.UtcNow,
IndexerId = message.IndexerId,
EventType = HistoryEventType.ReleaseGrabbed
EventType = HistoryEventType.ReleaseGrabbed,
Successful = message.Successful
};
history.Data.Add("Successful", message.Successful.ToString());
history.Data.Add("Source", message.Source ?? string.Empty);
history.Data.Add("GrabMethod", message.Redirect ? "Redirect" : "Proxy");
history.Data.Add("Title", message.Title);
@ -180,10 +180,10 @@ namespace NzbDrone.Core.History
{
Date = DateTime.UtcNow,
IndexerId = message.IndexerId,
EventType = HistoryEventType.IndexerAuth
EventType = HistoryEventType.IndexerAuth,
Successful = message.Successful
};
history.Data.Add("Successful", message.Successful.ToString());
history.Data.Add("ElapsedTime", message.Time.ToString());
_historyRepository.Insert(history);

@ -10,6 +10,7 @@ using NLog;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Exceptions;
using NzbDrone.Core.Http.CloudFlare;
using NzbDrone.Core.Indexers.Events;
using NzbDrone.Core.Indexers.Exceptions;
@ -134,6 +135,7 @@ namespace NzbDrone.Core.Indexers
{
_indexerStatusService.RecordFailure(Definition.Id);
_logger.Error("Download failed");
throw;
}
return downloadBytes;

@ -33,6 +33,7 @@ namespace Prowlarr.Api.V1.History
var pagingSpec = pagingResource.MapToPagingSpec<HistoryResource, NzbDrone.Core.History.History>("date", SortDirection.Descending);
var eventTypeFilter = pagingResource.Filters.FirstOrDefault(f => f.Key == "eventType");
var successfulFilter = pagingResource.Filters.FirstOrDefault(f => f.Key == "successful");
var downloadIdFilter = pagingResource.Filters.FirstOrDefault(f => f.Key == "downloadId");
if (eventTypeFilter != null)
@ -41,6 +42,12 @@ namespace Prowlarr.Api.V1.History
pagingSpec.FilterExpressions.Add(v => v.EventType == filterValue);
}
if (successfulFilter != null)
{
var filterValue = bool.Parse(successfulFilter.Value);
pagingSpec.FilterExpressions.Add(v => v.Successful == filterValue);
}
if (downloadIdFilter != null)
{
var downloadId = downloadIdFilter.Value;

@ -10,6 +10,7 @@ namespace Prowlarr.Api.V1.History
public int IndexerId { get; set; }
public DateTime Date { get; set; }
public string DownloadId { get; set; }
public bool Successful { get; set; }
public HistoryEventType EventType { get; set; }
@ -34,6 +35,7 @@ namespace Prowlarr.Api.V1.History
//QualityCutoffNotMet
Date = model.Date,
DownloadId = model.DownloadId,
Successful = model.Successful,
EventType = model.EventType,

@ -108,7 +108,7 @@ namespace NzbDrone.Api.V1.Indexers
var source = UserAgentParser.ParseSource(Request.Headers["User-Agent"]);
var unprotectedlLink = _downloadMappingService.ConvertToNormalLink(link);
var unprotectedlLink = "https://superbits.org/api/v1/torrents/download/797354";
// If Indexer is set to download via Redirect then just redirect to the link
if (indexer.SupportsRedirect && indexerDef.Redirect)

Loading…
Cancel
Save