diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/101_add_ultrahd_quality_in_profilesFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/101_add_ultrahd_quality_in_profilesFixture.cs new file mode 100644 index 000000000..8e5562824 --- /dev/null +++ b/src/NzbDrone.Core.Test/Datastore/Migration/101_add_ultrahd_quality_in_profilesFixture.cs @@ -0,0 +1,35 @@ +using System.Linq; +using FluentAssertions; +using NUnit.Framework; +using NzbDrone.Core.Datastore.Migration; +using NzbDrone.Core.Test.Framework; + +namespace NzbDrone.Core.Test.Datastore.Migration +{ + [TestFixture] + public class add_ultrahd_quality_in_profilesFixture : MigrationTest + { + [Test] + public void should_add_ultrahd_to_old_profile() + { + var db = WithMigrationTestDb(c => + { + c.Insert.IntoTable("Profiles").Row(new + { + Id = 0, + Name = "SDTV", + Cutoff = 1, + Items = "[ { \"quality\": 1, \"allowed\": true } ]", + Language = 1 + }); + }); + + var profiles = db.Query("SELECT Items FROM Profiles LIMIT 1"); + + var items = profiles.First().Items; + items.Should().HaveCount(4); + items.Select(v => v.Quality).Should().BeEquivalentTo(1, 16, 18, 19); + items.Select(v => v.Allowed).Should().BeEquivalentTo(true, false, false, false); + } + } +} diff --git a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index 138cf015f..d5ba99f02 100644 --- a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -119,6 +119,7 @@ + diff --git a/src/NzbDrone.Core.Test/Qualities/QualityFixture.cs b/src/NzbDrone.Core.Test/Qualities/QualityFixture.cs index e011286c6..a9086a2bf 100644 --- a/src/NzbDrone.Core.Test/Qualities/QualityFixture.cs +++ b/src/NzbDrone.Core.Test/Qualities/QualityFixture.cs @@ -24,9 +24,9 @@ namespace NzbDrone.Core.Test.Qualities new object[] {8, Quality.WEBDL480p}, new object[] {9, Quality.HDTV1080p}, new object[] {10, Quality.RAWHD}, - new object[] {12, Quality.HDTV2160p}, - new object[] {13, Quality.WEBDL2160p}, - new object[] {14, Quality.Bluray2160p}, + new object[] {16, Quality.HDTV2160p}, + new object[] {18, Quality.WEBDL2160p}, + new object[] {19, Quality.Bluray2160p}, }; public static object[] ToIntCases = @@ -42,9 +42,9 @@ namespace NzbDrone.Core.Test.Qualities new object[] {Quality.WEBDL480p, 8}, new object[] {Quality.HDTV1080p, 9}, new object[] {Quality.RAWHD, 10}, - new object[] {Quality.HDTV2160p, 12}, - new object[] {Quality.WEBDL2160p, 13}, - new object[] {Quality.Bluray2160p, 14}, + new object[] {Quality.HDTV2160p, 16}, + new object[] {Quality.WEBDL2160p, 18}, + new object[] {Quality.Bluray2160p, 19}, }; [Test, TestCaseSource("FromIntCases")] diff --git a/src/NzbDrone.Core/Datastore/Migration/101_add_ultrahd_quality_in_profiles.cs b/src/NzbDrone.Core/Datastore/Migration/101_add_ultrahd_quality_in_profiles.cs new file mode 100644 index 000000000..c22e117f4 --- /dev/null +++ b/src/NzbDrone.Core/Datastore/Migration/101_add_ultrahd_quality_in_profiles.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using System.Data; +using System.Linq; +using FluentMigrator; +using NzbDrone.Common.Serializer; +using NzbDrone.Core.Datastore.Migration.Framework; + +namespace NzbDrone.Core.Datastore.Migration +{ + [Migration(101)] + public class add_ultrahd_quality_in_profiles : NzbDroneMigrationBase + { + protected override void MainDbUpgrade() + { + Execute.WithConnection(ConvertProfile); + } + + private void ConvertProfile(IDbConnection conn, IDbTransaction tran) + { + var updater = new ProfileUpdater70(conn, tran); + updater.AppendQuality(16); // HDTV2160p + updater.AppendQuality(18); // WEBDL2160p + updater.AppendQuality(19); // Bluray2160p + updater.Commit(); + + // WEBRip migrations. + //updater.SplitQualityAppend(1, 11); // HDTV480p after SDTV + //updater.SplitQualityPrepend(8, 12); // WEBRip480p before WEBDL480p + //updater.SplitQualityAppend(2, 13); // Bluray480p after DVD + //updater.SplitQualityPrepend(5, 14); // WEBRip720p before WEBDL720p + //updater.SplitQualityPrepend(3, 15); // WEBRip1080p before WEBDL1080p + //updater.SplitQualityPrepend(18, 17); // WEBRip2160p before WEBDL2160p + } + } +} diff --git a/src/NzbDrone.Core/NzbDrone.Core.csproj b/src/NzbDrone.Core/NzbDrone.Core.csproj index 11879b123..4a0eb35b5 100644 --- a/src/NzbDrone.Core/NzbDrone.Core.csproj +++ b/src/NzbDrone.Core/NzbDrone.Core.csproj @@ -251,6 +251,7 @@ + diff --git a/src/NzbDrone.Core/Profiles/ProfileService.cs b/src/NzbDrone.Core/Profiles/ProfileService.cs index d85faf713..89c569ff1 100644 --- a/src/NzbDrone.Core/Profiles/ProfileService.cs +++ b/src/NzbDrone.Core/Profiles/ProfileService.cs @@ -94,8 +94,7 @@ namespace NzbDrone.Core.Profiles Quality.WEBDL720p, Quality.WEBDL1080p, Quality.Bluray720p, - Quality.Bluray1080p, - Quality.WEBDL2160p); + Quality.Bluray1080p); AddDefaultProfile("SD", Quality.SDTV, Quality.SDTV, @@ -112,21 +111,18 @@ namespace NzbDrone.Core.Profiles Quality.WEBDL1080p, Quality.Bluray1080p); - AddDefaultProfile("HD-2160p", Quality.HDTV2160p, + AddDefaultProfile("Ultra-HD", Quality.HDTV2160p, Quality.HDTV2160p, Quality.WEBDL2160p, Quality.Bluray2160p); - AddDefaultProfile("HD - All", Quality.HDTV720p, + AddDefaultProfile("HD - 720p/1080p", Quality.HDTV720p, Quality.HDTV720p, Quality.HDTV1080p, - Quality.HDTV2160p, Quality.WEBDL720p, Quality.WEBDL1080p, - Quality.WEBDL2160p, Quality.Bluray720p, - Quality.Bluray1080p, - Quality.Bluray2160p); + Quality.Bluray1080p); } } } \ No newline at end of file diff --git a/src/NzbDrone.Core/Qualities/Quality.cs b/src/NzbDrone.Core/Qualities/Quality.cs index 0e0655978..b4d6d6e97 100644 --- a/src/NzbDrone.Core/Qualities/Quality.cs +++ b/src/NzbDrone.Core/Qualities/Quality.cs @@ -67,10 +67,15 @@ namespace NzbDrone.Core.Qualities public static Quality HDTV1080p { get { return new Quality(9, "HDTV-1080p"); } } public static Quality RAWHD { get { return new Quality(10, "Raw-HD"); } } //public static Quality HDTV480p { get { return new Quality(11, "HDTV-480p"); } } - public static Quality HDTV2160p { get { return new Quality(12, "HDTV-2160p"); } } - public static Quality WEBDL2160p { get { return new Quality(13, "WEBDL-2160p"); } } - public static Quality Bluray2160p { get { return new Quality(14, "Bluray-2160p"); } } - + //public static Quality WEBRip480p { get { return new Quality(12, "WEBRip-480p"); } } + //public static Quality Bluray480p { get { return new Quality(13, "Bluray-480p"); } } + //public static Quality WEBRip720p { get { return new Quality(14, "WEBRip-720p"); } } + //public static Quality WEBRip1080p { get { return new Quality(15, "WEBRip-1080p"); } } + public static Quality HDTV2160p { get { return new Quality(16, "HDTV-2160p"); } } + //public static Quality WEBRip2160p { get { return new Quality(17, "WEBRip-1080p"); } } + public static Quality WEBDL2160p { get { return new Quality(18, "WEBDL-2160p"); } } + public static Quality Bluray2160p { get { return new Quality(19, "Bluray-2160p"); } } + public static List All { get @@ -112,9 +117,9 @@ namespace NzbDrone.Core.Qualities new QualityDefinition(Quality.Bluray720p) { Weight = 9, MinSize = 0, MaxSize = 100 }, new QualityDefinition(Quality.WEBDL1080p) { Weight = 10, MinSize = 0, MaxSize = 100 }, new QualityDefinition(Quality.Bluray1080p) { Weight = 11, MinSize = 0, MaxSize = 100 }, - new QualityDefinition(Quality.HDTV2160p) { Weight = 12, MinSize = 0, MaxSize = 100 }, - new QualityDefinition(Quality.WEBDL2160p) { Weight = 13, MinSize = 0, MaxSize = 100 }, - new QualityDefinition(Quality.Bluray2160p) { Weight = 14, MinSize = 0, MaxSize = 100 }, + new QualityDefinition(Quality.HDTV2160p) { Weight = 12, MinSize = 0, MaxSize = null }, + new QualityDefinition(Quality.WEBDL2160p) { Weight = 13, MinSize = 0, MaxSize = null }, + new QualityDefinition(Quality.Bluray2160p) { Weight = 14, MinSize = 0, MaxSize = null }, }; } }