diff --git a/PlexRequests.Core/Queue/ITransientFaultQueue.cs b/PlexRequests.Core/Queue/ITransientFaultQueue.cs index 649209307..ee5ea05d0 100644 --- a/PlexRequests.Core/Queue/ITransientFaultQueue.cs +++ b/PlexRequests.Core/Queue/ITransientFaultQueue.cs @@ -12,6 +12,6 @@ namespace PlexRequests.Core.Queue IEnumerable GetQueue(); Task> GetQueueAsync(); void QueueItem(RequestedModel request, string id, RequestType type, FaultType faultType); - Task QueueItemAsync(RequestedModel request, string id, RequestType type, FaultType faultType); + Task QueueItemAsync(RequestedModel request, string id, RequestType type, FaultType faultType, string message = null); } } \ No newline at end of file diff --git a/PlexRequests.Core/Queue/TransientFaultQueue.cs b/PlexRequests.Core/Queue/TransientFaultQueue.cs index 5c2f1de71..2be15bfa5 100644 --- a/PlexRequests.Core/Queue/TransientFaultQueue.cs +++ b/PlexRequests.Core/Queue/TransientFaultQueue.cs @@ -74,7 +74,7 @@ namespace PlexRequests.Core.Queue RequestQueue.Insert(queue); } - public async Task QueueItemAsync(RequestedModel request, string id, RequestType type, FaultType faultType) + public async Task QueueItemAsync(RequestedModel request, string id, RequestType type, FaultType faultType, string description = null) { //Ensure there is not a duplicate queued item var existingItem = await RequestQueue.CustomAsync(async connection => @@ -96,7 +96,8 @@ namespace PlexRequests.Core.Queue Type = type, Content = ByteConverterHelper.ReturnBytes(request), PrimaryIdentifier = id, - FaultType = faultType + FaultType = faultType, + Message = description ?? string.Empty }; await RequestQueue.InsertAsync(queue); } diff --git a/PlexRequests.Store/Models/RequestQueue.cs b/PlexRequests.Store/Models/RequestQueue.cs index cbbfb62b6..f68d2140c 100644 --- a/PlexRequests.Store/Models/RequestQueue.cs +++ b/PlexRequests.Store/Models/RequestQueue.cs @@ -41,6 +41,7 @@ namespace PlexRequests.Store.Models public FaultType FaultType { get; set; } public DateTime? LastRetry { get; set; } + public string Message { get; set; } } public enum FaultType diff --git a/PlexRequests.Store/SqlTables.sql b/PlexRequests.Store/SqlTables.sql index e1f5e6b44..90116a206 100644 --- a/PlexRequests.Store/SqlTables.sql +++ b/PlexRequests.Store/SqlTables.sql @@ -146,7 +146,8 @@ CREATE TABLE IF NOT EXISTS RequestFaultQueue Type INTEGER NOT NULL, FaultType INTEGER NOT NULL, Content BLOB NOT NULL, - LastRetry VARCHAR(100) + LastRetry VARCHAR(100), + Description VARCHAR(100) ); CREATE UNIQUE INDEX IF NOT EXISTS PlexUsers_Id ON PlexUsers (Id); diff --git a/PlexRequests.UI/Models/FaultedRequestsViewModel.cs b/PlexRequests.UI/Models/FaultedRequestsViewModel.cs index d0f5de428..b9dc96c54 100644 --- a/PlexRequests.UI/Models/FaultedRequestsViewModel.cs +++ b/PlexRequests.UI/Models/FaultedRequestsViewModel.cs @@ -39,6 +39,7 @@ namespace PlexRequests.UI.Models public string Title { get; set; } public FaultTypeViewModel FaultType { get; set; } public DateTime? LastRetry { get; set; } + public string Message { get; set; } } public enum RequestTypeViewModel diff --git a/PlexRequests.UI/Modules/Admin/FaultQueueModule.cs b/PlexRequests.UI/Modules/Admin/FaultQueueModule.cs index 22b916bc1..bb79e729d 100644 --- a/PlexRequests.UI/Modules/Admin/FaultQueueModule.cs +++ b/PlexRequests.UI/Modules/Admin/FaultQueueModule.cs @@ -65,7 +65,8 @@ namespace PlexRequests.UI.Modules.Admin Title = ByteConverterHelper.ReturnObject(r.Content).Title, Id = r.Id, PrimaryIdentifier = r.PrimaryIdentifier, - LastRetry = r.LastRetry + LastRetry = r.LastRetry, + Message = r.Message }).ToList(); return View["RequestFaultQueue", model]; diff --git a/PlexRequests.UI/Modules/SearchModule.cs b/PlexRequests.UI/Modules/SearchModule.cs index 3e1ef1d9d..7ce69e003 100644 --- a/PlexRequests.UI/Modules/SearchModule.cs +++ b/PlexRequests.UI/Modules/SearchModule.cs @@ -595,7 +595,7 @@ namespace PlexRequests.UI.Modules catch (Exception e) { Log.Fatal(e); - await FaultQueue.QueueItemAsync(model, movieInfo.Id.ToString(), RequestType.Movie, FaultType.RequestFault); + await FaultQueue.QueueItemAsync(model, movieInfo.Id.ToString(), RequestType.Movie, FaultType.RequestFault, e.Message); await NotificationService.Publish(new NotificationModel { @@ -866,7 +866,7 @@ namespace PlexRequests.UI.Modules if (showInfo.externals?.thetvdb == null) { - await FaultQueue.QueueItemAsync(model, showInfo.id.ToString(), RequestType.TvShow, FaultType.MissingInformation); + await FaultQueue.QueueItemAsync(model, showInfo.id.ToString(), RequestType.TvShow, FaultType.MissingInformation, "We do not have a TheTVDBId from TVMaze"); await NotificationService.Publish(new NotificationModel { DateTime = DateTime.Now, @@ -941,7 +941,7 @@ namespace PlexRequests.UI.Modules } catch (Exception e) { - await FaultQueue.QueueItemAsync(model, showInfo.id.ToString(), RequestType.TvShow, FaultType.RequestFault); + await FaultQueue.QueueItemAsync(model, showInfo.id.ToString(), RequestType.TvShow, FaultType.RequestFault, e.Message); await NotificationService.Publish(new NotificationModel { DateTime = DateTime.Now, @@ -1116,7 +1116,7 @@ namespace PlexRequests.UI.Modules catch (Exception e) { Log.Error(e); - await FaultQueue.QueueItemAsync(model, albumInfo.id, RequestType.Album, FaultType.RequestFault); + await FaultQueue.QueueItemAsync(model, albumInfo.id, RequestType.Album, FaultType.RequestFault, e.Message); await NotificationService.Publish(new NotificationModel { diff --git a/PlexRequests.UI/Views/Admin/RequestFaultQueue.cshtml b/PlexRequests.UI/Views/Admin/RequestFaultQueue.cshtml index 0e1329c4d..cb9215334 100644 --- a/PlexRequests.UI/Views/Admin/RequestFaultQueue.cshtml +++ b/PlexRequests.UI/Views/Admin/RequestFaultQueue.cshtml @@ -20,6 +20,9 @@ LastRetry + + Error Description + @@ -39,6 +42,9 @@ @m.LastRetry + + @m.Message + } diff --git a/PlexRequests.UI/Views/Shared/Partial/_Navbar.cshtml b/PlexRequests.UI/Views/Shared/Partial/_Navbar.cshtml index 67b1701f8..39352321b 100644 --- a/PlexRequests.UI/Views/Shared/Partial/_Navbar.cshtml +++ b/PlexRequests.UI/Views/Shared/Partial/_Navbar.cshtml @@ -110,7 +110,7 @@ var donationText = $("#donationText"); donateLink.attr("href", result.url); if (result.message) { - donationText.text(result.message); + donationText.text(result.message); } } },