diff --git a/frontend/src/System/Status/About/About.js b/frontend/src/System/Status/About/About.js
index 4314aa880..775b3ea5b 100644
--- a/frontend/src/System/Status/About/About.js
+++ b/frontend/src/System/Status/About/About.js
@@ -23,6 +23,8 @@ class About extends Component {
isDocker,
runtimeVersion,
migrationVersion,
+ databaseVersion,
+ databaseType,
appData,
startupPath,
mode,
@@ -68,6 +70,11 @@ class About extends Component {
data={migrationVersion}
/>
+
+
[^&=;]+?))+(?= |;|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"/fetch/[a-z0-9]{32}/(?[a-z0-9]{32})", RegexOptions.Compiled),
new Regex(@"getnzb.*?(?<=\?|&)(r)=(?[^&=]+?)(?= |&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
+ new Regex(@"(?<=[?& ;])[^=]*?(_?(?[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Trackers Announce Keys; Designed for Qbit Json; should work for all in theory
new Regex(@"announce(\.php)?(/|%2f|%3fpasskey%3d)(?[a-z0-9]{16,})|(?[a-z0-9]{16,})(/|%2f)announce"),
diff --git a/src/NzbDrone.Core.Test/Datastore/DatabaseFixture.cs b/src/NzbDrone.Core.Test/Datastore/DatabaseFixture.cs
index 8735845d6..2769e8e7b 100644
--- a/src/NzbDrone.Core.Test/Datastore/DatabaseFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/DatabaseFixture.cs
@@ -15,7 +15,7 @@ public class DatabaseFixture : DbTest
public void SingleOrDefault_should_return_null_on_empty_db()
{
Mocker.Resolve()
- .OpenConnection().Query("SELECT * FROM Movies")
+ .OpenConnection().Query("SELECT * FROM \"Movies\"")
.SingleOrDefault()
.Should()
.BeNull();
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/147_custom_formatsFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/147_custom_formatsFixture.cs
index 1ebf69101..bff868068 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/147_custom_formatsFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/147_custom_formatsFixture.cs
@@ -135,9 +135,9 @@ private void ShouldHaveAddedDefaultFormat(IDirectDataMapper db)
private List QueryItems(IDirectDataMapper db)
{
- var test = db.Query("SELECT * FROM Profiles");
+ var test = db.Query("SELECT * FROM \"Profiles\"");
- var items = db.Query("SELECT FormatItems, FormatCutoff FROM Profiles");
+ var items = db.Query("SELECT \"FormatItems\", \"FormatCutoff\" FROM \"Profiles\"");
return items.Select(i =>
{
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/149_regex_required_tagsFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/149_regex_required_tagsFixture.cs
index e4765319b..55af2587e 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/149_regex_required_tagsFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/149_regex_required_tagsFixture.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
using FluentAssertions;
using Newtonsoft.Json;
@@ -77,7 +77,7 @@ public void should_correctly_convert_multiple_formats()
private List QueryItems(IDirectDataMapper db)
{
- var items = db.Query("SELECT Name, FormatTags FROM CustomFormats");
+ var items = db.Query("SELECT \"Name\", \"FormatTags\" FROM \"CustomFormats\"");
return items.Select(i =>
{
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/150_fix_format_tags_double_underscoreFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/150_fix_format_tags_double_underscoreFixture.cs
index 7afde6ef0..21e7818a5 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/150_fix_format_tags_double_underscoreFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/150_fix_format_tags_double_underscoreFixture.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
using FluentAssertions;
using Newtonsoft.Json;
@@ -40,7 +40,7 @@ public void should_correctly_convert_format_tag(string original, string converte
private List QueryItems(IDirectDataMapper db)
{
- var items = db.Query("SELECT Name, FormatTags FROM CustomFormats");
+ var items = db.Query("SELECT \"Name\", \"FormatTags\" FROM \"CustomFormats\"");
return items.Select(i =>
{
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/154_add_language_to_files_history_blacklistFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/154_add_language_to_files_history_blacklistFixture.cs
index 0f4a94cc3..417e8d840 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/154_add_language_to_files_history_blacklistFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/154_add_language_to_files_history_blacklistFixture.cs
@@ -32,8 +32,8 @@ private void AddDefaultProfile(add_language_to_files_history_blacklist m, string
Monitored = true,
Title = "My Movie",
CleanTitle = "mytitle",
- Status = MovieStatusType.Announced,
- MinimumAvailability = MovieStatusType.Announced,
+ Status = (int)MovieStatusType.Announced,
+ MinimumAvailability = (int)MovieStatusType.Announced,
Images = new[] { new { CoverType = "Poster" } }.ToJson(),
HasPreDBEntry = false,
PathState = 1,
@@ -112,7 +112,7 @@ public void should_add_languages_from_media_info_if_available()
AddMovieFile(c, "My.Movie.2018.German.BluRay-Radarr", "Japanese");
});
- var items = db.Query("SELECT Id, Languages FROM MovieFiles");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"MovieFiles\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(1);
@@ -130,7 +130,7 @@ public void should_add_languages_from_media_info_with_multiple_language()
AddMovieFile(c, "My.Movie.2018.German.BluRay-Radarr", "Japanese / French");
});
- var items = db.Query("SELECT Id, Languages FROM MovieFiles");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"MovieFiles\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(2);
@@ -149,7 +149,7 @@ public void should_fallback_to_scenename_if_no_mediainfo_languages()
AddMovieFile(c, "My.Movie.2018.German.BluRay-Radarr", "");
});
- var items = db.Query("SELECT Id, Languages FROM MovieFiles");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"MovieFiles\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(1);
@@ -166,7 +166,7 @@ public void should_fallback_to_scenename_if_mediainfo_language_invalid()
AddMovieFile(c, "My.Movie.2018.German.BluRay-Radarr", "English (USA)");
});
- var items = db.Query("SELECT Id, Languages FROM MovieFiles");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"MovieFiles\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(1);
@@ -184,7 +184,7 @@ public void should_fallback_to_profile_if_no_mediainfo_no_scene_name()
AddMovieFile(c, "", "");
});
- var items = db.Query("SELECT Id, Languages FROM MovieFiles");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"MovieFiles\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(1);
@@ -201,7 +201,7 @@ public void should_handle_if_null_mediainfo_and_null_scenename()
AddMovieFile(c, null, null);
});
- var items = db.Query("SELECT Id, Languages FROM MovieFiles");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"MovieFiles\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(1);
@@ -218,7 +218,7 @@ public void should_fallback_to_profile_if_unknown_language_from_scene_name()
AddMovieFile(c, "My.Movie.2018.BluRay-Radarr", "");
});
- var items = db.Query("SELECT Id, Languages FROM MovieFiles");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"MovieFiles\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(1);
@@ -235,7 +235,7 @@ public void should_use_english_if_fallback_to_profile_and_profile_is_any()
AddMovieFile(c, "", "");
});
- var items = db.Query("SELECT Id, Languages FROM MovieFiles");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"MovieFiles\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(1);
@@ -253,7 +253,7 @@ public void should_assign_history_languages_from_sourceTitle()
AddHistory(c, "My.Movie.2018.Italian.BluRay-Radarr");
});
- var items = db.Query("SELECT Id, Languages FROM History");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"History\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(1);
@@ -270,7 +270,7 @@ public void should_assign_history_languages_from_profile_if_no_sourceTitle()
AddHistory(c, "");
});
- var items = db.Query("SELECT Id, Languages FROM History");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"History\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(1);
@@ -287,7 +287,7 @@ public void should_assign_history_languages_from_profile_if_unknown_sourceTitle(
AddHistory(c, "Man on Fire");
});
- var items = db.Query("SELECT Id, Languages FROM History");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"History\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(1);
@@ -305,7 +305,7 @@ public void should_assign_history_languages_from_moviefile_release_mapping_with_
AddHistory(c, "My.Movie.2018.Italian.BluRay-Radarr");
});
- var items = db.Query("SELECT Id, Languages FROM History");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"History\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(3);
@@ -324,7 +324,7 @@ public void should_assign_blacklist_languages_from_sourceTitle()
AddBlacklist(c, "My.Movie.2018.Italian.BluRay-Radarr");
});
- var items = db.Query("SELECT Id, Languages FROM Blacklist");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"Blacklist\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(1);
@@ -341,7 +341,7 @@ public void should_assign_blacklist_languages_from_profile_if_no_sourceTitle()
AddBlacklist(c, "");
});
- var items = db.Query("SELECT Id, Languages FROM Blacklist");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"Blacklist\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(1);
@@ -358,7 +358,7 @@ public void should_assign_blacklist_languages_from_profile_if_unknown_sourceTitl
AddBlacklist(c, "Man on Fire");
});
- var items = db.Query("SELECT Id, Languages FROM Blacklist");
+ var items = db.Query("SELECT \"Id\", \"Languages\" FROM \"Blacklist\"");
items.Should().HaveCount(1);
items.First().Languages.Count.Should().Be(1);
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/156_add_download_client_priorityFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/156_add_download_client_priorityFixture.cs
index 7f6c05671..276d03586 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/156_add_download_client_priorityFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/156_add_download_client_priorityFixture.cs
@@ -1,4 +1,4 @@
-using System.Linq;
+using System.Linq;
using FluentAssertions;
using Newtonsoft.Json.Linq;
using NUnit.Framework;
@@ -18,7 +18,7 @@ public void should_set_prio_to_one()
{
c.Insert.IntoTable("DownloadClients").Row(new
{
- Enable = 1,
+ Enable = true,
Name = "Deluge",
Implementation = "Deluge",
Settings = new DelugeSettings156
@@ -31,7 +31,7 @@ public void should_set_prio_to_one()
});
});
- var items = db.Query("SELECT * FROM DownloadClients");
+ var items = db.Query("SELECT * FROM \"DownloadClients\"");
items.Should().HaveCount(1);
items.First().Priority.Should().Be(1);
@@ -44,7 +44,7 @@ public void should_renumber_prio_for_enabled_clients()
{
c.Insert.IntoTable("DownloadClients").Row(new
{
- Enable = 1,
+ Enable = true,
Name = "Deluge",
Implementation = "Deluge",
Settings = new DelugeSettings156
@@ -56,7 +56,7 @@ public void should_renumber_prio_for_enabled_clients()
ConfigContract = "DelugeSettings"
}).Row(new
{
- Enable = 1,
+ Enable = true,
Name = "Deluge2",
Implementation = "Deluge",
Settings = new DelugeSettings156
@@ -68,7 +68,7 @@ public void should_renumber_prio_for_enabled_clients()
ConfigContract = "DelugeSettings"
}).Row(new
{
- Enable = 1,
+ Enable = true,
Name = "sab",
Implementation = "Sabnzbd",
Settings = new SabnzbdSettings156
@@ -80,7 +80,7 @@ public void should_renumber_prio_for_enabled_clients()
});
});
- var items = db.Query("SELECT * FROM DownloadClients");
+ var items = db.Query("SELECT * FROM \"DownloadClients\"");
items.Should().HaveCount(3);
items[0].Priority.Should().Be(1);
@@ -95,7 +95,7 @@ public void should_not_renumber_prio_for_disabled_clients()
{
c.Insert.IntoTable("DownloadClients").Row(new
{
- Enable = 0,
+ Enable = false,
Name = "Deluge",
Implementation = "Deluge",
Settings = new DelugeSettings156
@@ -107,7 +107,7 @@ public void should_not_renumber_prio_for_disabled_clients()
ConfigContract = "DelugeSettings"
}).Row(new
{
- Enable = 0,
+ Enable = false,
Name = "Deluge2",
Implementation = "Deluge",
Settings = new DelugeSettings156
@@ -119,7 +119,7 @@ public void should_not_renumber_prio_for_disabled_clients()
ConfigContract = "DelugeSettings"
}).Row(new
{
- Enable = 0,
+ Enable = false,
Name = "sab",
Implementation = "Sabnzbd",
Settings = new SabnzbdSettings156
@@ -131,7 +131,7 @@ public void should_not_renumber_prio_for_disabled_clients()
});
});
- var items = db.Query("SELECT * FROM DownloadClients");
+ var items = db.Query("SELECT * FROM \"DownloadClients\"");
items.Should().HaveCount(3);
items[0].Priority.Should().Be(1);
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/159_add_webrip_qualitiesFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/159_add_webrip_qualitiesFixture.cs
index 43bc3b2b0..92d04e225 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/159_add_webrip_qualitiesFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/159_add_webrip_qualitiesFixture.cs
@@ -1,4 +1,4 @@
-using System.Linq;
+using System.Linq;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Datastore.Migration;
@@ -34,7 +34,7 @@ public void should_add_webrip_qualities_and_group_with_webdl()
});
});
- var profiles = db.Query("SELECT Items FROM Profiles LIMIT 1");
+ var profiles = db.Query("SELECT \"Items\" FROM \"Profiles\" LIMIT 1");
var items = profiles.First().Items;
items.Should().HaveCount(5);
@@ -57,7 +57,7 @@ public void should_add_webrip_and_webdl_if_webdl_is_missing()
});
});
- var profiles = db.Query("SELECT Items FROM Profiles LIMIT 1");
+ var profiles = db.Query("SELECT \"Items\" FROM \"Profiles\" LIMIT 1");
var items = profiles.First().Items;
items.Should().HaveCount(5);
@@ -80,7 +80,7 @@ public void should_add_webrip_beside_webdl_is_grouped()
});
});
- var profiles = db.Query("SELECT Items FROM Profiles LIMIT 1");
+ var profiles = db.Query("SELECT \"Items\" FROM \"Profiles\" LIMIT 1");
var items = profiles.First().Items;
items.Count(c => c.Id == 1001).Should().Be(1);
@@ -104,7 +104,7 @@ public void should_group_webrip_and_webdl_with_the_same_resolution()
});
});
- var profiles = db.Query("SELECT Items FROM Profiles LIMIT 1");
+ var profiles = db.Query("SELECT \"Items\" FROM \"Profiles\" LIMIT 1");
var items = profiles.First().Items;
items[1].Items.First().Quality.Should().Be((int)Quality.WEBRip480p);
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/165_remove_custom_formats_from_quality_model.cs b/src/NzbDrone.Core.Test/Datastore/Migration/165_remove_custom_formats_from_quality_model.cs
index 88d9eb7de..ca919f573 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/165_remove_custom_formats_from_quality_model.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/165_remove_custom_formats_from_quality_model.cs
@@ -81,14 +81,14 @@ public void should_remove_custom_format_from_pending_releases()
""imdbId"": """"
}",
Release = "{}",
- Reason = PendingReleaseReason.Delay
+ Reason = (int)PendingReleaseReason.Delay
});
});
- var json = db.Query("SELECT ParsedMovieInfo FROM PendingReleases").First();
+ var json = db.Query("SELECT \"ParsedMovieInfo\" FROM \"PendingReleases\"").First();
json.Should().NotContain("customFormats");
- var pending = db.Query("SELECT ParsedMovieInfo FROM PendingReleases").First();
+ var pending = db.Query("SELECT \"ParsedMovieInfo\" FROM \"PendingReleases\"").First();
pending.Quality.Quality.Should().Be(Quality.Bluray1080p);
pending.Languages.Should().BeEmpty();
}
@@ -129,15 +129,15 @@ public void should_fix_quality_for_pending_releases()
""imdbId"": """"
}",
Release = "{}",
- Reason = PendingReleaseReason.Delay
+ Reason = (int)PendingReleaseReason.Delay
});
});
- var json = db.Query("SELECT ParsedMovieInfo FROM PendingReleases").First();
+ var json = db.Query("SELECT \"ParsedMovieInfo\" FROM \"PendingReleases\"").First();
json.Should().NotContain("customFormats");
json.Should().NotContain("resolution");
- var pending = db.Query("SELECT ParsedMovieInfo FROM PendingReleases").First();
+ var pending = db.Query("SELECT \"ParsedMovieInfo\" FROM \"PendingReleases\"").First();
pending.Quality.Quality.Should().Be(Quality.Bluray1080p);
pending.Languages.Should().BeEquivalentTo(new List { Language.English });
}
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/168_custom_format_rework.cs b/src/NzbDrone.Core.Test/Datastore/Migration/168_custom_format_rework.cs
index 4b25145a3..4914764f1 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/168_custom_format_rework.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/168_custom_format_rework.cs
@@ -80,7 +80,7 @@ public void should_convert_custom_format_row_with_one_spec()
});
});
- var json = db.Query("SELECT Specifications FROM CustomFormats").First();
+ var json = db.Query("SELECT \"Specifications\" FROM \"CustomFormats\"").First();
ValidateFormatTag(json, "ReleaseTitleSpecification", false, false);
json.Should().Contain($"\"name\": \"Test\"");
@@ -99,7 +99,7 @@ public void should_convert_custom_format_row_with_two_specs()
});
});
- var json = db.Query("SELECT Specifications FROM CustomFormats").First();
+ var json = db.Query("SELECT \"Specifications\" FROM \"CustomFormats\"").First();
ValidateFormatTag(json, "ReleaseTitleSpecification", false, false);
ValidateFormatTag(json, "EditionSpecification", false, false);
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/170_fix_trakt_list_configFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/170_fix_trakt_list_configFixture.cs
index 74f58043e..2ef5dad44 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/170_fix_trakt_list_configFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/170_fix_trakt_list_configFixture.cs
@@ -19,12 +19,12 @@ public void should_change_implementation_contract_on_radarr_lists()
{
c.Insert.IntoTable("NetImport").Row(new
{
- Enabled = 1,
- EnableAuto = 1,
+ Enabled = true,
+ EnableAuto = true,
RootFolderPath = "D:\\Movies",
ProfileId = 1,
MinimumAvailability = 1,
- ShouldMonitor = 1,
+ ShouldMonitor = true,
Name = "IMDB List",
Implementation = "RadarrLists",
Settings = new RadarrListSettings169
@@ -36,7 +36,7 @@ public void should_change_implementation_contract_on_radarr_lists()
});
});
- var items = db.Query("SELECT * FROM NetImport");
+ var items = db.Query("SELECT * FROM \"NetImport\"");
items.Should().HaveCount(1);
items.First().Implementation.Should().Be("RadarrListImport");
@@ -52,12 +52,12 @@ public void should_change_implementation_contract_type_on_trakt_user()
{
c.Insert.IntoTable("NetImport").Row(new
{
- Enabled = 1,
- EnableAuto = 1,
+ Enabled = true,
+ EnableAuto = true,
RootFolderPath = "D:\\Movies",
ProfileId = 1,
MinimumAvailability = 1,
- ShouldMonitor = 1,
+ ShouldMonitor = true,
Name = "TraktImport",
Implementation = "TraktImport",
Settings = new TraktSettings169
@@ -72,7 +72,7 @@ public void should_change_implementation_contract_type_on_trakt_user()
});
});
- var items = db.Query("SELECT * FROM NetImport");
+ var items = db.Query("SELECT * FROM \"NetImport\"");
items.Should().HaveCount(1);
items.First().Implementation.Should().Be("TraktUserImport");
@@ -90,12 +90,12 @@ public void should_change_implementation_contract_type_on_trakt_popular()
{
c.Insert.IntoTable("NetImport").Row(new
{
- Enabled = 1,
- EnableAuto = 1,
+ Enabled = true,
+ EnableAuto = true,
RootFolderPath = "D:\\Movies",
ProfileId = 1,
MinimumAvailability = 1,
- ShouldMonitor = 1,
+ ShouldMonitor = true,
Name = "TraktImport",
Implementation = "TraktImport",
Settings = new TraktSettings169
@@ -110,7 +110,7 @@ public void should_change_implementation_contract_type_on_trakt_popular()
});
});
- var items = db.Query("SELECT * FROM NetImport");
+ var items = db.Query("SELECT * FROM \"NetImport\"");
items.Should().HaveCount(1);
items.First().Implementation.Should().Be("TraktPopularImport");
@@ -128,12 +128,12 @@ public void should_change_implementation_contract_type_on_trakt_list()
{
c.Insert.IntoTable("NetImport").Row(new
{
- Enabled = 1,
- EnableAuto = 1,
+ Enabled = true,
+ EnableAuto = true,
RootFolderPath = "D:\\Movies",
ProfileId = 1,
MinimumAvailability = 1,
- ShouldMonitor = 1,
+ ShouldMonitor = true,
Name = "TraktImport",
Implementation = "TraktImport",
Settings = new TraktSettings169
@@ -149,7 +149,7 @@ public void should_change_implementation_contract_type_on_trakt_list()
});
});
- var items = db.Query("SELECT * FROM NetImport");
+ var items = db.Query("SELECT * FROM \"NetImport\"");
items.Should().HaveCount(1);
items.First().Implementation.Should().Be("TraktListImport");
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/174_email_multiple_addressesFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/174_email_multiple_addressesFixture.cs
index 2d240134d..82e014dd5 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/174_email_multiple_addressesFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/174_email_multiple_addressesFixture.cs
@@ -37,7 +37,7 @@ public void should_convert_to_list_on_email_lists()
});
});
- var items = db.Query("SELECT * FROM Notifications");
+ var items = db.Query("SELECT * FROM \"Notifications\"");
items.Should().HaveCount(1);
items.First().Implementation.Should().Be("Email");
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/178_new_list_serverFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/178_new_list_serverFixture.cs
index cf71ed09f..406ce1d2d 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/178_new_list_serverFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/178_new_list_serverFixture.cs
@@ -96,7 +96,7 @@ public void should_switch_some_radarr_to_imdb(string url)
}
});
- var items = db.Query("SELECT * FROM NetImport");
+ var items = db.Query("SELECT * FROM \"NetImport\"");
items.Should().HaveCount(7);
@@ -157,7 +157,7 @@ public void should_switch_some_stevenlu_stevenlu2()
}
});
- var items = db.Query("SELECT * FROM NetImport");
+ var items = db.Query("SELECT * FROM \"NetImport\"");
items.Should().HaveCount(5);
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/180_fix_invalid_profile_referencesFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/180_fix_invalid_profile_referencesFixture.cs
index ee6218366..8b1eca13d 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/180_fix_invalid_profile_referencesFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/180_fix_invalid_profile_referencesFixture.cs
@@ -36,7 +36,7 @@ private void AddDefaultProfile(fix_invalid_profile_references m, string name, in
Items = items.ToJson(),
Language = (int)Language.English,
MinFormatScore = 0,
- CutOffFormatScore = 0
+ CutoffFormatScore = 0
};
m.Insert.IntoTable("Profiles").Row(profile);
@@ -50,8 +50,8 @@ private void AddMovie(fix_invalid_profile_references m, string movieTitle, int t
Monitored = true,
Title = movieTitle,
CleanTitle = movieTitle,
- Status = MovieStatusType.Announced,
- MinimumAvailability = MovieStatusType.Announced,
+ Status = (int)MovieStatusType.Announced,
+ MinimumAvailability = (int)MovieStatusType.Announced,
Images = new[] { new { CoverType = "Poster" } }.ToJson(),
Recommendations = new[] { 1 }.ToJson(),
HasPreDBEntry = false,
@@ -89,8 +89,8 @@ public void should_add_default_profiles_if_none_exist_but_movies_exist()
AddMovie(c, "movie", 123456, profileId);
});
- var items = db.Query("SELECT Id, ProfileId FROM Movies");
- var profiles = db.Query("SELECT Id FROM Profiles");
+ var items = db.Query("SELECT \"Id\", \"ProfileId\" FROM \"Movies\"");
+ var profiles = db.Query("SELECT \"Id\" FROM \"Profiles\"");
items.Should().HaveCount(1);
profiles.Should().HaveCount(6);
@@ -108,8 +108,8 @@ public void should_not_add_default_profiles_if_one_exist()
AddMovie(c, "movie", 123456, 17);
});
- var items = db.Query("SELECT Id, ProfileId FROM Movies");
- var profiles = db.Query("SELECT Id FROM Profiles");
+ var items = db.Query("SELECT \"Id\", \"ProfileId\" FROM \"Movies\"");
+ var profiles = db.Query("SELECT \"Id\" FROM \"Profiles\"");
items.Should().HaveCount(1);
profiles.Should().HaveCount(1);
@@ -128,8 +128,8 @@ public void should_add_custom_formats_to_default_profiles_if_some_exist()
AddMovie(c, "movie", 123456, profileId);
});
- var items = db.Query("SELECT Id, ProfileId FROM Movies");
- var profiles = db.Query("SELECT Id, FormatItems FROM Profiles");
+ var items = db.Query("SELECT \"Id\", \"ProfileId\" FROM \"Movies\"");
+ var profiles = db.Query("SELECT \"Id\", \"FormatItems\" FROM \"Profiles\"");
items.Should().HaveCount(1);
profiles.Should().HaveCount(6);
@@ -149,7 +149,7 @@ public void should_not_change_movies_with_valid_profile()
AddMovie(c, "movie", 123456, profileId);
});
- var items = db.Query("SELECT Id, ProfileId FROM Movies");
+ var items = db.Query("SELECT \"Id\", \"ProfileId\" FROM \"Movies\"");
items.Should().HaveCount(1);
items.First().ProfileId.Should().Be(profileId);
@@ -166,7 +166,7 @@ public void should_change_movies_with_bad_profile_id()
AddMovie(c, "movie", 123456, 1);
});
- var items = db.Query("SELECT Id, ProfileId FROM Movies");
+ var items = db.Query("SELECT \"Id\", \"ProfileId\" FROM \"Movies\"");
items.Should().HaveCount(1);
items.First().ProfileId.Should().Be(profileId);
@@ -193,7 +193,7 @@ public void should_change_to_most_common_valid_profile_in_library()
AddMovie(c, "movie9", 123459, otherProfileId);
});
- var items = db.Query("SELECT Id, ProfileId FROM Movies");
+ var items = db.Query("SELECT \"Id\", \"ProfileId\" FROM \"Movies\"");
items.Should().HaveCount(9);
items.Where(x => x.ProfileId == commonProfileId).Should().HaveCount(7);
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/186_fix_tmdb_duplicatesFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/186_fix_tmdb_duplicatesFixture.cs
index 9a4f1971b..5d7fc617d 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/186_fix_tmdb_duplicatesFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/186_fix_tmdb_duplicatesFixture.cs
@@ -20,8 +20,8 @@ private void AddMovie(fix_tmdb_duplicates m, int id, string movieTitle, string t
Monitored = true,
Title = movieTitle,
CleanTitle = movieTitle,
- Status = MovieStatusType.Announced,
- MinimumAvailability = MovieStatusType.Announced,
+ Status = (int)MovieStatusType.Announced,
+ MinimumAvailability = (int)MovieStatusType.Announced,
Images = new[] { new { CoverType = "Poster" } }.ToJson(),
Recommendations = new[] { 1 }.ToJson(),
HasPreDBEntry = false,
@@ -53,7 +53,7 @@ public void should_clean_duplicate_movies()
AddMovie(c, 4, "movie", "slug3", tmdbId, 0, dateAdded, dateAdded);
});
- var items = db.Query("SELECT Id, TmdbId, MovieFileId FROM Movies");
+ var items = db.Query("SELECT \"Id\", \"TmdbId\", \"MovieFileId\" FROM \"Movies\"");
items.Should().HaveCount(1);
}
@@ -73,7 +73,7 @@ public void should_not_clean_non_duplicate_movies()
AddMovie(c, 5, "movie2", "slug4", 123457, 0, dateAdded, dateAdded);
});
- var items = db.Query("SELECT Id, TmdbId, MovieFileId FROM Movies");
+ var items = db.Query("SELECT \"Id\", \"TmdbId\", \"MovieFileId\" FROM \"Movies\"");
items.Should().HaveCount(2);
items.Where(i => i.TmdbId == tmdbId).Should().HaveCount(1);
@@ -93,7 +93,7 @@ public void should_not_clean_any_if_no_duplicate_movies()
AddMovie(c, 5, "movie5", "slug4", 123457, 0, dateAdded, dateAdded);
});
- var items = db.Query("SELECT Id, TmdbId, MovieFileId FROM Movies");
+ var items = db.Query("SELECT \"Id\", \"TmdbId\", \"MovieFileId\" FROM \"Movies\"");
items.Should().HaveCount(5);
}
@@ -112,7 +112,7 @@ public void should_keep_movie_with_file_when_duplicates()
AddMovie(c, 4, "movie", "slug3", tmdbId, 0, dateAdded, dateAdded);
});
- var items = db.Query("SELECT Id, TmdbId, MovieFileId FROM Movies");
+ var items = db.Query("SELECT \"Id\", \"TmdbId\", \"MovieFileId\" FROM \"Movies\"");
items.Should().HaveCount(1);
items.First().Id.Should().Be(2);
@@ -132,7 +132,7 @@ public void should_keep_earliest_added_a_movie_with_file_when_duplicates_and_mul
AddMovie(c, 4, "movie", "slug3", tmdbId, 2, dateAdded, dateAdded);
});
- var items = db.Query("SELECT Id, TmdbId, MovieFileId FROM Movies");
+ var items = db.Query("SELECT \"Id\", \"TmdbId\", \"MovieFileId\" FROM \"Movies\"");
items.Should().HaveCount(1);
items.First().MovieFileId.Should().BeGreaterThan(0);
@@ -153,7 +153,7 @@ public void should_keep_a_movie_with_info_when_duplicates_and_no_file()
AddMovie(c, 4, "movie", "slug3", tmdbId, 0, null, dateAdded);
});
- var items = db.Query("SELECT Id, LastInfoSync, TmdbId, MovieFileId FROM Movies");
+ var items = db.Query("SELECT \"Id\", \"LastInfoSync\", \"TmdbId\", \"MovieFileId\" FROM \"Movies\"");
items.Should().HaveCount(1);
items.First().LastInfoSync.Should().NotBeNull();
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/188_mediainfo_channel_propertiesFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/188_mediainfo_channel_propertiesFixture.cs
index 14fa22164..204c9ab4f 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/188_mediainfo_channel_propertiesFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/188_mediainfo_channel_propertiesFixture.cs
@@ -67,7 +67,7 @@ public void should_change_property_names_for_audio_channels()
AddMovieFile(c, 1);
});
- var items = db.Query("SELECT MediaInfo FROM MovieFiles");
+ var items = db.Query("SELECT \"MediaInfo\" FROM \"MovieFiles\"");
items.Should().HaveCount(1);
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/200_cdh_per_downloadclientFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/200_cdh_per_downloadclientFixture.cs
index 438e26a93..ce3f8db7c 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/200_cdh_per_downloadclientFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/200_cdh_per_downloadclientFixture.cs
@@ -20,7 +20,7 @@ public void should_set_cdh_to_enabled()
{
c.Insert.IntoTable("DownloadClients").Row(new
{
- Enable = 1,
+ Enable = true,
Name = "Deluge",
Implementation = "Deluge",
Priority = 1,
@@ -34,7 +34,7 @@ public void should_set_cdh_to_enabled()
});
});
- var items = db.Query("SELECT * FROM DownloadClients");
+ var items = db.Query("SELECT * FROM \"DownloadClients\"");
items.Should().HaveCount(1);
items.First().RemoveCompletedDownloads.Should().BeFalse();
@@ -54,7 +54,7 @@ public void should_set_cdh_to_disabled_when_globally_disabled()
c.Insert.IntoTable("DownloadClients").Row(new
{
- Enable = 1,
+ Enable = true,
Name = "Deluge",
Implementation = "Deluge",
Priority = 1,
@@ -68,7 +68,7 @@ public void should_set_cdh_to_disabled_when_globally_disabled()
});
});
- var items = db.Query("SELECT * FROM DownloadClients");
+ var items = db.Query("SELECT * FROM \"DownloadClients\"");
items.Should().HaveCount(1);
items.First().RemoveCompletedDownloads.Should().BeTrue();
@@ -82,7 +82,7 @@ public void should_disable_remove_for_existing_rtorrent()
{
c.Insert.IntoTable("DownloadClients").Row(new
{
- Enable = 1,
+ Enable = true,
Name = "RTorrent",
Implementation = "RTorrent",
Priority = 1,
@@ -96,7 +96,7 @@ public void should_disable_remove_for_existing_rtorrent()
});
});
- var items = db.Query("SELECT * FROM DownloadClients");
+ var items = db.Query("SELECT * FROM \"DownloadClients\"");
items.Should().HaveCount(1);
items.First().RemoveCompletedDownloads.Should().BeFalse();
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/201_migrate_discord_from_slackFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/201_migrate_discord_from_slackFixture.cs
index 370618416..15e50d14f 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/201_migrate_discord_from_slackFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/201_migrate_discord_from_slackFixture.cs
@@ -58,7 +58,7 @@ public void should_replace_old_url()
});
});
- var items = db.Query("SELECT Id,ConfigContract,Implementation,Name,Settings FROM Notifications");
+ var items = db.Query("SELECT \"Id\",\"ConfigContract\",\"Implementation\",\"Name\",\"Settings\" FROM \"Notifications\"");
items.Should().HaveCount(1);
items.First().ConfigContract.Should().Be("DiscordSettings");
diff --git a/src/NzbDrone.Core.Test/Datastore/Migration/202_remove_predbFixture.cs b/src/NzbDrone.Core.Test/Datastore/Migration/202_remove_predbFixture.cs
index f6b1618db..ebc71465e 100644
--- a/src/NzbDrone.Core.Test/Datastore/Migration/202_remove_predbFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Migration/202_remove_predbFixture.cs
@@ -20,12 +20,12 @@ public void should_change_min_avail_from_predb_on_list()
{
c.Insert.IntoTable("ImportLists").Row(new
{
- Enabled = 1,
- EnableAuto = 1,
+ Enabled = true,
+ EnableAuto = true,
RootFolderPath = "D:\\Movies",
ProfileId = 1,
MinimumAvailability = 4,
- ShouldMonitor = 1,
+ ShouldMonitor = true,
Name = "IMDB List",
Implementation = "RadarrLists",
Settings = new RadarrListSettings169
@@ -37,7 +37,7 @@ public void should_change_min_avail_from_predb_on_list()
});
});
- var items = db.Query("SELECT Id, MinimumAvailability FROM ImportLists");
+ var items = db.Query("SELECT \"Id\", \"MinimumAvailability\" FROM \"ImportLists\"");
items.Should().HaveCount(1);
items.First().MinimumAvailability.Should().Be(3);
@@ -70,7 +70,7 @@ public void should_change_min_avail_from_predb_on_movie()
});
});
- var items = db.Query("SELECT Id, MinimumAvailability FROM Movies");
+ var items = db.Query("SELECT \"Id\", \"MinimumAvailability\" FROM \"Movies\"");
items.Should().HaveCount(1);
items.First().MinimumAvailability.Should().Be(3);
diff --git a/src/NzbDrone.Core.Test/Datastore/WhereBuilderFixture.cs b/src/NzbDrone.Core.Test/Datastore/WhereBuilderSqliteFixture.cs
similarity index 94%
rename from src/NzbDrone.Core.Test/Datastore/WhereBuilderFixture.cs
rename to src/NzbDrone.Core.Test/Datastore/WhereBuilderSqliteFixture.cs
index b1cccc8d5..30fe38306 100644
--- a/src/NzbDrone.Core.Test/Datastore/WhereBuilderFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/WhereBuilderSqliteFixture.cs
@@ -11,9 +11,9 @@
namespace NzbDrone.Core.Test.Datastore
{
[TestFixture]
- public class WhereBuilderFixture : CoreTest
+ public class WhereBuilderSqliteFixture : CoreTest
{
- private WhereBuilder _subject;
+ private WhereBuilderSqlite _subject;
[OneTimeSetUp]
public void MapTables()
@@ -22,9 +22,9 @@ public void MapTables()
Mocker.Resolve();
}
- private WhereBuilder Where(Expression> filter)
+ private WhereBuilderSqlite Where(Expression> filter)
{
- return new WhereBuilder(filter, true, 0);
+ return new WhereBuilderSqlite(filter, true, 0);
}
[Test]
@@ -71,7 +71,7 @@ public void where_equal_joined_property()
public void where_throws_without_concrete_condition_if_requiresConcreteCondition()
{
Expression> filter = (x, y) => x.Id == y.Id;
- _subject = new WhereBuilder(filter, true, 0);
+ _subject = new WhereBuilderSqlite(filter, true, 0);
Assert.Throws(() => _subject.ToString());
}
@@ -79,7 +79,7 @@ public void where_throws_without_concrete_condition_if_requiresConcreteCondition
public void where_allows_abstract_condition_if_not_requiresConcreteCondition()
{
Expression> filter = (x, y) => x.Id == y.Id;
- _subject = new WhereBuilder(filter, false, 0);
+ _subject = new WhereBuilderSqlite(filter, false, 0);
_subject.ToString().Should().Be($"(\"Movies\".\"Id\" = \"Movies\".\"Id\")");
}
diff --git a/src/NzbDrone.Core.Test/Housekeeping/Housekeepers/CleanupUnusedTagsFixture.cs b/src/NzbDrone.Core.Test/Housekeeping/Housekeepers/CleanupUnusedTagsFixture.cs
index d32e16e63..3fb5376e4 100644
--- a/src/NzbDrone.Core.Test/Housekeeping/Housekeepers/CleanupUnusedTagsFixture.cs
+++ b/src/NzbDrone.Core.Test/Housekeeping/Housekeepers/CleanupUnusedTagsFixture.cs
@@ -1,4 +1,4 @@
-using FizzWare.NBuilder;
+using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Housekeeping.Housekeepers;
diff --git a/src/NzbDrone.Core.Test/Housekeeping/Housekeepers/FixFutureRunScheduledTasksFixture.cs b/src/NzbDrone.Core.Test/Housekeeping/Housekeepers/FixFutureRunScheduledTasksFixture.cs
index 68e4c87e6..ce7df27b7 100644
--- a/src/NzbDrone.Core.Test/Housekeeping/Housekeepers/FixFutureRunScheduledTasksFixture.cs
+++ b/src/NzbDrone.Core.Test/Housekeeping/Housekeepers/FixFutureRunScheduledTasksFixture.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
@@ -41,7 +41,8 @@ public void should_not_change_last_execution_time_when_its_in_the_past()
Subject.Clean();
- AllStoredModels.ToList().ForEach(t => t.LastExecution.Should().Be(expectedTime));
+ // BeCloseTo handles Postgres rounding times
+ AllStoredModels.ToList().ForEach(t => t.LastExecution.Should().BeCloseTo(expectedTime));
}
}
}
diff --git a/src/NzbDrone.Core/Backup/BackupService.cs b/src/NzbDrone.Core/Backup/BackupService.cs
index 89f3d24ab..da720df88 100644
--- a/src/NzbDrone.Core/Backup/BackupService.cs
+++ b/src/NzbDrone.Core/Backup/BackupService.cs
@@ -190,9 +190,12 @@ private void Cleanup()
private void BackupDatabase()
{
- _logger.ProgressDebug("Backing up database");
+ if (_maindDb.DatabaseType == DatabaseType.SQLite)
+ {
+ _logger.ProgressDebug("Backing up database");
- _makeDatabaseBackup.BackupDatabase(_maindDb, _backupTempFolder);
+ _makeDatabaseBackup.BackupDatabase(_maindDb, _backupTempFolder);
+ }
}
private void BackupConfigFile()
diff --git a/src/NzbDrone.Core/Blocklisting/BlocklistRepository.cs b/src/NzbDrone.Core/Blocklisting/BlocklistRepository.cs
index 3cfc921b4..5dfc96c6e 100644
--- a/src/NzbDrone.Core/Blocklisting/BlocklistRepository.cs
+++ b/src/NzbDrone.Core/Blocklisting/BlocklistRepository.cs
@@ -40,7 +40,7 @@ public void DeleteForMovies(List movieIds)
Delete(x => movieIds.Contains(x.MovieId));
}
- protected override SqlBuilder PagedBuilder() => new SqlBuilder().Join((b, m) => b.MovieId == m.Id);
+ protected override SqlBuilder PagedBuilder() => new SqlBuilder(_database.DatabaseType).Join((b, m) => b.MovieId == m.Id);
protected override IEnumerable PagedQuery(SqlBuilder sql) => _database.QueryJoined(sql, (bl, movie) =>
{
bl.Movie = movie;
diff --git a/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs b/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs
index d0253aaed..1047edc46 100644
--- a/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs
+++ b/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs
@@ -19,7 +19,7 @@
namespace NzbDrone.Core.Configuration
{
public interface IConfigFileProvider : IHandleAsync,
- IExecute
+ IExecute
{
XDocument LoadConfigFile();
Dictionary GetConfigDictionary();
@@ -48,6 +48,12 @@ public interface IConfigFileProvider : IHandleAsync,
string UpdateScriptPath { get; }
string SyslogServer { get; }
int SyslogPort { get; }
+ string PostgresHost { get; }
+ int PostgresPort { get; }
+ string PostgresUser { get; }
+ string PostgresPassword { get; }
+ string PostgresMainDb { get; }
+ string PostgresLogDb { get; }
}
public class ConfigFileProvider : IConfigFileProvider
@@ -184,6 +190,12 @@ public AuthenticationType AuthenticationMethod
public string LogLevel => GetValue("LogLevel", "info").ToLowerInvariant();
public string ConsoleLogLevel => GetValue("ConsoleLogLevel", string.Empty, persist: false);
+ public string PostgresHost => GetValue("PostgresHost", string.Empty, persist: false);
+ public string PostgresUser => GetValue("PostgresUser", string.Empty, persist: false);
+ public string PostgresPassword => GetValue("PostgresPassword", string.Empty, persist: false);
+ public string PostgresMainDb => GetValue("PostgresMainDb", "radarr-main", persist: false);
+ public string PostgresLogDb => GetValue("PostgresLogDb", "radarr-log", persist: false);
+ public int PostgresPort => GetValueInt("PostgresPort", 5432, persist: false);
public bool LogSql => GetValueBoolean("LogSql", false, persist: false);
public int LogRotate => GetValueInt("LogRotate", 50, persist: false);
public bool FilterSentryEvents => GetValueBoolean("FilterSentryEvents", true, persist: false);
diff --git a/src/NzbDrone.Core/Datastore/BasicRepository.cs b/src/NzbDrone.Core/Datastore/BasicRepository.cs
index 33527e89f..6d213d273 100644
--- a/src/NzbDrone.Core/Datastore/BasicRepository.cs
+++ b/src/NzbDrone.Core/Datastore/BasicRepository.cs
@@ -67,7 +67,7 @@ public BasicRepository(IDatabase database, IEventAggregator eventAggregator)
_updateSql = GetUpdateSql(_properties);
}
- protected virtual SqlBuilder Builder() => new SqlBuilder();
+ protected virtual SqlBuilder Builder() => new SqlBuilder(_database.DatabaseType);
protected virtual List Query(SqlBuilder builder) => _database.Query(builder).ToList();
@@ -79,7 +79,7 @@ public int Count()
{
using (var conn = _database.OpenConnection())
{
- return conn.ExecuteScalar($"SELECT COUNT(*) FROM {_table}");
+ return conn.ExecuteScalar($"SELECT COUNT(*) FROM \"{_table}\"");
}
}
@@ -175,6 +175,11 @@ private string GetInsertSql()
}
}
+ if (_database.DatabaseType == DatabaseType.PostgreSQL)
+ {
+ return $"INSERT INTO \"{_table}\" ({sbColumnList.ToString()}) VALUES ({sbParameterList.ToString()}) RETURNING \"Id\"";
+ }
+
return $"INSERT INTO {_table} ({sbColumnList.ToString()}) VALUES ({sbParameterList.ToString()}); SELECT last_insert_rowid() id";
}
@@ -182,7 +187,8 @@ private TModel Insert(IDbConnection connection, IDbTransaction transaction, TMod
{
SqlBuilderExtensions.LogQuery(_insertSql, model);
var multi = connection.QueryMultiple(_insertSql, model, transaction);
- var id = (int)multi.Read().First().id;
+ var multiRead = multi.Read();
+ var id = (int)(multiRead.First().id ?? multiRead.First().Id);
_keyProperty.SetValue(model, id);
return model;
@@ -293,7 +299,7 @@ public void Purge(bool vacuum = false)
{
using (var conn = _database.OpenConnection())
{
- conn.Execute($"DELETE FROM [{_table}]");
+ conn.Execute($"DELETE FROM \"{_table}\"");
}
if (vacuum)
@@ -352,7 +358,7 @@ public void SetFields(IList models, params Expression propertiesToUpdate)
{
var sb = new StringBuilder();
- sb.AppendFormat("UPDATE {0} SET ", _table);
+ sb.AppendFormat("UPDATE \"{0}\" SET ", _table);
for (var i = 0; i < propertiesToUpdate.Count; i++)
{
@@ -420,9 +426,10 @@ protected List GetPagedRecords(SqlBuilder builder, PagingSpec pa
pagingSpec.SortKey = $"{_table}.{_keyProperty.Name}";
}
+ var sortKey = TableMapping.Mapper.GetSortKey(pagingSpec.SortKey);
var sortDirection = pagingSpec.SortDirection == SortDirection.Descending ? "DESC" : "ASC";
- var pagingOffset = (pagingSpec.Page - 1) * pagingSpec.PageSize;
- builder.OrderBy($"{pagingSpec.SortKey} {sortDirection} LIMIT {pagingSpec.PageSize} OFFSET {pagingOffset}");
+ var pagingOffset = Math.Max(pagingSpec.Page - 1, 0) * pagingSpec.PageSize;
+ builder.OrderBy($"\"{sortKey}\" {sortDirection} LIMIT {pagingSpec.PageSize} OFFSET {pagingOffset}");
return queryFunc(builder).ToList();
}
diff --git a/src/NzbDrone.Core/Datastore/ConnectionStringFactory.cs b/src/NzbDrone.Core/Datastore/ConnectionStringFactory.cs
index 9bdd133f7..961d060f8 100644
--- a/src/NzbDrone.Core/Datastore/ConnectionStringFactory.cs
+++ b/src/NzbDrone.Core/Datastore/ConnectionStringFactory.cs
@@ -1,7 +1,9 @@
using System;
using System.Data.SQLite;
+using Npgsql;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions;
+using NzbDrone.Core.Configuration;
namespace NzbDrone.Core.Datastore
{
@@ -14,10 +16,17 @@ public interface IConnectionStringFactory
public class ConnectionStringFactory : IConnectionStringFactory
{
- public ConnectionStringFactory(IAppFolderInfo appFolderInfo)
+ private readonly IConfigFileProvider _configFileProvider;
+
+ public ConnectionStringFactory(IAppFolderInfo appFolderInfo, IConfigFileProvider configFileProvider)
{
- MainDbConnectionString = GetConnectionString(appFolderInfo.GetDatabase());
- LogDbConnectionString = GetConnectionString(appFolderInfo.GetLogDatabase());
+ _configFileProvider = configFileProvider;
+
+ MainDbConnectionString = _configFileProvider.PostgresHost.IsNotNullOrWhiteSpace() ? GetPostgresConnectionString(_configFileProvider.PostgresMainDb) :
+ GetConnectionString(appFolderInfo.GetDatabase());
+
+ LogDbConnectionString = _configFileProvider.PostgresHost.IsNotNullOrWhiteSpace() ? GetPostgresConnectionString(_configFileProvider.PostgresLogDb) :
+ GetConnectionString(appFolderInfo.GetLogDatabase());
}
public string MainDbConnectionString { get; private set; }
@@ -48,5 +57,19 @@ private static string GetConnectionString(string dbPath)
return connectionBuilder.ConnectionString;
}
+
+ private string GetPostgresConnectionString(string dbName)
+ {
+ var connectionBuilder = new NpgsqlConnectionStringBuilder();
+
+ connectionBuilder.Database = dbName;
+ connectionBuilder.Host = _configFileProvider.PostgresHost;
+ connectionBuilder.Username = _configFileProvider.PostgresUser;
+ connectionBuilder.Password = _configFileProvider.PostgresPassword;
+ connectionBuilder.Port = _configFileProvider.PostgresPort;
+ connectionBuilder.Enlist = false;
+
+ return connectionBuilder.ConnectionString;
+ }
}
}
diff --git a/src/NzbDrone.Core/Datastore/Database.cs b/src/NzbDrone.Core/Datastore/Database.cs
index a9b6e807f..433fef0b6 100644
--- a/src/NzbDrone.Core/Datastore/Database.cs
+++ b/src/NzbDrone.Core/Datastore/Database.cs
@@ -1,5 +1,6 @@
using System;
using System.Data;
+using System.Text.RegularExpressions;
using Dapper;
using NLog;
using NzbDrone.Common.Instrumentation;
@@ -11,6 +12,7 @@ public interface IDatabase
IDbConnection OpenConnection();
Version Version { get; }
int Migration { get; }
+ DatabaseType DatabaseType { get; }
void Vacuum();
}
@@ -32,13 +34,44 @@ public IDbConnection OpenConnection()
return _datamapperFactory();
}
+ public DatabaseType DatabaseType
+ {
+ get
+ {
+ using (var db = _datamapperFactory())
+ {
+ if (db.ConnectionString.Contains(".db"))
+ {
+ return DatabaseType.SQLite;
+ }
+ else
+ {
+ return DatabaseType.PostgreSQL;
+ }
+ }
+ }
+ }
+
public Version Version
{
get
{
using (var db = _datamapperFactory())
{
- var version = db.QueryFirstOrDefault("SELECT sqlite_version()");
+ string version;
+
+ try
+ {
+ version = db.QueryFirstOrDefault("SHOW server_version");
+
+ //Postgres can return extra info about operating system on version call, ignore this
+ version = Regex.Replace(version, @"\(.*?\)", "");
+ }
+ catch
+ {
+ version = db.QueryFirstOrDefault("SELECT sqlite_version()");
+ }
+
return new Version(version);
}
}
@@ -50,7 +83,7 @@ public int Migration
{
using (var db = _datamapperFactory())
{
- return db.QueryFirstOrDefault("SELECT version from VersionInfo ORDER BY version DESC LIMIT 1");
+ return db.QueryFirstOrDefault("SELECT \"Version\" from \"VersionInfo\" ORDER BY \"Version\" DESC LIMIT 1");
}
}
}
@@ -73,4 +106,10 @@ public void Vacuum()
}
}
}
+
+ public enum DatabaseType
+ {
+ SQLite,
+ PostgreSQL
+ }
}
diff --git a/src/NzbDrone.Core/Datastore/DbFactory.cs b/src/NzbDrone.Core/Datastore/DbFactory.cs
index 1bc2ab348..3298a7f0d 100644
--- a/src/NzbDrone.Core/Datastore/DbFactory.cs
+++ b/src/NzbDrone.Core/Datastore/DbFactory.cs
@@ -1,10 +1,13 @@
using System;
+using System.Data.Common;
using System.Data.SQLite;
using NLog;
+using Npgsql;
using NzbDrone.Common.Disk;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Exceptions;
using NzbDrone.Common.Instrumentation;
+using NzbDrone.Core.Configuration;
using NzbDrone.Core.Datastore.Migration.Framework;
namespace NzbDrone.Core.Datastore
@@ -85,10 +88,19 @@ public IDatabase Create(MigrationContext migrationContext)
var db = new Database(migrationContext.MigrationType.ToString(), () =>
{
- var conn = SQLiteFactory.Instance.CreateConnection();
- conn.ConnectionString = connectionString;
- conn.Open();
+ DbConnection conn;
+ if (connectionString.Contains(".db"))
+ {
+ conn = SQLiteFactory.Instance.CreateConnection();
+ conn.ConnectionString = connectionString;
+ }
+ else
+ {
+ conn = new NpgsqlConnection(connectionString);
+ }
+
+ conn.Open();
return conn;
});
diff --git a/src/NzbDrone.Core/Datastore/Extensions/BuilderExtensions.cs b/src/NzbDrone.Core/Datastore/Extensions/BuilderExtensions.cs
index 97ce5d731..b7fc3df98 100644
--- a/src/NzbDrone.Core/Datastore/Extensions/BuilderExtensions.cs
+++ b/src/NzbDrone.Core/Datastore/Extensions/BuilderExtensions.cs
@@ -20,7 +20,7 @@ public static class SqlBuilderExtensions
public static SqlBuilder Select(this SqlBuilder builder, params Type[] types)
{
- return builder.Select(types.Select(x => TableMapping.Mapper.TableNameMapping(x) + ".*").Join(", "));
+ return builder.Select(types.Select(x => $"\"{TableMapping.Mapper.TableNameMapping(x)}\".*").Join(", "));
}
public static SqlBuilder SelectDistinct(this SqlBuilder builder, params Type[] types)
@@ -42,41 +42,48 @@ public static SqlBuilder SelectCountDistinct(this SqlBuilder builder, Ex
public static SqlBuilder Where(this SqlBuilder builder, Expression> filter)
{
- var wb = new WhereBuilder(filter, true, builder.Sequence);
+ var wb = GetWhereBuilder(builder.DatabaseType, filter, true, builder.Sequence);
+
+ return builder.Where(wb.ToString(), wb.Parameters);
+ }
+
+ public static SqlBuilder WherePostgres(this SqlBuilder builder, Expression> filter)
+ {
+ var wb = new WhereBuilderPostgres(filter, true, builder.Sequence);
return builder.Where(wb.ToString(), wb.Parameters);
}
public static SqlBuilder OrWhere(this SqlBuilder builder, Expression> filter)
{
- var wb = new WhereBuilder(filter, true, builder.Sequence);
+ var wb = GetWhereBuilder(builder.DatabaseType, filter, true, builder.Sequence);
return builder.OrWhere(wb.ToString(), wb.Parameters);
}
public static SqlBuilder Join(this SqlBuilder builder, Expression> filter)
{
- var wb = new WhereBuilder(filter, false, builder.Sequence);
+ var wb = GetWhereBuilder(builder.DatabaseType, filter, false, builder.Sequence);
var rightTable = TableMapping.Mapper.TableNameMapping(typeof(TRight));
- return builder.Join($"{rightTable} ON {wb.ToString()}");
+ return builder.Join($"\"{rightTable}\" ON {wb.ToString()}");
}
public static SqlBuilder LeftJoin(this SqlBuilder builder, Expression> filter)
{
- var wb = new WhereBuilder(filter, false, builder.Sequence);
+ var wb = GetWhereBuilder(builder.DatabaseType, filter, false, builder.Sequence);
var rightTable = TableMapping.Mapper.TableNameMapping(typeof(TRight));
- return builder.LeftJoin($"{rightTable} ON {wb.ToString()}");
+ return builder.LeftJoin($"\"{rightTable}\" ON {wb.ToString()}");
}
public static SqlBuilder GroupBy(this SqlBuilder builder, Expression> property)
{
var table = TableMapping.Mapper.TableNameMapping(typeof(TModel));
var propName = property.GetMemberName().Name;
- return builder.GroupBy($"{table}.{propName}");
+ return builder.GroupBy($"\"{table}\".\"{propName}\"");
}
public static SqlBuilder.Template AddSelectTemplate(this SqlBuilder builder, Type type)
@@ -138,6 +145,18 @@ public static string GetSqlLogString(string sql, object paramsObject)
return sb.ToString();
}
+ private static WhereBuilder GetWhereBuilder(DatabaseType databaseType, Expression filter, bool requireConcrete, int seq)
+ {
+ if (databaseType == DatabaseType.PostgreSQL)
+ {
+ return new WhereBuilderPostgres(filter, requireConcrete, seq);
+ }
+ else
+ {
+ return new WhereBuilderSqlite(filter, requireConcrete, seq);
+ }
+ }
+
private static Dictionary ToDictionary(this DynamicParameters dynamicParams)
{
var argsDictionary = new Dictionary();
diff --git a/src/NzbDrone.Core/Datastore/LogDatabase.cs b/src/NzbDrone.Core/Datastore/LogDatabase.cs
index f992c8bbe..a770c2661 100644
--- a/src/NzbDrone.Core/Datastore/LogDatabase.cs
+++ b/src/NzbDrone.Core/Datastore/LogDatabase.cs
@@ -10,10 +10,12 @@ public interface ILogDatabase : IDatabase
public class LogDatabase : ILogDatabase
{
private readonly IDatabase _database;
+ private readonly DatabaseType _databaseType;
public LogDatabase(IDatabase database)
{
_database = database;
+ _databaseType = _database == null ? DatabaseType.SQLite : _database.DatabaseType;
}
public IDbConnection OpenConnection()
@@ -25,6 +27,8 @@ public IDbConnection OpenConnection()
public int Migration => _database.Migration;
+ public DatabaseType DatabaseType => _databaseType;
+
public void Vacuum()
{
_database.Vacuum();
diff --git a/src/NzbDrone.Core/Datastore/MainDatabase.cs b/src/NzbDrone.Core/Datastore/MainDatabase.cs
index 4a9d3298c..521293299 100644
--- a/src/NzbDrone.Core/Datastore/MainDatabase.cs
+++ b/src/NzbDrone.Core/Datastore/MainDatabase.cs
@@ -10,10 +10,12 @@ public interface IMainDatabase : IDatabase
public class MainDatabase : IMainDatabase
{
private readonly IDatabase _database;
+ private readonly DatabaseType _databaseType;
public MainDatabase(IDatabase database)
{
_database = database;
+ _databaseType = _database == null ? DatabaseType.SQLite : _database.DatabaseType;
}
public IDbConnection OpenConnection()
@@ -25,6 +27,8 @@ public IDbConnection OpenConnection()
public int Migration => _database.Migration;
+ public DatabaseType DatabaseType => _databaseType;
+
public void Vacuum()
{
_database.Vacuum();
diff --git a/src/NzbDrone.Core/Datastore/Migration/001_initial_setup.cs b/src/NzbDrone.Core/Datastore/Migration/001_initial_setup.cs
index a3c9140be..6d2a79968 100644
--- a/src/NzbDrone.Core/Datastore/Migration/001_initial_setup.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/001_initial_setup.cs
@@ -144,7 +144,7 @@ protected override void MainDbUpgrade()
.WithColumn("Items").AsString().NotNullable()
.WithColumn("Language").AsInt32().Nullable();
- Execute.Sql("UPDATE Profiles SET Language = 1");
+ Execute.Sql("UPDATE \"Profiles\" SET \"Language\" = 1");
Create.TableForModel("SceneMappings")
.WithColumn("TvdbId").AsInt32()
@@ -243,8 +243,8 @@ protected override void MainDbUpgrade()
Insert.IntoTable("DelayProfiles").Row(new
{
- EnableUsenet = 1,
- EnableTorrent = 1,
+ EnableUsenet = true,
+ EnableTorrent = true,
PreferredProtocol = 1,
UsenetDelay = 0,
TorrentDelay = 0,
diff --git a/src/NzbDrone.Core/Datastore/Migration/108_update_schedule_interval.cs b/src/NzbDrone.Core/Datastore/Migration/108_update_schedule_interval.cs
index 82f204b3e..8be302bbe 100644
--- a/src/NzbDrone.Core/Datastore/Migration/108_update_schedule_interval.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/108_update_schedule_interval.cs
@@ -9,7 +9,7 @@ public class update_schedule_intervale : NzbDroneMigrationBase
protected override void MainDbUpgrade()
{
Alter.Table("ScheduledTasks").AlterColumn("Interval").AsDouble();
- Execute.Sql("UPDATE ScheduledTasks SET Interval=0.25 WHERE TypeName='NzbDrone.Core.Download.CheckForFinishedDownloadCommand'");
+ Execute.Sql("UPDATE \"ScheduledTasks\" SET \"Interval\" = 0.25 WHERE \"TypeName\" = 'NzbDrone.Core.Download.CheckForFinishedDownloadCommand'");
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/109_add_movie_formats_to_naming_config.cs b/src/NzbDrone.Core/Datastore/Migration/109_add_movie_formats_to_naming_config.cs
index ca7f447a5..e20cb8939 100644
--- a/src/NzbDrone.Core/Datastore/Migration/109_add_movie_formats_to_naming_config.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/109_add_movie_formats_to_naming_config.cs
@@ -20,7 +20,7 @@ private void ConvertConfig(IDbConnection conn, IDbTransaction tran)
using (IDbCommand namingConfigCmd = conn.CreateCommand())
{
namingConfigCmd.Transaction = tran;
- namingConfigCmd.CommandText = @"SELECT * FROM NamingConfig LIMIT 1";
+ namingConfigCmd.CommandText = @"SELECT * FROM ""NamingConfig"" LIMIT 1";
using (IDataReader namingConfigReader = namingConfigCmd.ExecuteReader())
{
while (namingConfigReader.Read())
@@ -38,9 +38,9 @@ private void ConvertConfig(IDbConnection conn, IDbTransaction tran)
using (IDbCommand updateCmd = conn.CreateCommand())
{
- var text = string.Format("UPDATE NamingConfig " +
- "SET StandardMovieFormat = '{0}', " +
- "MovieFolderFormat = '{1}'",
+ var text = string.Format("UPDATE \"NamingConfig\" " +
+ "SET \"StandardMovieFormat\" = '{0}', " +
+ "\"MovieFolderFormat\" = '{1}'",
standardMovieFormat,
movieFolderFormat);
diff --git a/src/NzbDrone.Core/Datastore/Migration/115_update_movie_sorttitle.cs b/src/NzbDrone.Core/Datastore/Migration/115_update_movie_sorttitle.cs
index 593665455..8ae00b36b 100644
--- a/src/NzbDrone.Core/Datastore/Migration/115_update_movie_sorttitle.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/115_update_movie_sorttitle.cs
@@ -18,7 +18,7 @@ private void SetSortTitles(IDbConnection conn, IDbTransaction tran)
using (IDbCommand getSeriesCmd = conn.CreateCommand())
{
getSeriesCmd.Transaction = tran;
- getSeriesCmd.CommandText = @"SELECT Id, Title FROM Movies";
+ getSeriesCmd.CommandText = @"SELECT ""Id"", ""Title"" FROM ""Movies""";
using (IDataReader seriesReader = getSeriesCmd.ExecuteReader())
{
while (seriesReader.Read())
@@ -31,7 +31,7 @@ private void SetSortTitles(IDbConnection conn, IDbTransaction tran)
using (IDbCommand updateCmd = conn.CreateCommand())
{
updateCmd.Transaction = tran;
- updateCmd.CommandText = "UPDATE Movies SET SortTitle = ? WHERE Id = ?";
+ updateCmd.CommandText = "UPDATE \"Movies\" SET \"SortTitle\" = ? WHERE \"Id\" = ?";
updateCmd.AddParameter(sortTitle);
updateCmd.AddParameter(id);
diff --git a/src/NzbDrone.Core/Datastore/Migration/116_update_movie_sorttitle_again.cs b/src/NzbDrone.Core/Datastore/Migration/116_update_movie_sorttitle_again.cs
index 45666b1c2..e998afc41 100644
--- a/src/NzbDrone.Core/Datastore/Migration/116_update_movie_sorttitle_again.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/116_update_movie_sorttitle_again.cs
@@ -17,7 +17,7 @@ private void SetSortTitles(IDbConnection conn, IDbTransaction tran)
using (IDbCommand getSeriesCmd = conn.CreateCommand())
{
getSeriesCmd.Transaction = tran;
- getSeriesCmd.CommandText = @"SELECT Id, Title FROM Movies";
+ getSeriesCmd.CommandText = @"SELECT ""Id"", ""Title"" FROM ""Movies""";
using (IDataReader seriesReader = getSeriesCmd.ExecuteReader())
{
while (seriesReader.Read())
@@ -30,7 +30,7 @@ private void SetSortTitles(IDbConnection conn, IDbTransaction tran)
using (IDbCommand updateCmd = conn.CreateCommand())
{
updateCmd.Transaction = tran;
- updateCmd.CommandText = "UPDATE Movies SET SortTitle = ? WHERE Id = ?";
+ updateCmd.CommandText = "UPDATE \"Movies\" SET \"SortTitle\" = ? WHERE \"Id\" = ?";
updateCmd.AddParameter(sortTitle);
updateCmd.AddParameter(id);
diff --git a/src/NzbDrone.Core/Datastore/Migration/117_update_movie_file.cs b/src/NzbDrone.Core/Datastore/Migration/117_update_movie_file.cs
index f28ef6f29..bbcd501fc 100644
--- a/src/NzbDrone.Core/Datastore/Migration/117_update_movie_file.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/117_update_movie_file.cs
@@ -19,7 +19,7 @@ private void SetSortTitles(IDbConnection conn, IDbTransaction tran)
using (IDbCommand getSeriesCmd = conn.CreateCommand())
{
getSeriesCmd.Transaction = tran;
- getSeriesCmd.CommandText = @"SELECT Id, RelativePath FROM MovieFiles";
+ getSeriesCmd.CommandText = @"SELECT ""Id"", ""RelativePath"" FROM ""MovieFiles""";
using (IDataReader seriesReader = getSeriesCmd.ExecuteReader())
{
while (seriesReader.Read())
@@ -39,7 +39,7 @@ private void SetSortTitles(IDbConnection conn, IDbTransaction tran)
using (IDbCommand updateCmd = conn.CreateCommand())
{
updateCmd.Transaction = tran;
- updateCmd.CommandText = "UPDATE MovieFiles SET Edition = ? WHERE Id = ?";
+ updateCmd.CommandText = "UPDATE \"MovieFiles\" SET \"Edition\" = ? WHERE \"Id\" = ?";
updateCmd.AddParameter(edition);
updateCmd.AddParameter(id);
diff --git a/src/NzbDrone.Core/Datastore/Migration/118_update_movie_slug.cs b/src/NzbDrone.Core/Datastore/Migration/118_update_movie_slug.cs
index 4dbdee96b..adb1a7ed2 100644
--- a/src/NzbDrone.Core/Datastore/Migration/118_update_movie_slug.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/118_update_movie_slug.cs
@@ -17,7 +17,7 @@ private void SetTitleSlug(IDbConnection conn, IDbTransaction tran)
using (IDbCommand getSeriesCmd = conn.CreateCommand())
{
getSeriesCmd.Transaction = tran;
- getSeriesCmd.CommandText = @"SELECT Id, Title, Year, TmdbId FROM Movies";
+ getSeriesCmd.CommandText = @"SELECT ""Id"", ""Title"", ""Year"", ""TmdbId"" FROM ""Movies""";
using (IDataReader seriesReader = getSeriesCmd.ExecuteReader())
{
while (seriesReader.Read())
@@ -32,7 +32,7 @@ private void SetTitleSlug(IDbConnection conn, IDbTransaction tran)
using (IDbCommand updateCmd = conn.CreateCommand())
{
updateCmd.Transaction = tran;
- updateCmd.CommandText = "UPDATE Movies SET TitleSlug = ? WHERE Id = ?";
+ updateCmd.CommandText = "UPDATE \"Movies\" SET \"TitleSlug\" = ? WHERE \"Id\" = ?";
updateCmd.AddParameter(titleSlug);
updateCmd.AddParameter(id);
diff --git a/src/NzbDrone.Core/Datastore/Migration/121_update_filedate_config.cs b/src/NzbDrone.Core/Datastore/Migration/121_update_filedate_config.cs
index 8478360bd..ec9bf187a 100644
--- a/src/NzbDrone.Core/Datastore/Migration/121_update_filedate_config.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/121_update_filedate_config.cs
@@ -19,7 +19,7 @@ private void SetTitleSlug(IDbConnection conn, IDbTransaction tran)
using (IDbCommand getSeriesCmd = conn.CreateCommand())
{
getSeriesCmd.Transaction = tran;
- getSeriesCmd.CommandText = @"SELECT Id, Value FROM Config WHERE Key = 'filedate'";
+ getSeriesCmd.CommandText = @"SELECT ""Id"", ""Value"" FROM ""Config"" WHERE ""Key"" = 'filedate'";
using (IDataReader seriesReader = getSeriesCmd.ExecuteReader())
{
while (seriesReader.Read())
@@ -30,7 +30,7 @@ private void SetTitleSlug(IDbConnection conn, IDbTransaction tran)
using (IDbCommand updateCmd = conn.CreateCommand())
{
updateCmd.Transaction = tran;
- updateCmd.CommandText = "UPDATE Config SET Value = 'Release' WHERE Id = ?";
+ updateCmd.CommandText = "UPDATE \"Config\" SET \"Value\" = 'Release' WHERE \"Id\" = ?";
updateCmd.AddParameter(id);
updateCmd.ExecuteNonQuery();
diff --git a/src/NzbDrone.Core/Datastore/Migration/123_create_netimport_table.cs b/src/NzbDrone.Core/Datastore/Migration/123_create_netimport_table.cs
index 91af60e36..aec46763d 100644
--- a/src/NzbDrone.Core/Datastore/Migration/123_create_netimport_table.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/123_create_netimport_table.cs
@@ -16,9 +16,9 @@ protected override void MainDbUpgrade()
.WithColumn("Implementation").AsString()
.WithColumn("ConfigContract").AsString().Nullable()
.WithColumn("Settings").AsString().Nullable()
- .WithColumn("EnableAuto").AsInt32()
+ .WithColumn("EnableAuto").AsBoolean()
.WithColumn("RootFolderPath").AsString()
- .WithColumn("ShouldMonitor").AsInt32()
+ .WithColumn("ShouldMonitor").AsBoolean()
.WithColumn("ProfileId").AsInt32();
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/125_fix_imdb_unique.cs b/src/NzbDrone.Core/Datastore/Migration/125_fix_imdb_unique.cs
index fdbcdcd06..c79a18b5a 100644
--- a/src/NzbDrone.Core/Datastore/Migration/125_fix_imdb_unique.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/125_fix_imdb_unique.cs
@@ -1,4 +1,4 @@
-using System.Data;
+using System.Data;
using FluentMigrator;
using NzbDrone.Core.Datastore.Migration.Framework;
@@ -17,7 +17,7 @@ private void DeleteUniqueIndex(IDbConnection conn, IDbTransaction tran)
using (IDbCommand getSeriesCmd = conn.CreateCommand())
{
getSeriesCmd.Transaction = tran;
- getSeriesCmd.CommandText = @"DROP INDEX 'IX_Movies_ImdbId'";
+ getSeriesCmd.CommandText = @"DROP INDEX ""IX_Movies_ImdbId""";
getSeriesCmd.ExecuteNonQuery();
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/126_update_qualities_and_profiles.cs b/src/NzbDrone.Core/Datastore/Migration/126_update_qualities_and_profiles.cs
index 70a3a231a..6194ec0fe 100644
--- a/src/NzbDrone.Core/Datastore/Migration/126_update_qualities_and_profiles.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/126_update_qualities_and_profiles.cs
@@ -82,7 +82,7 @@ public void Commit()
using (var updateProfileCmd = _connection.CreateCommand())
{
updateProfileCmd.Transaction = _transaction;
- updateProfileCmd.CommandText = "UPDATE Profiles SET Name = ?, Cutoff = ?, Items = ?, Language = ? WHERE Id = ?";
+ updateProfileCmd.CommandText = "UPDATE \"Profiles\" SET \"Name\" = ?, \"Cutoff\" = ?, \"Items\" = ?, \"Language\" = ? WHERE \"Id\" = ?";
updateProfileCmd.AddParameter(profile.Name);
updateProfileCmd.AddParameter(profile.Cutoff);
updateProfileCmd.AddParameter(profile.Items.ToJson());
@@ -187,7 +187,7 @@ public void UpdateQualityToQualityDefinition()
using (var getDefinitions = _connection.CreateCommand())
{
getDefinitions.Transaction = _transaction;
- getDefinitions.CommandText = @"SELECT Id, Quality FROM QualityDefinitions";
+ getDefinitions.CommandText = @"SELECT ""Id"", ""Quality"" FROM ""QualityDefinitions""";
using (var definitionsReader = getDefinitions.ExecuteReader())
{
@@ -225,7 +225,7 @@ private List GetProfiles()
using (var getProfilesCmd = _connection.CreateCommand())
{
getProfilesCmd.Transaction = _transaction;
- getProfilesCmd.CommandText = @"SELECT Id, Name, Cutoff, Items, Language FROM Profiles";
+ getProfilesCmd.CommandText = @"SELECT ""Id"", ""Name"", ""Cutoff"", ""Items"", ""Language"" FROM ""Profiles""";
using (var profileReader = getProfilesCmd.ExecuteReader())
{
diff --git a/src/NzbDrone.Core/Datastore/Migration/132_rename_torrent_downloadstation.cs b/src/NzbDrone.Core/Datastore/Migration/132_rename_torrent_downloadstation.cs
index f17c9610c..661546ee6 100644
--- a/src/NzbDrone.Core/Datastore/Migration/132_rename_torrent_downloadstation.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/132_rename_torrent_downloadstation.cs
@@ -8,7 +8,7 @@ public class rename_torrent_downloadstation : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
- Execute.Sql("UPDATE DownloadClients SET Implementation = 'TorrentDownloadStation' WHERE Implementation = 'DownloadStation';");
+ Execute.Sql("UPDATE \"DownloadClients\" SET \"Implementation\" = 'TorrentDownloadStation' WHERE \"Implementation\" = 'DownloadStation';");
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/133_add_minimumavailability.cs b/src/NzbDrone.Core/Datastore/Migration/133_add_minimumavailability.cs
index 89c317472..ddcfadf50 100644
--- a/src/NzbDrone.Core/Datastore/Migration/133_add_minimumavailability.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/133_add_minimumavailability.cs
@@ -13,12 +13,12 @@ protected override void MainDbUpgrade()
{
if (!Schema.Schema("dbo").Table("NetImport").Column("MinimumAvailability").Exists())
{
- Alter.Table("NetImport").AddColumn("MinimumAvailability").AsInt32().WithDefaultValue(MovieStatusType.Released);
+ Alter.Table("NetImport").AddColumn("MinimumAvailability").AsInt32().WithDefaultValue((int)MovieStatusType.Released);
}
if (!Schema.Schema("dbo").Table("Movies").Column("MinimumAvailability").Exists())
{
- Alter.Table("Movies").AddColumn("MinimumAvailability").AsInt32().WithDefaultValue(MovieStatusType.Released);
+ Alter.Table("Movies").AddColumn("MinimumAvailability").AsInt32().WithDefaultValue((int)MovieStatusType.Released);
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/137_add_import_exclusions_table.cs b/src/NzbDrone.Core/Datastore/Migration/137_add_import_exclusions_table.cs
index 25b68583a..fe527f04b 100644
--- a/src/NzbDrone.Core/Datastore/Migration/137_add_import_exclusions_table.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/137_add_import_exclusions_table.cs
@@ -29,7 +29,7 @@ private void AddExisting(IDbConnection conn, IDbTransaction tran)
using (IDbCommand getSeriesCmd = conn.CreateCommand())
{
getSeriesCmd.Transaction = tran;
- getSeriesCmd.CommandText = @"SELECT Key, Value FROM Config WHERE Key = 'importexclusions'";
+ getSeriesCmd.CommandText = @"SELECT ""Key"", ""Value"" FROM ""Config"" WHERE ""Key"" = 'importexclusions'";
TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
using (IDataReader seriesReader = getSeriesCmd.ExecuteReader())
{
@@ -48,7 +48,7 @@ private void AddExisting(IDbConnection conn, IDbTransaction tran)
using (IDbCommand updateCmd = conn.CreateCommand())
{
updateCmd.Transaction = tran;
- updateCmd.CommandText = "INSERT INTO ImportExclusions (tmdbid, MovieTitle) VALUES " + string.Join(", ", importExclusions);
+ updateCmd.CommandText = "INSERT INTO \"ImportExclusions\" (tmdbid, MovieTitle) VALUES " + string.Join(", ", importExclusions);
updateCmd.ExecuteNonQuery();
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/139_fix_indexer_baseurl.cs b/src/NzbDrone.Core/Datastore/Migration/139_fix_indexer_baseurl.cs
index 30ead987c..1f24b03fe 100644
--- a/src/NzbDrone.Core/Datastore/Migration/139_fix_indexer_baseurl.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/139_fix_indexer_baseurl.cs
@@ -20,7 +20,7 @@ private void RenameUrlToBaseUrl(IDbConnection conn, IDbTransaction tran)
using (var cmd = conn.CreateCommand())
{
cmd.Transaction = tran;
- cmd.CommandText = "SELECT Id, Settings FROM Indexers WHERE ConfigContract IN ('NewznabSettings', 'TorznabSettings', 'IPTorrentsSettings', 'OmgwtfnzbsSettings')";
+ cmd.CommandText = "SELECT \"Id\", \"Settings\" FROM \"Indexers\" WHERE \"ConfigContract\" IN ('NewznabSettings', 'TorznabSettings', 'IPTorrentsSettings', 'OmgwtfnzbsSettings')";
using (var reader = cmd.ExecuteReader())
{
@@ -42,7 +42,7 @@ private void RenameUrlToBaseUrl(IDbConnection conn, IDbTransaction tran)
using (var updateCmd = conn.CreateCommand())
{
updateCmd.Transaction = tran;
- updateCmd.CommandText = "UPDATE Indexers SET Settings = ? WHERE Id = ?";
+ updateCmd.CommandText = "UPDATE \"Indexers\" SET \"Settings\" = ? WHERE \"Id\" = ?";
updateCmd.AddParameter(settings);
updateCmd.AddParameter(id);
updateCmd.ExecuteNonQuery();
diff --git a/src/NzbDrone.Core/Datastore/Migration/141_fix_duplicate_alt_titles.cs b/src/NzbDrone.Core/Datastore/Migration/141_fix_duplicate_alt_titles.cs
index dd09aa4a6..e58cdff78 100644
--- a/src/NzbDrone.Core/Datastore/Migration/141_fix_duplicate_alt_titles.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/141_fix_duplicate_alt_titles.cs
@@ -1,4 +1,4 @@
-using System.Data;
+using System.Data;
using FluentMigrator;
using NzbDrone.Core.Datastore.Migration.Framework;
@@ -9,16 +9,16 @@ public class fix_duplicate_alt_titles : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
- Execute.WithConnection(RenameUrlToBaseUrl);
+ Execute.WithConnection(RemoveDuplicateAlternateTitles);
Alter.Table("AlternativeTitles").AlterColumn("CleanTitle").AsString().Unique();
}
- private void RenameUrlToBaseUrl(IDbConnection conn, IDbTransaction tran)
+ private void RemoveDuplicateAlternateTitles(IDbConnection conn, IDbTransaction tran)
{
using (var cmd = conn.CreateCommand())
{
cmd.Transaction = tran;
- cmd.CommandText = "DELETE FROM AlternativeTitles WHERE rowid NOT IN ( SELECT MIN(rowid) FROM AlternativeTitles GROUP BY CleanTitle )";
+ cmd.CommandText = "DELETE FROM \"AlternativeTitles\" WHERE \"Id\" NOT IN (Select Min(\"Id\") From \"AlternativeTitles\" Group By \"CleanTitle\")";
cmd.ExecuteNonQuery();
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/145_banner_to_fanart.cs b/src/NzbDrone.Core/Datastore/Migration/145_banner_to_fanart.cs
index 7ad227539..535668e2f 100644
--- a/src/NzbDrone.Core/Datastore/Migration/145_banner_to_fanart.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/145_banner_to_fanart.cs
@@ -8,10 +8,10 @@ public class banner_to_fanart : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
- Execute.Sql("UPDATE Movies SET Images = replace(Images, \'\"coverType\": \"banner\"\', \'\"coverType\": \"fanart\"\')");
+ Execute.Sql("UPDATE \"Movies\" SET \"Images\" = replace(\"Images\", \'\"coverType\": \"banner\"\', \'\"coverType\": \"fanart\"\')");
// Remove Link for images to specific MovieFiles, Images are now related to the Movie object only
- Execute.Sql("UPDATE MetadataFiles SET MovieFileId = null WHERE Type = 2");
+ Execute.Sql("UPDATE \"MetadataFiles\" SET \"MovieFileId\" = null WHERE \"Type\" = 2");
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/148_remove_extra_naming_config.cs b/src/NzbDrone.Core/Datastore/Migration/148_remove_extra_naming_config.cs
index a5b41cb68..c34b2ce8a 100644
--- a/src/NzbDrone.Core/Datastore/Migration/148_remove_extra_naming_config.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/148_remove_extra_naming_config.cs
@@ -9,7 +9,7 @@ public class remove_extra_naming_config : NzbDroneMigrationBase
protected override void MainDbUpgrade()
{
// Remove all but 1 NamingConfig
- Execute.Sql("DELETE FROM NamingConfig WHERE ID NOT IN(SELECT ID FROM NamingConfig LIMIT 1)");
+ Execute.Sql("DELETE FROM \"NamingConfig\" WHERE \"Id\" NOT IN(SELECT \"Id\" FROM \"NamingConfig\" LIMIT 1)");
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/149_convert_regex_required_tags.cs b/src/NzbDrone.Core/Datastore/Migration/149_convert_regex_required_tags.cs
index 436ce949f..5f6259e25 100644
--- a/src/NzbDrone.Core/Datastore/Migration/149_convert_regex_required_tags.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/149_convert_regex_required_tags.cs
@@ -82,7 +82,15 @@ public void Commit()
using (var updateProfileCmd = _connection.CreateCommand())
{
updateProfileCmd.Transaction = _transaction;
- updateProfileCmd.CommandText = "UPDATE CustomFormats SET Name = ?, FormatTags = ? WHERE Id = ?";
+ if (_connection.GetType().FullName == "Npgsql.NpgsqlConnection")
+ {
+ updateProfileCmd.CommandText = "UPDATE \"CustomFormats\" SET \"Name\" = $1, \"FormatTags\" = $2 WHERE \"Id\" = $3";
+ }
+ else
+ {
+ updateProfileCmd.CommandText = "UPDATE \"CustomFormats\" SET \"Name\" = ?, \"FormatTags\" = ? WHERE \"Id\" = ?";
+ }
+
updateProfileCmd.AddParameter(profile.Name);
updateProfileCmd.AddParameter(profile.FormatTags.ToJson());
updateProfileCmd.AddParameter(profile.Id);
@@ -119,7 +127,7 @@ private List GetFormats()
using (var getProfilesCmd = _connection.CreateCommand())
{
getProfilesCmd.Transaction = _transaction;
- getProfilesCmd.CommandText = @"SELECT Id, Name, FormatTags FROM CustomFormats";
+ getProfilesCmd.CommandText = @"SELECT ""Id"", ""Name"", ""FormatTags"" FROM ""CustomFormats""";
using (var profileReader = getProfilesCmd.ExecuteReader())
{
diff --git a/src/NzbDrone.Core/Datastore/Migration/151_add_tags_to_net_import.cs b/src/NzbDrone.Core/Datastore/Migration/151_add_tags_to_net_import.cs
index 69e42c536..0af3ab09d 100644
--- a/src/NzbDrone.Core/Datastore/Migration/151_add_tags_to_net_import.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/151_add_tags_to_net_import.cs
@@ -11,7 +11,7 @@ protected override void MainDbUpgrade()
Alter.Table("NetImport")
.AddColumn("Tags").AsString().Nullable();
- Execute.Sql("UPDATE NetImport SET Tags = '[]'");
+ Execute.Sql("UPDATE \"NetImport\" SET \"Tags\" = '[]'");
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/153_indexer_client_status_search_changes.cs b/src/NzbDrone.Core/Datastore/Migration/153_indexer_client_status_search_changes.cs
index 74cb33345..c03aa6ca0 100644
--- a/src/NzbDrone.Core/Datastore/Migration/153_indexer_client_status_search_changes.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/153_indexer_client_status_search_changes.cs
@@ -21,7 +21,7 @@ protected override void MainDbUpgrade()
Rename.Column("EnableSearch").OnTable("Indexers").To("EnableAutomaticSearch");
Alter.Table("Indexers").AddColumn("EnableInteractiveSearch").AsBoolean().Nullable();
- Execute.Sql("UPDATE Indexers SET EnableInteractiveSearch = EnableAutomaticSearch");
+ Execute.Sql("UPDATE \"Indexers\" SET \"EnableInteractiveSearch\" = \"EnableAutomaticSearch\"");
Alter.Table("Indexers").AlterColumn("EnableInteractiveSearch").AsBoolean().NotNullable();
diff --git a/src/NzbDrone.Core/Datastore/Migration/154_add_language_to_file_history_blacklist.cs b/src/NzbDrone.Core/Datastore/Migration/154_add_language_to_file_history_blacklist.cs
index fda7fdaec..499d587d0 100644
--- a/src/NzbDrone.Core/Datastore/Migration/154_add_language_to_file_history_blacklist.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/154_add_language_to_file_history_blacklist.cs
@@ -41,7 +41,7 @@ private void UpdateLanguage(IDbConnection conn, IDbTransaction tran)
using (IDbCommand getProfileCmd = conn.CreateCommand())
{
getProfileCmd.Transaction = tran;
- getProfileCmd.CommandText = "SELECT Id, Language FROM Profiles";
+ getProfileCmd.CommandText = "SELECT \"Id\", \"Language\" FROM \"Profiles\"";
IDataReader profilesReader = getProfileCmd.ExecuteReader();
while (profilesReader.Read())
@@ -59,6 +59,8 @@ private void UpdateLanguage(IDbConnection conn, IDbTransaction tran)
profileLanguages[profileId] = movieLanguage;
}
+
+ profilesReader.Close();
}
var movieLanguages = new Dictionary();
@@ -66,7 +68,7 @@ private void UpdateLanguage(IDbConnection conn, IDbTransaction tran)
using (IDbCommand getSeriesCmd = conn.CreateCommand())
{
getSeriesCmd.Transaction = tran;
- getSeriesCmd.CommandText = @"SELECT Id, ProfileId FROM Movies";
+ getSeriesCmd.CommandText = @"SELECT ""Id"", ""ProfileId"" FROM ""Movies""";
using (IDataReader moviesReader = getSeriesCmd.ExecuteReader())
{
while (moviesReader.Read())
@@ -76,6 +78,8 @@ private void UpdateLanguage(IDbConnection conn, IDbTransaction tran)
movieLanguages[movieId] = profileLanguages.GetValueOrDefault(movieProfileId, Language.English.Id);
}
+
+ moviesReader.Close();
}
}
@@ -85,7 +89,7 @@ private void UpdateLanguage(IDbConnection conn, IDbTransaction tran)
using (IDbCommand getSeriesCmd = conn.CreateCommand())
{
getSeriesCmd.Transaction = tran;
- getSeriesCmd.CommandText = @"SELECT Id, MovieId, SceneName, MediaInfo FROM MovieFiles";
+ getSeriesCmd.CommandText = @"SELECT ""Id"", ""MovieId"", ""SceneName"", ""MediaInfo"" FROM ""MovieFiles""";
using (IDataReader movieFilesReader = getSeriesCmd.ExecuteReader())
{
while (movieFilesReader.Read())
@@ -125,6 +129,8 @@ private void UpdateLanguage(IDbConnection conn, IDbTransaction tran)
movieFileLanguages[movieFileId] = languages;
}
+
+ movieFilesReader.Close();
}
}
@@ -133,7 +139,7 @@ private void UpdateLanguage(IDbConnection conn, IDbTransaction tran)
using (IDbCommand getSeriesCmd = conn.CreateCommand())
{
getSeriesCmd.Transaction = tran;
- getSeriesCmd.CommandText = @"SELECT Id, SourceTitle, MovieId FROM History";
+ getSeriesCmd.CommandText = @"SELECT ""Id"", ""SourceTitle"", ""MovieId"" FROM ""History""";
using (IDataReader historyReader = getSeriesCmd.ExecuteReader())
{
while (historyReader.Read())
@@ -160,6 +166,8 @@ private void UpdateLanguage(IDbConnection conn, IDbTransaction tran)
historyLanguages[historyId] = languages;
}
+
+ historyReader.Close();
}
}
@@ -168,7 +176,7 @@ private void UpdateLanguage(IDbConnection conn, IDbTransaction tran)
using (IDbCommand getSeriesCmd = conn.CreateCommand())
{
getSeriesCmd.Transaction = tran;
- getSeriesCmd.CommandText = @"SELECT Id, SourceTitle, MovieId FROM Blacklist";
+ getSeriesCmd.CommandText = @"SELECT ""Id"", ""SourceTitle"", ""MovieId"" FROM ""Blacklist""";
using (IDataReader blacklistReader = getSeriesCmd.ExecuteReader())
{
while (blacklistReader.Read())
@@ -190,6 +198,8 @@ private void UpdateLanguage(IDbConnection conn, IDbTransaction tran)
blacklistLanguages[blacklistId] = languages;
}
+
+ blacklistReader.Close();
}
}
@@ -202,7 +212,15 @@ private void UpdateLanguage(IDbConnection conn, IDbTransaction tran)
using (IDbCommand updateMovieFilesCmd = conn.CreateCommand())
{
updateMovieFilesCmd.Transaction = tran;
- updateMovieFilesCmd.CommandText = $"UPDATE MovieFiles SET Languages = ? WHERE Id IN ({movieFileIds})";
+ if (conn.GetType().FullName == "Npgsql.NpgsqlConnection")
+ {
+ updateMovieFilesCmd.CommandText = $"UPDATE \"MovieFiles\" SET \"Languages\" = $1 WHERE \"Id\" IN ({movieFileIds})";
+ }
+ else
+ {
+ updateMovieFilesCmd.CommandText = $"UPDATE \"MovieFiles\" SET \"Languages\" = ? WHERE \"Id\" IN ({movieFileIds})";
+ }
+
var param = updateMovieFilesCmd.CreateParameter();
languageConverter.SetValue(param, languages);
updateMovieFilesCmd.Parameters.Add(param);
@@ -220,7 +238,15 @@ private void UpdateLanguage(IDbConnection conn, IDbTransaction tran)
using (IDbCommand updateHistoryCmd = conn.CreateCommand())
{
updateHistoryCmd.Transaction = tran;
- updateHistoryCmd.CommandText = $"UPDATE History SET Languages = ? WHERE Id IN ({historyIds})";
+ if (conn.GetType().FullName == "Npgsql.NpgsqlConnection")
+ {
+ updateHistoryCmd.CommandText = $"UPDATE \"History\" SET \"Languages\" = $1 WHERE \"Id\" IN ({historyIds})";
+ }
+ else
+ {
+ updateHistoryCmd.CommandText = $"UPDATE \"History\" SET \"Languages\" = ? WHERE \"Id\" IN ({historyIds})";
+ }
+
var param = updateHistoryCmd.CreateParameter();
languageConverter.SetValue(param, languages);
updateHistoryCmd.Parameters.Add(param);
@@ -238,7 +264,15 @@ private void UpdateLanguage(IDbConnection conn, IDbTransaction tran)
using (IDbCommand updateBlacklistCmd = conn.CreateCommand())
{
updateBlacklistCmd.Transaction = tran;
- updateBlacklistCmd.CommandText = $"UPDATE Blacklist SET Languages = ? WHERE Id IN ({blacklistIds})";
+ if (conn.GetType().FullName == "Npgsql.NpgsqlConnection")
+ {
+ updateBlacklistCmd.CommandText = $"UPDATE \"Blacklist\" SET \"Languages\" = $1 WHERE \"Id\" IN ({blacklistIds})";
+ }
+ else
+ {
+ updateBlacklistCmd.CommandText = $"UPDATE \"Blacklist\" SET \"Languages\" = ? WHERE \"Id\" IN ({blacklistIds})";
+ }
+
var param = updateBlacklistCmd.CreateParameter();
languageConverter.SetValue(param, languages);
updateBlacklistCmd.Parameters.Add(param);
diff --git a/src/NzbDrone.Core/Datastore/Migration/155_add_update_allowed_quality_profile.cs b/src/NzbDrone.Core/Datastore/Migration/155_add_update_allowed_quality_profile.cs
index 066e234bd..f3af4c6bd 100644
--- a/src/NzbDrone.Core/Datastore/Migration/155_add_update_allowed_quality_profile.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/155_add_update_allowed_quality_profile.cs
@@ -8,7 +8,7 @@ public class add_update_allowed_quality_profile : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
- Alter.Table("Profiles").AddColumn("UpgradeAllowed").AsInt32().Nullable();
+ Alter.Table("Profiles").AddColumn("UpgradeAllowed").AsBoolean().Nullable();
// Set upgrade allowed for existing profiles (default will be false for new profiles)
Update.Table("Profiles").Set(new { UpgradeAllowed = true }).AllRows();
diff --git a/src/NzbDrone.Core/Datastore/Migration/156_add_download_client_priority.cs b/src/NzbDrone.Core/Datastore/Migration/156_add_download_client_priority.cs
index 17533029e..3428406eb 100644
--- a/src/NzbDrone.Core/Datastore/Migration/156_add_download_client_priority.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/156_add_download_client_priority.cs
@@ -1,5 +1,7 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Data;
+using System.Linq;
+using Dapper;
using FluentMigrator;
using NzbDrone.Core.Datastore.Migration.Framework;
@@ -22,37 +24,46 @@ protected override void MainDbUpgrade()
private void InitPriorityForBackwardCompatibility(IDbConnection conn, IDbTransaction tran)
{
- using (var cmd = conn.CreateCommand())
+ var downloadClients = conn.Query($"SELECT \"Id\", \"Implementation\" FROM \"DownloadClients\" WHERE \"Enable\"");
+
+ if (!downloadClients.Any())
{
- cmd.Transaction = tran;
- cmd.CommandText = "SELECT Id, Implementation FROM DownloadClients WHERE Enable = 1";
+ return;
+ }
- using (var reader = cmd.ExecuteReader())
+ var nextUsenet = 1;
+ var nextTorrent = 1;
+
+ foreach (var downloadClient in downloadClients)
+ {
+ var isUsenet = _usenetImplementations.Contains(downloadClient.Implementation);
+ using (var updateCmd = conn.CreateCommand())
{
- int nextUsenet = 1;
- int nextTorrent = 1;
- while (reader.Read())
+ updateCmd.Transaction = tran;
+ if (conn.GetType().FullName == "Npgsql.NpgsqlConnection")
{
- var id = reader.GetInt32(0);
- var implName = reader.GetString(1);
-
- var isUsenet = _usenetImplementations.Contains(implName);
-
- using (var updateCmd = conn.CreateCommand())
- {
- updateCmd.Transaction = tran;
- updateCmd.CommandText = "UPDATE DownloadClients SET Priority = ? WHERE Id = ?";
- updateCmd.AddParameter(isUsenet ? nextUsenet++ : nextTorrent++);
- updateCmd.AddParameter(id);
-
- updateCmd.ExecuteNonQuery();
- }
+ updateCmd.CommandText = "UPDATE \"DownloadClients\" SET \"Priority\" = $1 WHERE \"Id\" = $2";
}
+ else
+ {
+ updateCmd.CommandText = "UPDATE \"DownloadClients\" SET \"Priority\" = ? WHERE \"Id\" = ?";
+ }
+
+ updateCmd.AddParameter(isUsenet ? nextUsenet++ : nextTorrent++);
+ updateCmd.AddParameter(downloadClient.Id);
+
+ updateCmd.ExecuteNonQuery();
}
}
}
}
+ public class DownloadClients156
+ {
+ public int Id { get; set; }
+ public string Implementation { get; set; }
+ }
+
public class DelugeSettings156
{
public string Host { get; set; }
diff --git a/src/NzbDrone.Core/Datastore/Migration/159_add_webrip_qualities.cs b/src/NzbDrone.Core/Datastore/Migration/159_add_webrip_qualities.cs
index fc5f120e7..277fd99f3 100644
--- a/src/NzbDrone.Core/Datastore/Migration/159_add_webrip_qualities.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/159_add_webrip_qualities.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Data;
using System.Linq;
using FluentMigrator;
@@ -76,8 +76,16 @@ public void Commit()
using (var updateProfileCmd = _connection.CreateCommand())
{
updateProfileCmd.Transaction = _transaction;
- updateProfileCmd.CommandText =
- "UPDATE Profiles SET Name = ?, Cutoff = ?, Items = ? WHERE Id = ?";
+
+ if (_connection.GetType().FullName == "Npgsql.NpgsqlConnection")
+ {
+ updateProfileCmd.CommandText = "UPDATE \"Profiles\" SET \"Name\" = $1, \"Cutoff\" = $2, \"Items\" = $3 WHERE \"Id\" = $4";
+ }
+ else
+ {
+ updateProfileCmd.CommandText = "UPDATE \"Profiles\" SET \"Name\" = ?, \"Cutoff\" = ?, \"Items\" = ? WHERE \"Id\" = ?";
+ }
+
updateProfileCmd.AddParameter(profile.Name);
updateProfileCmd.AddParameter(profile.Cutoff);
updateProfileCmd.AddParameter(profile.Items.ToJson());
@@ -219,7 +227,7 @@ private List GetProfiles()
using (var getProfilesCmd = _connection.CreateCommand())
{
getProfilesCmd.Transaction = _transaction;
- getProfilesCmd.CommandText = @"SELECT Id, Name, Cutoff, Items FROM Profiles";
+ getProfilesCmd.CommandText = @"SELECT ""Id"", ""Name"", ""Cutoff"", ""Items"" FROM ""Profiles""";
using (var profileReader = getProfilesCmd.ExecuteReader())
{
diff --git a/src/NzbDrone.Core/Datastore/Migration/160_health_issue_notification.cs b/src/NzbDrone.Core/Datastore/Migration/160_health_issue_notification.cs
index d41a8bd47..f26c66f88 100644
--- a/src/NzbDrone.Core/Datastore/Migration/160_health_issue_notification.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/160_health_issue_notification.cs
@@ -8,8 +8,8 @@ public class health_issue_notification : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
- Alter.Table("Notifications").AddColumn("OnHealthIssue").AsBoolean().WithDefaultValue(0);
- Alter.Table("Notifications").AddColumn("IncludeHealthWarnings").AsBoolean().WithDefaultValue(0);
+ Alter.Table("Notifications").AddColumn("OnHealthIssue").AsBoolean().WithDefaultValue(false);
+ Alter.Table("Notifications").AddColumn("IncludeHealthWarnings").AsBoolean().WithDefaultValue(false);
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/165_remove_custom_formats_from_quality_model.cs b/src/NzbDrone.Core/Datastore/Migration/165_remove_custom_formats_from_quality_model.cs
index ee80c6dc8..236aac66e 100644
--- a/src/NzbDrone.Core/Datastore/Migration/165_remove_custom_formats_from_quality_model.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/165_remove_custom_formats_from_quality_model.cs
@@ -39,7 +39,7 @@ private void FixPendingReleases(IDbConnection conn, IDbTransaction tran)
{
SqlMapper.AddTypeHandler(new EmbeddedDocumentConverter());
SqlMapper.AddTypeHandler(new EmbeddedDocumentConverter());
- var rows = conn.Query("SELECT Id, ParsedMovieInfo from PendingReleases");
+ var rows = conn.Query("SELECT \"Id\", \"ParsedMovieInfo\" from \"PendingReleases\"");
var newRows = new List();
@@ -76,26 +76,26 @@ private void FixPendingReleases(IDbConnection conn, IDbTransaction tran)
});
}
- var sql = $"UPDATE PendingReleases SET ParsedMovieInfo = @ParsedMovieInfo WHERE Id = @Id";
+ var sql = $"UPDATE \"PendingReleases\" SET \"ParsedMovieInfo\" = @ParsedMovieInfo WHERE \"Id\" = @Id";
conn.Execute(sql, newRows, transaction: tran);
}
private void RemoveCustomFormatFromQuality(IDbConnection conn, IDbTransaction tran, string table)
{
- var rows = conn.Query($"SELECT Id, Quality from {table}");
+ var rows = conn.Query($"SELECT \"Id\", \"Quality\" from \"{table}\"");
- var sql = $"UPDATE {table} SET Quality = @Quality WHERE Id = @Id";
+ var sql = $"UPDATE \"{table}\" SET \"Quality\" = @Quality WHERE \"Id\" = @Id";
conn.Execute(sql, rows, transaction: tran);
}
private void AddIndexerFlagsToBlacklist(IDbConnection conn, IDbTransaction tran)
{
- var blacklists = conn.Query("SELECT Blacklist.Id, Blacklist.TorrentInfoHash, History.Data " +
- "FROM Blacklist " +
- "JOIN History ON Blacklist.MovieId = History.MovieId " +
- "WHERE History.EventType = 1");
+ var blacklists = conn.Query("SELECT \"Blacklist\".\"Id\", \"Blacklist\".\"TorrentInfoHash\", \"History\".\"Data\" " +
+ "FROM \"Blacklist\" " +
+ "JOIN \"History\" ON \"Blacklist\".\"MovieId\" = \"History\".\"MovieId\" " +
+ "WHERE \"History\".\"EventType\" = 1");
var toUpdate = new List();
@@ -117,16 +117,16 @@ private void AddIndexerFlagsToBlacklist(IDbConnection conn, IDbTransaction tran)
}
}
- var updateSql = "UPDATE Blacklist SET IndexerFlags = @IndexerFlags WHERE Id = @Id";
+ var updateSql = "UPDATE \"Blacklist\" SET \"IndexerFlags\" = @IndexerFlags WHERE \"Id\" = @Id";
conn.Execute(updateSql, toUpdate, transaction: tran);
}
private void AddIndexerFlagsToMovieFiles(IDbConnection conn, IDbTransaction tran)
{
- var movieFiles = conn.Query("SELECT MovieFiles.Id, MovieFiles.SceneName, History.SourceTitle, History.Data " +
- "FROM MovieFiles " +
- "JOIN History ON MovieFiles.MovieId = History.MovieId " +
- "WHERE History.EventType = 1");
+ var movieFiles = conn.Query("SELECT \"MovieFiles\".\"Id\", \"MovieFiles\".\"SceneName\", \"History\".\"SourceTitle\", \"History\".\"Data\" " +
+ "FROM \"MovieFiles\" " +
+ "JOIN \"History\" ON \"MovieFiles\".\"MovieId\" = \"History\".\"MovieId\" " +
+ "WHERE \"History\".\"EventType\" = 1");
var toUpdate = new List();
@@ -148,7 +148,7 @@ private void AddIndexerFlagsToMovieFiles(IDbConnection conn, IDbTransaction tran
}
}
- var updateSql = "UPDATE MovieFiles SET IndexerFlags = @IndexerFlags WHERE Id = @Id";
+ var updateSql = "UPDATE \"MovieFiles\" SET \"IndexerFlags\" = @IndexerFlags WHERE \"Id\" = @Id";
conn.Execute(updateSql, toUpdate, transaction: tran);
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/166_fix_tmdb_list_config.cs b/src/NzbDrone.Core/Datastore/Migration/166_fix_tmdb_list_config.cs
index 591d9196b..aa0b3387e 100644
--- a/src/NzbDrone.Core/Datastore/Migration/166_fix_tmdb_list_config.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/166_fix_tmdb_list_config.cs
@@ -40,7 +40,7 @@ protected override void MainDbUpgrade()
private void RenameTMDbListType(IDbConnection conn, IDbTransaction tran)
{
- var rows = conn.Query($"SELECT Id, Implementation, ConfigContract, Settings FROM NetImport WHERE Implementation = 'TMDbPopularImport'");
+ var rows = conn.Query($"SELECT \"Id\", \"Implementation\", \"ConfigContract\", \"Settings\" FROM \"NetImport\" WHERE \"Implementation\" = 'TMDbPopularImport'");
var corrected = new List();
@@ -71,13 +71,13 @@ private void RenameTMDbListType(IDbConnection conn, IDbTransaction tran)
});
}
- var updateSql = "UPDATE NetImport SET Settings = @Settings WHERE Id = @Id";
+ var updateSql = "UPDATE \"NetImport\" SET \"Settings\" = @Settings WHERE \"Id\" = @Id";
conn.Execute(updateSql, corrected, transaction: tran);
}
private void RenameTraktListType(IDbConnection conn, IDbTransaction tran)
{
- var rows = conn.Query($"SELECT Id, Implementation, ConfigContract, Settings FROM NetImport WHERE Implementation = 'TraktImport'");
+ var rows = conn.Query($"SELECT \"Id\", \"Implementation\", \"ConfigContract\", \"Settings\" FROM \"NetImport\" WHERE \"Implementation\" = 'TraktImport'");
var corrected = new List();
@@ -112,13 +112,13 @@ private void RenameTraktListType(IDbConnection conn, IDbTransaction tran)
});
}
- var updateSql = "UPDATE NetImport SET Settings = @Settings WHERE Id = @Id";
+ var updateSql = "UPDATE \"NetImport\" SET \"Settings\" = @Settings WHERE \"Id\" = @Id";
conn.Execute(updateSql, corrected, transaction: tran);
}
private void FixConfig(IDbConnection conn, IDbTransaction tran)
{
- var rows = conn.Query($"SELECT Id, Implementation, ConfigContract, Settings FROM NetImport WHERE Implementation = 'TMDbImport'");
+ var rows = conn.Query($"SELECT \"Id\", \"Implementation\", \"ConfigContract\", \"Settings\" FROM \"NetImport\" WHERE \"Implementation\" = 'TMDbImport'");
var corrected = new List();
@@ -167,7 +167,7 @@ private void FixConfig(IDbConnection conn, IDbTransaction tran)
}
}
- var updateSql = "UPDATE NetImport SET Implementation = @Implementation, ConfigContract = @ConfigContract, Settings = @Settings WHERE Id = @Id";
+ var updateSql = "UPDATE \"NetImport\" SET \"Implementation\" = @Implementation, \"ConfigContract\" = @ConfigContract, \"Settings\" = @Settings WHERE \"Id\" = @Id";
conn.Execute(updateSql, corrected, transaction: tran);
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/167_remove_movie_pathstate.cs b/src/NzbDrone.Core/Datastore/Migration/167_remove_movie_pathstate.cs
index a3f191b48..08532f410 100644
--- a/src/NzbDrone.Core/Datastore/Migration/167_remove_movie_pathstate.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/167_remove_movie_pathstate.cs
@@ -10,7 +10,7 @@ protected override void MainDbUpgrade()
{
Delete.Column("PathState").FromTable("Movies");
- Execute.Sql("DELETE FROM Config WHERE [KEY] IN ('pathsdefaultstatic')");
+ Execute.Sql("DELETE FROM \"Config\" WHERE \"Key\" IN ('pathsdefaultstatic')");
Alter.Table("MovieFiles").AddColumn("OriginalFilePath").AsString().Nullable();
diff --git a/src/NzbDrone.Core/Datastore/Migration/168_custom_format_rework.cs b/src/NzbDrone.Core/Datastore/Migration/168_custom_format_rework.cs
index a91d85202..de1b12c8b 100644
--- a/src/NzbDrone.Core/Datastore/Migration/168_custom_format_rework.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/168_custom_format_rework.cs
@@ -32,7 +32,7 @@ protected override void MainDbUpgrade()
private void UpdateCustomFormats(IDbConnection conn, IDbTransaction tran)
{
- var existing = conn.Query("SELECT Id, Name, FormatTags FROM CustomFormats");
+ var existing = conn.Query("SELECT \"Id\", \"Name\", \"FormatTags\" FROM \"CustomFormats\"");
var updated = new List();
@@ -66,7 +66,7 @@ private void UpdateCustomFormats(IDbConnection conn, IDbTransaction tran)
});
}
- var updateSql = "UPDATE CustomFormats SET Specifications = @Specifications WHERE Id = @Id";
+ var updateSql = "UPDATE \"CustomFormats\" SET \"Specifications\" = @Specifications WHERE \"Id\" = @Id";
conn.Execute(updateSql, updated, transaction: tran);
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/169_custom_format_scores.cs b/src/NzbDrone.Core/Datastore/Migration/169_custom_format_scores.cs
index adcc6e6e4..05332d905 100644
--- a/src/NzbDrone.Core/Datastore/Migration/169_custom_format_scores.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/169_custom_format_scores.cs
@@ -21,7 +21,7 @@ protected override void MainDbUpgrade()
Delete.Column("FormatCutoff").FromTable("Profiles");
- Alter.Table("CustomFormats").AddColumn("IncludeCustomFormatWhenRenaming").AsBoolean().WithDefaultValue(0);
+ Alter.Table("CustomFormats").AddColumn("IncludeCustomFormatWhenRenaming").AsBoolean().WithDefaultValue(false);
}
private void MigrateOrderToScores(IDbConnection conn, IDbTransaction tran)
@@ -29,7 +29,7 @@ private void MigrateOrderToScores(IDbConnection conn, IDbTransaction tran)
SqlMapper.AddTypeHandler(new EmbeddedDocumentConverter>());
SqlMapper.AddTypeHandler(new EmbeddedDocumentConverter>());
- var rows = conn.Query("SELECT Id, FormatCutoff, FormatItems from Profiles", transaction: tran);
+ var rows = conn.Query("SELECT \"Id\", \"FormatCutoff\", \"FormatItems\" from \"Profiles\"", transaction: tran);
var newRows = new List();
foreach (var row in rows)
@@ -125,7 +125,7 @@ private void MigrateOrderToScores(IDbConnection conn, IDbTransaction tran)
});
}
- var sql = $"UPDATE Profiles SET MinFormatScore = @MinFormatScore, CutoffFormatScore = @CutoffFormatScore, FormatItems = @FormatItems WHERE Id = @Id";
+ var sql = $"UPDATE \"Profiles\" SET \"MinFormatScore\" = @MinFormatScore, \"CutoffFormatScore\" = @CutoffFormatScore, \"FormatItems\" = @FormatItems WHERE \"Id\" = @Id";
conn.Execute(sql, newRows, transaction: tran);
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/170_fix_trakt_list_config.cs b/src/NzbDrone.Core/Datastore/Migration/170_fix_trakt_list_config.cs
index e000a8209..267f80840 100644
--- a/src/NzbDrone.Core/Datastore/Migration/170_fix_trakt_list_config.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/170_fix_trakt_list_config.cs
@@ -33,12 +33,12 @@ protected override void MainDbUpgrade()
{
Execute.WithConnection(FixTraktConfig);
Execute.WithConnection(RenameRadarrListType);
- Execute.Sql("DELETE FROM Config WHERE[KEY] IN ('TraktAuthToken', 'TraktRefreshToken', 'TraktTokenExpiry', 'NewTraktAuthToken', 'NewTraktRefreshToken', 'NewTraktTokenExpiry')");
+ Execute.Sql("DELETE FROM \"Config\" WHERE \"Key\" IN ('TraktAuthToken', 'TraktRefreshToken', 'TraktTokenExpiry', 'NewTraktAuthToken', 'NewTraktRefreshToken', 'NewTraktTokenExpiry')");
}
private void RenameRadarrListType(IDbConnection conn, IDbTransaction tran)
{
- var rows = conn.Query($"SELECT Id, Implementation, ConfigContract, Settings FROM NetImport WHERE Implementation = 'RadarrLists'");
+ var rows = conn.Query($"SELECT \"Id\", \"Implementation\", \"ConfigContract\", \"Settings\" FROM \"NetImport\" WHERE \"Implementation\" = 'RadarrLists'");
var corrected = new List();
@@ -52,13 +52,13 @@ private void RenameRadarrListType(IDbConnection conn, IDbTransaction tran)
});
}
- var updateSql = "UPDATE NetImport SET Implementation = @Implementation, ConfigContract = @ConfigContract WHERE Id = @Id";
+ var updateSql = "UPDATE \"NetImport\" SET \"Implementation\" = @Implementation, \"ConfigContract\" = @ConfigContract WHERE \"Id\" = @Id";
conn.Execute(updateSql, corrected, transaction: tran);
}
private void FixTraktConfig(IDbConnection conn, IDbTransaction tran)
{
- var rows = conn.Query($"SELECT Id, Implementation, ConfigContract, Settings FROM NetImport WHERE Implementation = 'TraktImport'");
+ var rows = conn.Query($"SELECT \"Id\", \"Implementation\", \"ConfigContract\", \"Settings\" FROM \"NetImport\" WHERE \"Implementation\" = 'TraktImport'");
var corrected = new List();
@@ -158,7 +158,7 @@ private void FixTraktConfig(IDbConnection conn, IDbTransaction tran)
Console.WriteLine(corrected.ToJson());
- var updateSql = "UPDATE NetImport SET Implementation = @Implementation, ConfigContract = @ConfigContract, Settings = @Settings WHERE Id = @Id";
+ var updateSql = "UPDATE \"NetImport\" SET \"Implementation\" = @Implementation, \"ConfigContract\" = @ConfigContract, \"Settings\" = @Settings WHERE \"Id\" = @Id";
conn.Execute(updateSql, corrected, transaction: tran);
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/171_quality_definition_preferred_size.cs b/src/NzbDrone.Core/Datastore/Migration/171_quality_definition_preferred_size.cs
index f9ac4b7aa..5f3afe280 100644
--- a/src/NzbDrone.Core/Datastore/Migration/171_quality_definition_preferred_size.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/171_quality_definition_preferred_size.cs
@@ -18,7 +18,7 @@ protected override void MainDbUpgrade()
private void UpdateQualityDefinitions(IDbConnection conn, IDbTransaction tran)
{
- var existing = conn.Query("SELECT Id, MaxSize FROM QualityDefinitions");
+ var existing = conn.Query("SELECT \"Id\", \"MaxSize\" FROM \"QualityDefinitions\"");
var updated = new List();
@@ -39,7 +39,7 @@ private void UpdateQualityDefinitions(IDbConnection conn, IDbTransaction tran)
});
}
- var updateSql = "UPDATE QualityDefinitions SET PreferredSize = @PreferredSize WHERE Id = @Id";
+ var updateSql = "UPDATE \"QualityDefinitions\" SET \"PreferredSize\" = @PreferredSize WHERE \"Id\" = @Id";
conn.Execute(updateSql, updated, transaction: tran);
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/172_add_download_history.cs b/src/NzbDrone.Core/Datastore/Migration/172_add_download_history.cs
index def537015..c1c21240e 100644
--- a/src/NzbDrone.Core/Datastore/Migration/172_add_download_history.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/172_add_download_history.cs
@@ -28,7 +28,7 @@ protected override void MainDbUpgrade()
Create.Index().OnTable("DownloadHistory").OnColumn("MovieId");
Create.Index().OnTable("DownloadHistory").OnColumn("DownloadId");
- Execute.WithConnection(InitialImportedDownloadHistory);
+ IfDatabase("sqlite").Execute.WithConnection(InitialImportedDownloadHistory);
}
private static readonly Dictionary EventTypeMap = new Dictionary()
@@ -44,7 +44,7 @@ private void InitialImportedDownloadHistory(IDbConnection conn, IDbTransaction t
using (var cmd = conn.CreateCommand())
{
cmd.Transaction = tran;
- cmd.CommandText = "SELECT MovieId, DownloadId, EventType, SourceTitle, Date, Data FROM History WHERE DownloadId IS NOT NULL AND EventType IN (1, 3, 4, 9) GROUP BY EventType, DownloadId";
+ cmd.CommandText = "SELECT \"MovieId\", \"DownloadId\", \"EventType\", \"SourceTitle\", \"Date\", \"Data\" FROM \"History\" WHERE \"DownloadId\" IS NOT NULL AND \"EventType\" IN (1, 3, 4, 9) GROUP BY \"EventType\", \"DownloadId\"";
using (var reader = cmd.ExecuteReader())
{
@@ -75,7 +75,15 @@ private void InitialImportedDownloadHistory(IDbConnection conn, IDbTransaction t
using (var updateCmd = conn.CreateCommand())
{
updateCmd.Transaction = tran;
- updateCmd.CommandText = @"INSERT INTO DownloadHistory (EventType, MovieId, DownloadId, SourceTitle, Date, Protocol, Data) VALUES (?, ?, ?, ?, ?, ?, ?)";
+ if (conn.GetType().FullName == "Npgsql.NpgsqlConnection")
+ {
+ updateCmd.CommandText = @"INSERT INTO ""DownloadHistory"" (""EventType"", ""MovieId"", ""DownloadId"", ""SourceTitle"", ""Date"", ""Protocol"", ""Data"") VALUES ($1, $2, $3, $4, $5, $6, $7)";
+ }
+ else
+ {
+ updateCmd.CommandText = @"INSERT INTO ""DownloadHistory"" (""EventType"", ""MovieId"", ""DownloadId"", ""SourceTitle"", ""Date"", ""Protocol"", ""Data"") VALUES (?, ?, ?, ?, ?, ?, ?)";
+ }
+
updateCmd.AddParameter(downloadHistoryEventType);
updateCmd.AddParameter(movieId);
updateCmd.AddParameter(downloadId);
diff --git a/src/NzbDrone.Core/Datastore/Migration/174_email_multiple_addresses.cs b/src/NzbDrone.Core/Datastore/Migration/174_email_multiple_addresses.cs
index 06cf0693c..145df36e2 100644
--- a/src/NzbDrone.Core/Datastore/Migration/174_email_multiple_addresses.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/174_email_multiple_addresses.cs
@@ -34,7 +34,7 @@ protected override void MainDbUpgrade()
private void ChangeEmailAddressType(IDbConnection conn, IDbTransaction tran)
{
- var rows = conn.Query($"SELECT Id, Settings FROM Notifications WHERE Implementation = 'Email'");
+ var rows = conn.Query($"SELECT \"Id\", \"Settings\" FROM \"Notifications\" WHERE \"Implementation\" = 'Email'");
var corrected = new List();
@@ -62,7 +62,7 @@ private void ChangeEmailAddressType(IDbConnection conn, IDbTransaction tran)
});
}
- var updateSql = "UPDATE Notifications SET Settings = @Settings WHERE Id = @Id";
+ var updateSql = "UPDATE \"Notifications\" SET \"Settings\" = @Settings WHERE \"Id\" = @Id";
conn.Execute(updateSql, corrected, transaction: tran);
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/175_remove_chown_and_folderchmod_config.cs b/src/NzbDrone.Core/Datastore/Migration/175_remove_chown_and_folderchmod_config.cs
index 9e8f44aa3..2764d59a3 100644
--- a/src/NzbDrone.Core/Datastore/Migration/175_remove_chown_and_folderchmod_config.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/175_remove_chown_and_folderchmod_config.cs
@@ -8,7 +8,7 @@ public class remove_chown_and_folderchmod_config : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
- Execute.Sql("DELETE FROM config WHERE Key IN ('folderchmod', 'chownuser', 'parsingleniency')");
+ Execute.Sql("DELETE FROM \"Config\" WHERE \"Key\" IN ('folderchmod', 'chownuser', 'parsingleniency')");
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/177_language_improvements.cs b/src/NzbDrone.Core/Datastore/Migration/177_language_improvements.cs
index 481777acf..ecd7639f0 100644
--- a/src/NzbDrone.Core/Datastore/Migration/177_language_improvements.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/177_language_improvements.cs
@@ -41,18 +41,27 @@ protected override void MainDbUpgrade()
Delete.Column("PhysicalReleaseNote").FromTable("Movies");
Delete.Column("SecondaryYearSourceId").FromTable("Movies");
- Alter.Table("NamingConfig").AddColumn("RenameMovies").AsBoolean().WithDefaultValue(0);
- Execute.Sql("UPDATE NamingConfig SET RenameMovies=RenameEpisodes");
+ Alter.Table("NamingConfig").AddColumn("RenameMovies").AsBoolean().WithDefaultValue(false);
+ Execute.Sql("UPDATE \"NamingConfig\" SET \"RenameMovies\"=\"RenameEpisodes\"");
Delete.Column("RenameEpisodes").FromTable("NamingConfig");
//Manual SQL, Fluent Migrator doesn't support multi-column unique contraint on table creation, SQLite doesn't support adding it after creation
- Execute.Sql("CREATE TABLE MovieTranslations(" +
- "Id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " +
- "MovieId INTEGER NOT NULL, " +
- "Title TEXT, " +
- "CleanTitle TEXT, " +
- "Overview TEXT, " +
- "Language INTEGER NOT NULL, " +
+ IfDatabase("sqlite").Execute.Sql("CREATE TABLE \"MovieTranslations\"(" +
+ "\"Id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " +
+ "\"MovieId\" INTEGER NOT NULL, " +
+ "\"Title\" TEXT, " +
+ "\"CleanTitle\" TEXT, " +
+ "\"Overview\" TEXT, " +
+ "\"Language\" INTEGER NOT NULL, " +
+ "Unique(\"MovieId\", \"Language\"));");
+
+ IfDatabase("postgres").Execute.Sql("CREATE TABLE \"MovieTranslations\"(" +
+ "\"Id\" SERIAL PRIMARY KEY , " +
+ "\"MovieId\" INTEGER NOT NULL, " +
+ "\"Title\" TEXT, " +
+ "\"CleanTitle\" TEXT, " +
+ "\"Overview\" TEXT, " +
+ "\"Language\" INTEGER NOT NULL, " +
"Unique(\"MovieId\", \"Language\"));");
// Prevent failure if two movies have same alt titles
@@ -73,7 +82,7 @@ protected override void MainDbUpgrade()
private void FixLanguagesMoveFile(IDbConnection conn, IDbTransaction tran)
{
- var rows = conn.Query($"SELECT Id, Languages FROM MovieFiles");
+ var rows = conn.Query($"SELECT \"Id\", \"Languages\" FROM \"MovieFiles\"");
var corrected = new List();
@@ -90,13 +99,13 @@ private void FixLanguagesMoveFile(IDbConnection conn, IDbTransaction tran)
});
}
- var updateSql = "UPDATE MovieFiles SET Languages = @Languages WHERE Id = @Id";
+ var updateSql = "UPDATE \"MovieFiles\" SET \"Languages\" = @Languages WHERE \"Id\" = @Id";
conn.Execute(updateSql, corrected, transaction: tran);
}
private void FixLanguagesHistory(IDbConnection conn, IDbTransaction tran)
{
- var rows = conn.Query($"SELECT Id, Languages FROM History");
+ var rows = conn.Query($"SELECT \"Id\", \"Languages\" FROM \"History\"");
var corrected = new List();
@@ -113,7 +122,7 @@ private void FixLanguagesHistory(IDbConnection conn, IDbTransaction tran)
});
}
- var updateSql = "UPDATE History SET Languages = @Languages WHERE Id = @Id";
+ var updateSql = "UPDATE \"History\" SET \"Languages\" = @Languages WHERE \"Id\" = @Id";
conn.Execute(updateSql, corrected, transaction: tran);
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/178_new_list_server.cs b/src/NzbDrone.Core/Datastore/Migration/178_new_list_server.cs
index 9aa3179ad..5a201b592 100644
--- a/src/NzbDrone.Core/Datastore/Migration/178_new_list_server.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/178_new_list_server.cs
@@ -41,7 +41,7 @@ protected override void MainDbUpgrade()
private void FixRadarrLists(IDbConnection conn, IDbTransaction tran)
{
- var rows = conn.Query($"SELECT * FROM NetImport WHERE ConfigContract = 'RadarrListSettings'");
+ var rows = conn.Query($"SELECT * FROM \"NetImport\" WHERE \"ConfigContract\" = 'RadarrListSettings'");
var radarrUrls = new List
{
@@ -108,17 +108,17 @@ private void FixRadarrLists(IDbConnection conn, IDbTransaction tran)
row.Settings = JsonSerializer.Serialize(newSettings, _serializerSettings);
}
- var updateSql = "UPDATE NetImport SET Implementation = @Implementation, " +
- "ConfigContract = @ConfigContract, " +
- "Settings = @Settings " +
- "WHERE Id = @Id";
+ var updateSql = "UPDATE \"NetImport\" SET \"Implementation\" = @Implementation, " +
+ "\"ConfigContract\" = @ConfigContract, " +
+ "\"Settings\" = @Settings " +
+ "WHERE \"Id\" = @Id";
conn.Execute(updateSql, rows, transaction: tran);
}
private void FixStevenLuLists(IDbConnection conn, IDbTransaction tran)
{
- var rows = conn.Query($"SELECT * FROM NetImport WHERE ConfigContract = 'StevenLuSettings'");
+ var rows = conn.Query($"SELECT * FROM \"NetImport\" WHERE \"ConfigContract\" = 'StevenLuSettings'");
var updated = new List();
@@ -160,10 +160,10 @@ private void FixStevenLuLists(IDbConnection conn, IDbTransaction tran)
}
}
- var updateSql = "UPDATE NetImport SET Implementation = @Implementation, " +
- "ConfigContract = @ConfigContract, " +
- "Settings = @Settings " +
- "WHERE Id = @Id";
+ var updateSql = "UPDATE \"NetImport\" SET \"Implementation\" = @Implementation, " +
+ "\"ConfigContract\" = @ConfigContract, " +
+ "\"Settings\" = @Settings " +
+ "WHERE \"Id\" = @Id";
conn.Execute(updateSql, updated, transaction: tran);
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/180_fix_invalid_profile_references.cs b/src/NzbDrone.Core/Datastore/Migration/180_fix_invalid_profile_references.cs
index 3826d79ed..28d2650eb 100644
--- a/src/NzbDrone.Core/Datastore/Migration/180_fix_invalid_profile_references.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/180_fix_invalid_profile_references.cs
@@ -21,8 +21,8 @@ protected override void MainDbUpgrade()
private void FixMovies(IDbConnection conn, IDbTransaction tran)
{
var profiles = GetProfileIds(conn);
- var movieRows = conn.Query($"SELECT Id, ProfileId FROM Movies");
- var listRows = conn.Query($"SELECT Id, ProfileId FROM NetImport");
+ var movieRows = conn.Query($"SELECT \"Id\", \"ProfileId\" FROM \"Movies\"");
+ var listRows = conn.Query($"SELECT \"Id\", \"ProfileId\" FROM \"NetImport\"");
// Only process if there are lists or movies existing in the DB
if (movieRows.Any() || listRows.Any())
@@ -54,18 +54,18 @@ private void FixMovies(IDbConnection conn, IDbTransaction tran)
}
//Correct any Movies that reference profiles that are null
- var sql = $"UPDATE Movies SET ProfileId = {mostCommonProfileId} WHERE Id IN(SELECT Movies.Id FROM Movies LEFT OUTER JOIN Profiles ON Movies.ProfileId = Profiles.Id WHERE Profiles.Id IS NULL)";
+ var sql = $"UPDATE \"Movies\" SET \"ProfileId\" = {mostCommonProfileId} WHERE \"Id\" IN(SELECT \"Movies\".\"Id\" FROM \"Movies\" LEFT OUTER JOIN \"Profiles\" ON \"Movies\".\"ProfileId\" = \"Profiles\".\"Id\" WHERE \"Profiles\".\"Id\" IS NULL)";
conn.Execute(sql, transaction: tran);
//Correct any Lists that reference profiles that are null
- sql = $"UPDATE NetImport SET ProfileId = {mostCommonProfileId} WHERE Id IN(SELECT NetImport.Id FROM NetImport LEFT OUTER JOIN Profiles ON NetImport.ProfileId = Profiles.Id WHERE Profiles.Id IS NULL)";
+ sql = $"UPDATE \"NetImport\" SET \"ProfileId\" = {mostCommonProfileId} WHERE \"Id\" IN(SELECT \"NetImport\".\"Id\" FROM \"NetImport\" LEFT OUTER JOIN \"Profiles\" ON \"NetImport\".\"ProfileId\" = \"Profiles\".\"Id\" WHERE \"Profiles\".\"Id\" IS NULL)";
conn.Execute(sql, transaction: tran);
}
}
private List GetProfileIds(IDbConnection conn)
{
- return conn.Query("SELECT Id From Profiles").Select(p => p.Id).ToList();
+ return conn.Query("SELECT \"Id\" From \"Profiles\"").Select(p => p.Id).ToList();
}
private void InsertDefaultQualityProfiles(IDbConnection conn, IDbTransaction tran)
@@ -80,7 +80,16 @@ private void InsertDefaultQualityProfiles(IDbConnection conn, IDbTransaction tra
using (IDbCommand insertNewLanguageProfileCmd = conn.CreateCommand())
{
insertNewLanguageProfileCmd.Transaction = tran;
- insertNewLanguageProfileCmd.CommandText = "INSERT INTO Profiles (Id, Name, Cutoff, Items, Language, FormatItems, MinFormatScore, CutoffFormatScore, UpgradeAllowed) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
+
+ if (conn.GetType().FullName == "Npgsql.NpgsqlConnection")
+ {
+ insertNewLanguageProfileCmd.CommandText = "INSERT INTO \"Profiles\" (\"Id\", \"Name\", \"Cutoff\", \"Items\", \"Language\", \"FormatItems\", \"MinFormatScore\", \"CutoffFormatScore\", \"UpgradeAllowed\") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)";
+ }
+ else
+ {
+ insertNewLanguageProfileCmd.CommandText = "INSERT INTO \"Profiles\" (\"Id\", \"Name\", \"Cutoff\", \"Items\", \"Language\", \"FormatItems\", \"MinFormatScore\", \"CutoffFormatScore\", \"UpgradeAllowed\") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
+ }
+
insertNewLanguageProfileCmd.AddParameter(profileId);
insertNewLanguageProfileCmd.AddParameter(profile.Name);
insertNewLanguageProfileCmd.AddParameter(profile.Cutoff);
@@ -111,7 +120,7 @@ private List GetDefaultQualityProfiles(IDbConnection conn)
var profiles = new List();
//Grab custom formats if any exist and add them to the new profiles
- var formats = conn.Query($"SELECT Id FROM CustomFormats").ToList();
+ var formats = conn.Query($"SELECT \"Id\" FROM \"CustomFormats\"").ToList();
profiles.Add(GetDefaultProfile("Any",
formats,
@@ -258,7 +267,7 @@ private QualityProfile180 GetDefaultProfile(string name, List f
Language = Language.English,
MinFormatScore = 0,
CutoffFormatScore = 0,
- UpgradeAllowed = 0,
+ UpgradeAllowed = false,
FormatItems = formatItems
};
@@ -278,7 +287,7 @@ private class QualityProfile180
public int Cutoff { get; set; }
public int MinFormatScore { get; set; }
public int CutoffFormatScore { get; set; }
- public int UpgradeAllowed { get; set; }
+ public bool UpgradeAllowed { get; set; }
public Language Language { get; set; }
public List FormatItems { get; set; }
public List Items { get; set; }
diff --git a/src/NzbDrone.Core/Datastore/Migration/181_list_movies_table.cs b/src/NzbDrone.Core/Datastore/Migration/181_list_movies_table.cs
index dbea69bb7..a7866930f 100644
--- a/src/NzbDrone.Core/Datastore/Migration/181_list_movies_table.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/181_list_movies_table.cs
@@ -11,7 +11,7 @@ protected override void MainDbUpgrade()
Rename.Table("NetImport").To("ImportLists");
Rename.Table("NetImportStatus").To("ImportListStatus");
- Execute.Sql("UPDATE Config SET Key = 'importlistsyncinterval' WHERE Key = 'netimportsyncinterval'");
+ Execute.Sql("UPDATE \"Config\" SET \"Key\" = 'importlistsyncinterval' WHERE \"Key\" = 'netimportsyncinterval'");
Alter.Table("ImportLists").AddColumn("SearchOnAdd").AsBoolean().WithDefaultValue(false);
diff --git a/src/NzbDrone.Core/Datastore/Migration/183_download_propers_config.cs b/src/NzbDrone.Core/Datastore/Migration/183_download_propers_config.cs
index 72312ee1d..7ce2bc106 100644
--- a/src/NzbDrone.Core/Datastore/Migration/183_download_propers_config.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/183_download_propers_config.cs
@@ -10,7 +10,7 @@ public class download_propers_config : NzbDroneMigrationBase
protected override void MainDbUpgrade()
{
Execute.WithConnection(SetMetadataFileExtension);
- Execute.Sql("DELETE FROM Config WHERE Key = 'autodownloadpropers'");
+ Execute.Sql("DELETE FROM \"Config\" WHERE \"Key\" = 'autodownloadpropers'");
Delete.Column("PreferredTags").FromTable("Profiles");
}
@@ -19,7 +19,7 @@ private void SetMetadataFileExtension(IDbConnection conn, IDbTransaction tran)
using (var cmd = conn.CreateCommand())
{
cmd.Transaction = tran;
- cmd.CommandText = "SELECT Value FROM Config WHERE Key = 'autodownloadpropers'";
+ cmd.CommandText = "SELECT \"Value\" FROM \"Config\" WHERE \"Key\" = 'autodownloadpropers'";
using (var reader = cmd.ExecuteReader())
{
@@ -31,7 +31,7 @@ private void SetMetadataFileExtension(IDbConnection conn, IDbTransaction tran)
using (var updateCmd = conn.CreateCommand())
{
updateCmd.Transaction = tran;
- updateCmd.CommandText = "INSERT INTO Config (key, value) VALUES ('downloadpropersandrepacks', ?)";
+ updateCmd.CommandText = "INSERT INTO \"Config\" (\"key\", \"value\") VALUES ('downloadpropersandrepacks', ?)";
updateCmd.AddParameter(newValue);
updateCmd.ExecuteNonQuery();
diff --git a/src/NzbDrone.Core/Datastore/Migration/186_fix_tmdb_duplicates.cs b/src/NzbDrone.Core/Datastore/Migration/186_fix_tmdb_duplicates.cs
index 46fd2acf0..70282ee89 100644
--- a/src/NzbDrone.Core/Datastore/Migration/186_fix_tmdb_duplicates.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/186_fix_tmdb_duplicates.cs
@@ -20,7 +20,7 @@ protected override void MainDbUpgrade()
private void FixMovies(IDbConnection conn, IDbTransaction tran)
{
- var movieRows = conn.Query($"SELECT Id, TmdbId, Added, LastInfoSync, MovieFileId FROM Movies");
+ var movieRows = conn.Query($"SELECT \"Id\", \"TmdbId\", \"Added\", \"LastInfoSync\", \"MovieFileId\" FROM \"Movies\"");
// Only process if there are movies existing in the DB
if (movieRows.Any())
@@ -61,7 +61,7 @@ private void FixMovies(IDbConnection conn, IDbTransaction tran)
if (purgeMovies.Count > 0)
{
- var deleteSql = "DELETE FROM Movies WHERE Id = @Id";
+ var deleteSql = "DELETE FROM \"Movies\" WHERE \"Id\" = @Id";
conn.Execute(deleteSql, purgeMovies, transaction: tran);
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/187_swap_filechmod_for_folderchmod.cs b/src/NzbDrone.Core/Datastore/Migration/187_swap_filechmod_for_folderchmod.cs
index a1580efa4..0316a72ea 100644
--- a/src/NzbDrone.Core/Datastore/Migration/187_swap_filechmod_for_folderchmod.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/187_swap_filechmod_for_folderchmod.cs
@@ -20,7 +20,7 @@ private void ConvertFileChmodToFolderChmod(IDbConnection conn, IDbTransaction tr
using (IDbCommand getFileChmodCmd = conn.CreateCommand())
{
getFileChmodCmd.Transaction = tran;
- getFileChmodCmd.CommandText = @"SELECT Value FROM Config WHERE Key = 'filechmod'";
+ getFileChmodCmd.CommandText = @"SELECT ""Value"" FROM ""Config"" WHERE ""Key"" = 'filechmod'";
var fileChmod = getFileChmodCmd.ExecuteScalar() as string;
if (fileChmod != null)
@@ -35,7 +35,7 @@ private void ConvertFileChmodToFolderChmod(IDbConnection conn, IDbTransaction tr
using (IDbCommand insertCmd = conn.CreateCommand())
{
insertCmd.Transaction = tran;
- insertCmd.CommandText = "INSERT INTO Config (Key, Value) VALUES ('chmodfolder', ?)";
+ insertCmd.CommandText = "INSERT INTO \"Config\" (\"Key\", \"Value\") VALUES ('chmodfolder', ?)";
insertCmd.AddParameter(folderChmod);
insertCmd.ExecuteNonQuery();
@@ -45,7 +45,7 @@ private void ConvertFileChmodToFolderChmod(IDbConnection conn, IDbTransaction tr
using (IDbCommand deleteCmd = conn.CreateCommand())
{
deleteCmd.Transaction = tran;
- deleteCmd.CommandText = "DELETE FROM Config WHERE Key = 'filechmod'";
+ deleteCmd.CommandText = "DELETE FROM \"Config\" WHERE \"Key\" = 'filechmod'";
deleteCmd.ExecuteNonQuery();
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/188_mediainfo_channels.cs b/src/NzbDrone.Core/Datastore/Migration/188_mediainfo_channels.cs
index 2efee19f2..1268803a4 100644
--- a/src/NzbDrone.Core/Datastore/Migration/188_mediainfo_channels.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/188_mediainfo_channels.cs
@@ -8,11 +8,12 @@ public class mediainfo_channels : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
- Execute.Sql("UPDATE MovieFiles SET MediaInfo = Replace(MediaInfo, '\"audioChannels\"', '\"audioChannelsContainer\"');");
- Execute.Sql("UPDATE MovieFiles SET MediaInfo = Replace(MediaInfo, '\"audioChannelPositionsText\"', '\"audioChannelPositionsTextContainer\"');");
+ Execute.Sql("UPDATE \"MovieFiles\" SET \"MediaInfo\" = Replace(\"MediaInfo\", '\"audioChannels\"', '\"audioChannelsContainer\"');");
+ Execute.Sql("UPDATE \"MovieFiles\" SET \"MediaInfo\" = Replace(\"MediaInfo\", '\"audioChannelPositionsText\"', '\"audioChannelPositionsTextContainer\"');");
//Change List Interval from Min to Hour
- Execute.Sql("UPDATE Config SET Value = max((Value / 60) + 1, 6) WHERE Key = 'importlistsyncinterval'");
+ IfDatabase("sqlite").Execute.Sql("UPDATE \"Config\" SET \"Value\" = max((\"Value\" / 60) + 1, 6) WHERE \"Key\" = 'importlistsyncinterval'");
+ IfDatabase("postgres").Execute.Sql("UPDATE \"Config\" SET \"Value\" = greatest((\"Value\"::int / 60) + 1, 6) WHERE \"Key\" = 'importlistsyncinterval'");
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/190_update_awesome_hd_link.cs b/src/NzbDrone.Core/Datastore/Migration/190_update_awesome_hd_link.cs
index 9f348c2a2..42029d793 100644
--- a/src/NzbDrone.Core/Datastore/Migration/190_update_awesome_hd_link.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/190_update_awesome_hd_link.cs
@@ -9,8 +9,8 @@ public class update_awesome_hd_link : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
- Execute.Sql("UPDATE Indexers SET Settings = Replace(Settings, 'https://awesome-hd.net', 'https://awesome-hd.club') WHERE Implementation = 'AwesomeHD';");
- Execute.Sql("UPDATE Indexers SET Settings = Replace(Settings, 'https://awesome-hd.me', 'https://awesome-hd.club') WHERE Implementation = 'AwesomeHD';");
+ Execute.Sql("UPDATE \"Indexers\" SET \"Settings\" = Replace(\"Settings\", 'https://awesome-hd.net', 'https://awesome-hd.club') WHERE \"Implementation\" = 'AwesomeHD';");
+ Execute.Sql("UPDATE \"Indexers\" SET \"Settings\" = Replace(\"Settings\", 'https://awesome-hd.me', 'https://awesome-hd.club') WHERE \"Implementation\" = 'AwesomeHD';");
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/192_add_on_delete_to_notifications.cs b/src/NzbDrone.Core/Datastore/Migration/192_add_on_delete_to_notifications.cs
index 3c1f0a252..351402c5d 100644
--- a/src/NzbDrone.Core/Datastore/Migration/192_add_on_delete_to_notifications.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/192_add_on_delete_to_notifications.cs
@@ -9,8 +9,8 @@ public class add_on_delete_to_notifications : NzbDroneMigrationBase
protected override void MainDbUpgrade()
{
Rename.Column("OnDelete").OnTable("Notifications").To("OnMovieDelete");
- Alter.Table("Notifications").AddColumn("OnMovieFileDelete").AsBoolean().WithDefaultValue(0);
- Alter.Table("Notifications").AddColumn("OnMovieFileDeleteForUpgrade").AsBoolean().WithDefaultValue(0);
+ Alter.Table("Notifications").AddColumn("OnMovieFileDelete").AsBoolean().WithDefaultValue(false);
+ Alter.Table("Notifications").AddColumn("OnMovieFileDeleteForUpgrade").AsBoolean().WithDefaultValue(false);
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/194_add_bypass_to_delay_profile.cs b/src/NzbDrone.Core/Datastore/Migration/194_add_bypass_to_delay_profile.cs
index bc38a3e67..a146b0909 100644
--- a/src/NzbDrone.Core/Datastore/Migration/194_add_bypass_to_delay_profile.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/194_add_bypass_to_delay_profile.cs
@@ -11,7 +11,7 @@ protected override void MainDbUpgrade()
Alter.Table("DelayProfiles").AddColumn("BypassIfHighestQuality").AsBoolean().WithDefaultValue(false);
// Set to true for existing Delay Profiles to keep behavior the same.
- Execute.Sql("UPDATE DelayProfiles SET BypassIfHighestQuality = 1;");
+ Update.Table("DelayProfiles").Set(new { BypassIfHighestQuality = true }).AllRows();
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/195_update_notifiarr.cs b/src/NzbDrone.Core/Datastore/Migration/195_update_notifiarr.cs
index b2c455271..a8cccfd6a 100644
--- a/src/NzbDrone.Core/Datastore/Migration/195_update_notifiarr.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/195_update_notifiarr.cs
@@ -9,7 +9,7 @@ public class update_notifiarr : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
- Execute.Sql("UPDATE Notifications SET Implementation = Replace(Implementation, 'DiscordNotifier', 'Notifiarr'),ConfigContract = Replace(ConfigContract, 'DiscordNotifierSettings', 'NotifiarrSettings') WHERE Implementation = 'DiscordNotifier';");
+ Execute.Sql("UPDATE \"Notifications\" SET \"Implementation\" = Replace(\"Implementation\", 'DiscordNotifier', 'Notifiarr'),\"ConfigContract\" = Replace(\"ConfigContract\", 'DiscordNotifierSettings', 'NotifiarrSettings') WHERE \"Implementation\" = 'DiscordNotifier';");
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/196_legacy_mediainfo_hdr.cs b/src/NzbDrone.Core/Datastore/Migration/196_legacy_mediainfo_hdr.cs
index 0d3a7fd45..68c27368f 100644
--- a/src/NzbDrone.Core/Datastore/Migration/196_legacy_mediainfo_hdr.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/196_legacy_mediainfo_hdr.cs
@@ -8,7 +8,7 @@ public class legacy_mediainfo_hdr : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
- Execute.Sql("UPDATE NamingConfig SET StandardMovieFormat = Replace(StandardMovieFormat, '{MediaInfo HDR}', '{MediaInfo VideoDynamicRange}');");
+ Execute.Sql("UPDATE \"NamingConfig\" SET \"StandardMovieFormat\" = Replace(\"StandardMovieFormat\", '{MediaInfo HDR}', '{MediaInfo VideoDynamicRange}');");
}
}
}
diff --git a/src/NzbDrone.Core/Datastore/Migration/199_mediainfo_to_ffmpeg.cs b/src/NzbDrone.Core/Datastore/Migration/199_mediainfo_to_ffmpeg.cs
index 1924e0de7..345c948fb 100644
--- a/src/NzbDrone.Core/Datastore/Migration/199_mediainfo_to_ffmpeg.cs
+++ b/src/NzbDrone.Core/Datastore/Migration/199_mediainfo_to_ffmpeg.cs
@@ -47,7 +47,7 @@ protected override void MainDbUpgrade()
private void MigrateToFfprobe(IDbConnection conn, IDbTransaction tran)
{
- var existing = conn.Query("SELECT Id, MediaInfo, SceneName FROM MovieFiles");
+ var existing = conn.Query