diff --git a/src/NzbDrone.Core/Qualities/QualityDefinitionService.cs b/src/NzbDrone.Core/Qualities/QualityDefinitionService.cs index 9c81eaaf2..31924867c 100644 --- a/src/NzbDrone.Core/Qualities/QualityDefinitionService.cs +++ b/src/NzbDrone.Core/Qualities/QualityDefinitionService.cs @@ -11,6 +11,7 @@ namespace NzbDrone.Core.Qualities public interface IQualityDefinitionService { void Update(QualityDefinition qualityDefinition); + void UpdateMany(List qualityDefinitions); List All(); QualityDefinition GetById(int id); QualityDefinition Get(Quality quality); @@ -41,6 +42,11 @@ public void Update(QualityDefinition qualityDefinition) _cache.Clear(); } + public void UpdateMany(List qualityDefinitions) + { + _repo.UpdateMany(qualityDefinitions); + } + public List All() { return GetAll().Values.OrderBy(d => d.Weight).ToList(); diff --git a/src/Radarr.Api.V2/Qualities/QualityDefinitionModule.cs b/src/Radarr.Api.V2/Qualities/QualityDefinitionModule.cs index a2c8149a9..c5329b9b7 100644 --- a/src/Radarr.Api.V2/Qualities/QualityDefinitionModule.cs +++ b/src/Radarr.Api.V2/Qualities/QualityDefinitionModule.cs @@ -1,35 +1,24 @@ -using System; using System.Collections.Generic; -using Radarr.Http.REST; -using NzbDrone.Core.Parser; -using NzbDrone.Core.Parser.Model; +using System.Linq; +using Nancy; using NzbDrone.Core.Qualities; using Radarr.Http; +using Radarr.Http.Extensions; namespace Radarr.Api.V2.Qualities { public class QualityDefinitionModule : RadarrRestModule { private readonly IQualityDefinitionService _qualityDefinitionService; - private readonly IParsingService _parsingService; - public QualityDefinitionModule(IQualityDefinitionService qualityDefinitionService, IParsingService parsingService) + public QualityDefinitionModule(IQualityDefinitionService qualityDefinitionService) { _qualityDefinitionService = qualityDefinitionService; - _parsingService = parsingService; GetResourceAll = GetAll; - GetResourceById = GetById; - UpdateResource = Update; - - CreateResource = Create; - } - - private int Create(QualityDefinitionResource qualityDefinitionResource) - { - throw new BadRequestException("Not allowed!"); + Put("/update", d => UpdateMany()); } private void Update(QualityDefinitionResource resource) @@ -47,5 +36,19 @@ private List GetAll() { return _qualityDefinitionService.All().ToResource(); } + + private object UpdateMany() + { + //Read from request + var qualityDefinitions = Request.Body.FromJson>() + .ToModel() + .ToList(); + + _qualityDefinitionService.UpdateMany(qualityDefinitions); + + return ResponseWithCode(_qualityDefinitionService.All() + .ToResource() + , HttpStatusCode.Accepted); + } } -} +} \ No newline at end of file diff --git a/src/Radarr.Api.V2/Qualities/QualityDefinitionResource.cs b/src/Radarr.Api.V2/Qualities/QualityDefinitionResource.cs index 1adcdc4f4..565b95cd1 100644 --- a/src/Radarr.Api.V2/Qualities/QualityDefinitionResource.cs +++ b/src/Radarr.Api.V2/Qualities/QualityDefinitionResource.cs @@ -61,5 +61,10 @@ public static List ToResource(this IEnumerable ToModel(this IEnumerable resources) + { + return resources.Select(ToModel).ToList(); + } } }