From dedf42ac8785410f9e585fe3c83d8b9e554f47a4 Mon Sep 17 00:00:00 2001 From: tidusjar Date: Fri, 3 Nov 2017 00:57:09 +0000 Subject: [PATCH] Should fix #1663 NOTE: DATABASE NEEDS TO BE DELETED AND RECREATED --- .../Rule/Search/PlexAvailabilityRuleTests.cs | 4 +- src/Ombi.Core/Engine/MovieSearchEngine.cs | 2 +- src/Ombi.Core/Engine/TvSearchEngine.cs | 3 +- .../Models/Search/SearchMovieViewModel.cs | 1 - .../Models/Search/SearchTvShowViewModel.cs | 1 - .../Models/Search/SearchViewModel.cs | 6 +- .../Rule/Rules/Search/EmbyAvailabilityRule.cs | 2 +- .../Rule/Rules/Search/PlexAvailabilityRule.cs | 61 +- src/Ombi.DependencyInjection/IocExtensions.cs | 6 +- src/Ombi.Helpers/PlexHelper.cs | 119 ++- .../PlexAvailabilityCheckerTests.cs | 8 +- .../Jobs/Plex/PlexAvailabilityChecker.cs | 2 +- .../Jobs/Plex/PlexContentCacher.cs | 55 +- .../Jobs/Plex/PlexEpisodeCacher.cs | 2 +- src/Ombi.Schedule/Jobs/Plex/PlexMediaType.cs | 9 +- src/Ombi.Store/Context/IOmbiContext.cs | 2 +- src/Ombi.Store/Context/OmbiContext.cs | 9 +- src/Ombi.Store/Entities/PlexEpisode.cs | 2 +- .../{PlexContent.cs => PlexServerContent.cs} | 8 +- .../20170914122422_Inital.Designer.cs | 729 ----------------- .../20170928150420_LastLoggedIn.Designer.cs | 731 ----------------- .../Migrations/20170928150420_LastLoggedIn.cs | 25 - .../20171002113357_SonarrCacher.Designer.cs | 747 ----------------- .../Migrations/20171002113357_SonarrCacher.cs | 53 -- .../20171004155149_SonarrEpisodes.Designer.cs | 763 ------------------ .../20171004155149_SonarrEpisodes.cs | 33 - .../20171015200035_CouchPotatoCacher.cs | 31 - ...r.cs => 20171103003202_Inital.Designer.cs} | 71 +- ...422_Inital.cs => 20171103003202_Inital.cs} | 82 +- .../Migrations/OmbiContextModelSnapshot.cs | 67 +- .../Repository/IPlexContentRepository.cs | 10 +- .../Repository/PlexContentRepository.cs | 34 +- .../app/search/moviesearch.component.ts | 2 +- 33 files changed, 386 insertions(+), 3294 deletions(-) rename src/Ombi.Store/Entities/{PlexContent.cs => PlexServerContent.cs} (92%) delete mode 100644 src/Ombi.Store/Migrations/20170914122422_Inital.Designer.cs delete mode 100644 src/Ombi.Store/Migrations/20170928150420_LastLoggedIn.Designer.cs delete mode 100644 src/Ombi.Store/Migrations/20170928150420_LastLoggedIn.cs delete mode 100644 src/Ombi.Store/Migrations/20171002113357_SonarrCacher.Designer.cs delete mode 100644 src/Ombi.Store/Migrations/20171002113357_SonarrCacher.cs delete mode 100644 src/Ombi.Store/Migrations/20171004155149_SonarrEpisodes.Designer.cs delete mode 100644 src/Ombi.Store/Migrations/20171004155149_SonarrEpisodes.cs delete mode 100644 src/Ombi.Store/Migrations/20171015200035_CouchPotatoCacher.cs rename src/Ombi.Store/Migrations/{20171015200035_CouchPotatoCacher.Designer.cs => 20171103003202_Inital.Designer.cs} (97%) rename src/Ombi.Store/Migrations/{20170914122422_Inital.cs => 20171103003202_Inital.cs} (90%) diff --git a/src/Ombi.Core.Tests/Rule/Search/PlexAvailabilityRuleTests.cs b/src/Ombi.Core.Tests/Rule/Search/PlexAvailabilityRuleTests.cs index 1e9067d82..ff80505bb 100644 --- a/src/Ombi.Core.Tests/Rule/Search/PlexAvailabilityRuleTests.cs +++ b/src/Ombi.Core.Tests/Rule/Search/PlexAvailabilityRuleTests.cs @@ -23,7 +23,7 @@ namespace Ombi.Core.Tests.Rule.Search [Test] public async Task ShouldBe_Available_WhenFoundInPlex() { - ContextMock.Setup(x => x.Get(It.IsAny())).ReturnsAsync(new PlexContent + ContextMock.Setup(x => x.Get(It.IsAny())).ReturnsAsync(new PlexServerContent { Url = "TestUrl" }); @@ -38,7 +38,7 @@ namespace Ombi.Core.Tests.Rule.Search [Test] public async Task ShouldBe_NotAvailable_WhenNotFoundInPlex() { - ContextMock.Setup(x => x.Get(It.IsAny())).Returns(Task.FromResult(default(PlexContent))); + ContextMock.Setup(x => x.Get(It.IsAny())).Returns(Task.FromResult(default(PlexServerContent))); var search = new SearchMovieViewModel(); var result = await Rule.Execute(search); diff --git a/src/Ombi.Core/Engine/MovieSearchEngine.cs b/src/Ombi.Core/Engine/MovieSearchEngine.cs index da64e99b6..64a05a2d5 100644 --- a/src/Ombi.Core/Engine/MovieSearchEngine.cs +++ b/src/Ombi.Core/Engine/MovieSearchEngine.cs @@ -163,7 +163,7 @@ namespace Ombi.Core.Engine // But we only pass down the SearchViewModel that doesn't contain this // So set the ImdbId to viewMovie.Id and then set it back afterwards var oldId = viewMovie.Id; - viewMovie.CustomId = viewMovie.ImdbId ?? string.Empty; + viewMovie.TheMovieDbId = viewMovie.TheMovieDbId; await RunSearchRules(viewMovie); diff --git a/src/Ombi.Core/Engine/TvSearchEngine.cs b/src/Ombi.Core/Engine/TvSearchEngine.cs index 8cfae9506..a5fb61426 100644 --- a/src/Ombi.Core/Engine/TvSearchEngine.cs +++ b/src/Ombi.Core/Engine/TvSearchEngine.cs @@ -194,7 +194,8 @@ namespace Ombi.Core.Engine private async Task ProcessResult(SearchTvShowViewModel item) { - item.CustomId = item.Id.ToString(); + item.TheTvDbId = item.Id.ToString(); + await RunSearchRules(item); return item; diff --git a/src/Ombi.Core/Models/Search/SearchMovieViewModel.cs b/src/Ombi.Core/Models/Search/SearchMovieViewModel.cs index 42952cd73..869a2c4b7 100644 --- a/src/Ombi.Core/Models/Search/SearchMovieViewModel.cs +++ b/src/Ombi.Core/Models/Search/SearchMovieViewModel.cs @@ -22,7 +22,6 @@ namespace Ombi.Core.Models.Search public bool AlreadyInCp { get; set; } public string Trailer { get; set; } public string Homepage { get; set; } - public string ImdbId { get; set; } public int RootPathOverride { get; set; } public int QualityOverride { get; set; } public override RequestType Type => RequestType.Movie; diff --git a/src/Ombi.Core/Models/Search/SearchTvShowViewModel.cs b/src/Ombi.Core/Models/Search/SearchTvShowViewModel.cs index 46a79aaf8..a91d75d65 100644 --- a/src/Ombi.Core/Models/Search/SearchTvShowViewModel.cs +++ b/src/Ombi.Core/Models/Search/SearchTvShowViewModel.cs @@ -22,7 +22,6 @@ namespace Ombi.Core.Models.Search public string AirsDayOfWeek { get; set; } public string AirsTime { get; set; } public string Rating { get; set; } - public string ImdbId { get; set; } public int SiteRating { get; set; } /// diff --git a/src/Ombi.Core/Models/Search/SearchViewModel.cs b/src/Ombi.Core/Models/Search/SearchViewModel.cs index 2771d1be8..8c8d49aff 100644 --- a/src/Ombi.Core/Models/Search/SearchViewModel.cs +++ b/src/Ombi.Core/Models/Search/SearchViewModel.cs @@ -21,6 +21,10 @@ namespace Ombi.Core.Models.Search /// The custom identifier. /// [NotMapped] - public string CustomId { get; set; } + public string ImdbId { get; set; } + [NotMapped] + public string TheTvDbId { get; set; } + [NotMapped] + public string TheMovieDbId { get; set; } } } \ No newline at end of file diff --git a/src/Ombi.Core/Rule/Rules/Search/EmbyAvailabilityRule.cs b/src/Ombi.Core/Rule/Rules/Search/EmbyAvailabilityRule.cs index 0bd98da2b..bac7af2b8 100644 --- a/src/Ombi.Core/Rule/Rules/Search/EmbyAvailabilityRule.cs +++ b/src/Ombi.Core/Rule/Rules/Search/EmbyAvailabilityRule.cs @@ -19,7 +19,7 @@ namespace Ombi.Core.Rule.Rules.Search public async Task Execute(SearchViewModel obj) { - var item = await EmbyContentRepository.Get(obj.CustomId); + var item = await EmbyContentRepository.Get(obj.ImdbId); if (item != null) { obj.Available = true; diff --git a/src/Ombi.Core/Rule/Rules/Search/PlexAvailabilityRule.cs b/src/Ombi.Core/Rule/Rules/Search/PlexAvailabilityRule.cs index f55316f2d..016a2817c 100644 --- a/src/Ombi.Core/Rule/Rules/Search/PlexAvailabilityRule.cs +++ b/src/Ombi.Core/Rule/Rules/Search/PlexAvailabilityRule.cs @@ -3,6 +3,7 @@ using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Ombi.Core.Models.Search; using Ombi.Core.Rule.Interfaces; +using Ombi.Helpers; using Ombi.Store.Entities; using Ombi.Store.Repository; @@ -19,7 +20,42 @@ namespace Ombi.Core.Rule.Rules.Search public async Task Execute(SearchViewModel obj) { - var item = await PlexContentRepository.Get(obj.CustomId); + PlexServerContent item = null; + var useImdb = false; + var useTheMovieDb = false; + var useTvDb = false; + if (obj.ImdbId.HasValue()) + { + item = await PlexContentRepository.Get(obj.ImdbId); + if (item != null) + { + useImdb = true; + } + } + if (item == null) + { + if (obj.TheMovieDbId.HasValue()) + { + item = await PlexContentRepository.Get(obj.TheMovieDbId); + if (item != null) + { + useTheMovieDb = true; + } + } + + if (item == null) + { + if (obj.TheTvDbId.HasValue()) + { + item = await PlexContentRepository.Get(obj.TheTvDbId); + if (item != null) + { + useTvDb = true; + } + } + } + } + if (item != null) { obj.Available = true; @@ -37,9 +73,26 @@ namespace Ombi.Core.Rule.Rules.Search { foreach (var episode in season.Episodes) { - var epExists = await allEpisodes.FirstOrDefaultAsync(x => - x.EpisodeNumber == episode.EpisodeNumber && x.SeasonNumber == season.SeasonNumber && - x.Series.ProviderId == item.ProviderId.ToString()); + PlexEpisode epExists = null; + if (useImdb) + { + epExists = await allEpisodes.FirstOrDefaultAsync(x => + x.EpisodeNumber == episode.EpisodeNumber && x.SeasonNumber == season.SeasonNumber && + x.Series.ImdbId == item.ImdbId.ToString()); + } + if (useTheMovieDb) + { + epExists = await allEpisodes.FirstOrDefaultAsync(x => + x.EpisodeNumber == episode.EpisodeNumber && x.SeasonNumber == season.SeasonNumber && + x.Series.TheMovieDbId == item.TheMovieDbId.ToString()); + } + if (useTvDb) + { + epExists = await allEpisodes.FirstOrDefaultAsync(x => + x.EpisodeNumber == episode.EpisodeNumber && x.SeasonNumber == season.SeasonNumber && + x.Series.TvDbId == item.TvDbId.ToString()); + } + if (epExists != null) { episode.Available = true; diff --git a/src/Ombi.DependencyInjection/IocExtensions.cs b/src/Ombi.DependencyInjection/IocExtensions.cs index b65ac3d3c..ca9db4246 100644 --- a/src/Ombi.DependencyInjection/IocExtensions.cs +++ b/src/Ombi.DependencyInjection/IocExtensions.cs @@ -46,7 +46,7 @@ using Ombi.Schedule.Jobs.Plex; using Ombi.Schedule.Jobs.Sonarr; using Ombi.Store.Repository.Requests; using Ombi.Updater; -using PlexContentCacher = Ombi.Schedule.Jobs.Plex.PlexContentCacher; +using PlexContentCacher = Ombi.Schedule.Jobs.Plex; using Ombi.Api.Telegram; namespace Ombi.DependencyInjection @@ -108,7 +108,7 @@ namespace Ombi.DependencyInjection services.AddScoped(); // https://docs.microsoft.com/en-us/aspnet/core/data/entity-framework-6 services.AddTransient(); services.AddTransient(); - services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); @@ -142,7 +142,7 @@ namespace Ombi.DependencyInjection { services.AddTransient(); - services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/src/Ombi.Helpers/PlexHelper.cs b/src/Ombi.Helpers/PlexHelper.cs index e9e113b02..93710022f 100644 --- a/src/Ombi.Helpers/PlexHelper.cs +++ b/src/Ombi.Helpers/PlexHelper.cs @@ -26,28 +26,57 @@ #endregion using System; +using System.Globalization; namespace Ombi.Helpers { public class PlexHelper { - public static string GetProviderIdFromPlexGuid(string guid) + + public static ProviderId GetProviderIdFromPlexGuid(string guid) { + //com.plexapp.agents.thetvdb://269586/2/8?lang=en + //com.plexapp.agents.themoviedb://390043?lang=en + //com.plexapp.agents.imdb://tt2543164?lang=en if (string.IsNullOrEmpty(guid)) - return guid; + { + return new ProviderId(); + } var guidSplit = guid.Split(new[] { '/', '?' }, StringSplitOptions.RemoveEmptyEntries); if (guidSplit.Length > 1) { - return guidSplit[1]; + if (guid.Contains("thetvdb", CompareOptions.IgnoreCase)) + { + return new ProviderId + { + TheTvDb = guidSplit[1] + }; + } + if (guid.Contains("themoviedb", CompareOptions.IgnoreCase)) + { + return new ProviderId + { + TheMovieDb = guidSplit[1] + }; + } + if (guid.Contains("imdb", CompareOptions.IgnoreCase)) + { + return new ProviderId + { + ImdbId = guidSplit[1] + }; + } } - return string.Empty; + return new ProviderId(); } public static EpisodeModelHelper GetSeasonsAndEpisodesFromPlexGuid(string guid) { var ep = new EpisodeModelHelper(); - //guid="com.plexapp.agents.thetvdb://269586/2/8?lang=en" + //com.plexapp.agents.thetvdb://269586/2/8?lang=en + //com.plexapp.agents.themoviedb://390043?lang=en + //com.plexapp.agents.imdb://tt2543164?lang=en if (string.IsNullOrEmpty(guid)) return null; try @@ -55,7 +84,20 @@ namespace Ombi.Helpers var guidSplit = guid.Split(new[] { '/', '?' }, StringSplitOptions.RemoveEmptyEntries); if (guidSplit.Length > 2) { - ep.ProviderId = guidSplit[1]; + if (guid.Contains("thetvdb", CompareOptions.IgnoreCase)) + { + ep.ProviderId = new ProviderId {TheTvDb = guidSplit[1]}; + } + if (guid.Contains("themoviedb", CompareOptions.IgnoreCase)) + { + ep.ProviderId = new ProviderId { TheMovieDb = guidSplit[1] }; + + } + if (guid.Contains("imdb", CompareOptions.IgnoreCase)) + { + ep.ProviderId = new ProviderId { ImdbId = guidSplit[1] }; + + } ep.SeasonNumber = int.Parse(guidSplit[2]); ep.EpisodeNumber = int.Parse(guidSplit[3]); } @@ -68,47 +110,52 @@ namespace Ombi.Helpers } } - public static int GetSeasonNumberFromTitle(string title) - { - if (string.IsNullOrEmpty(title)) - { - return 0; - } - - var split = title.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); - if (split.Length < 2) - { - // Cannot get the season number, it's not in the usual format - return 0; - } - - int season; - if (int.TryParse(split[1], out season)) - { - return season; - } - - return 0; - } - public static string GetPlexMediaUrl(string machineId, int mediaId) { var url = $"https://app.plex.tv/web/app#!/server/{machineId}/details?key=library%2Fmetadata%2F{mediaId}"; return url; } - - public static string FormatGenres(string tags) - { - var split = tags.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); - return string.Join(", ", split); - } } public class EpisodeModelHelper { - public string ProviderId { get; set; } + public ProviderId ProviderId { get; set; } public int SeasonNumber { get; set; } public int EpisodeNumber { get; set; } } + + public class ProviderId + { + public string TheTvDb { get; set; } + public string TheMovieDb { get; set; } + public string ImdbId { get; set; } + + public ProviderType Type + { + get + { + if (ImdbId.HasValue()) + { + return ProviderType.ImdbId; + } + if (TheMovieDb.HasValue()) + { + return ProviderType.TheMovieDbId; + } + if (TheTvDb.HasValue()) + { + return ProviderType.TvDbId; + } + return ProviderType.ImdbId; + } + } + } + + public enum ProviderType + { + ImdbId, + TheMovieDbId, + TvDbId + } } \ No newline at end of file diff --git a/src/Ombi.Schedule.Tests/PlexAvailabilityCheckerTests.cs b/src/Ombi.Schedule.Tests/PlexAvailabilityCheckerTests.cs index 91df9b8aa..0ebb4732c 100644 --- a/src/Ombi.Schedule.Tests/PlexAvailabilityCheckerTests.cs +++ b/src/Ombi.Schedule.Tests/PlexAvailabilityCheckerTests.cs @@ -44,7 +44,7 @@ namespace Ombi.Schedule.Tests ImdbId = "test" }; _movie.Setup(x => x.GetAll()).Returns(new List { request }.AsQueryable()); - _repo.Setup(x => x.Get("test")).ReturnsAsync(new PlexContent()); + _repo.Setup(x => x.Get("test")).ReturnsAsync(new PlexServerContent()); await Checker.Start(); @@ -97,15 +97,15 @@ namespace Ombi.Schedule.Tests { new PlexEpisode { - Series = new PlexContent + Series = new PlexServerContent { - ProviderId = 1.ToString(), + ImdbId = 1.ToString(), }, EpisodeNumber = 1, SeasonNumber = 2 } }.AsQueryable); - _repo.Setup(x => x.Include(It.IsAny>(),It.IsAny>>())); + _repo.Setup(x => x.Include(It.IsAny>(),It.IsAny>>())); await Checker.Start(); diff --git a/src/Ombi.Schedule/Jobs/Plex/PlexAvailabilityChecker.cs b/src/Ombi.Schedule/Jobs/Plex/PlexAvailabilityChecker.cs index 7ff210b30..34fd49b5c 100644 --- a/src/Ombi.Schedule/Jobs/Plex/PlexAvailabilityChecker.cs +++ b/src/Ombi.Schedule/Jobs/Plex/PlexAvailabilityChecker.cs @@ -44,7 +44,7 @@ namespace Ombi.Schedule.Jobs.Plex foreach (var child in tv) { var tvDbId = child.ParentRequest.TvDbId; - var seriesEpisodes = plexEpisodes.Where(x => x.Series.ProviderId == tvDbId.ToString()); + var seriesEpisodes = plexEpisodes.Where(x => x.Series.TvDbId == tvDbId.ToString()); foreach (var season in child.SeasonRequests) { foreach (var episode in season.Episodes) diff --git a/src/Ombi.Schedule/Jobs/Plex/PlexContentCacher.cs b/src/Ombi.Schedule/Jobs/Plex/PlexContentCacher.cs index 398f7c3d8..96829b7bb 100644 --- a/src/Ombi.Schedule/Jobs/Plex/PlexContentCacher.cs +++ b/src/Ombi.Schedule/Jobs/Plex/PlexContentCacher.cs @@ -1,7 +1,7 @@ #region Copyright // /************************************************************************ // Copyright (c) 2017 Jamie Rees -// File: PlexContentCacher.cs +// File: PlexServerContentCacher.cs // Created By: Jamie Rees // // Permission is hereby granted, free of charge, to any person obtaining @@ -41,9 +41,9 @@ using Ombi.Store.Repository; namespace Ombi.Schedule.Jobs.Plex { - public class PlexContentCacher : IPlexContentCacher + public class PlexServerContentCacher : IPlexContentCacher { - public PlexContentCacher(ISettingsService plex, IPlexApi plexApi, ILogger logger, IPlexContentRepository repo, + public PlexServerContentCacher(ISettingsService plex, IPlexApi plexApi, ILogger logger, IPlexContentRepository repo, IPlexEpisodeCacher epsiodeCacher) { Plex = plex; @@ -55,7 +55,7 @@ namespace Ombi.Schedule.Jobs.Plex private ISettingsService Plex { get; } private IPlexApi PlexApi { get; } - private ILogger Logger { get; } + private ILogger Logger { get; } private IPlexContentRepository Repo { get; } private IPlexEpisodeCacher EpisodeCacher { get; } @@ -97,10 +97,10 @@ namespace Ombi.Schedule.Jobs.Plex Logger.LogInformation("We found {0} items", allContent.Count); // Let's now process this. - var contentToAdd = new List(); + var contentToAdd = new List(); foreach (var content in allContent) { - if (content.viewGroup.Equals(Jobs.PlexContentCacher.PlexMediaType.Show.ToString(), StringComparison.CurrentCultureIgnoreCase)) + if (content.viewGroup.Equals(PlexMediaType.Show.ToString(), StringComparison.CurrentCultureIgnoreCase)) { // Process Shows Logger.LogInformation("Processing TV Shows"); @@ -152,19 +152,30 @@ namespace Ombi.Schedule.Jobs.Plex // But it does not contain the `guid` property that we need to pull out thetvdb id... var showMetadata = await PlexApi.GetMetadata(servers.PlexAuthToken, servers.FullUri, show.ratingKey); - var item = new PlexContent + var providerIds = PlexHelper.GetProviderIdFromPlexGuid(showMetadata.MediaContainer.Metadata.FirstOrDefault().guid); + + var item = new PlexServerContent { AddedAt = DateTime.Now, Key = show.ratingKey, - ProviderId = PlexHelper.GetProviderIdFromPlexGuid(showMetadata.MediaContainer.Metadata - .FirstOrDefault() - .guid), ReleaseYear = show.year.ToString(), Type = PlexMediaTypeEntity.Show, Title = show.title, Url = PlexHelper.GetPlexMediaUrl(servers.MachineIdentifier, show.ratingKey), Seasons = new List() }; + if (providerIds.Type == ProviderType.ImdbId) + { + item.ImdbId = providerIds.ImdbId; + } + if (providerIds.Type == ProviderType.TheMovieDbId) + { + item.TheMovieDbId = providerIds.TheMovieDb; + } + if (providerIds.Type == ProviderType.TvDbId) + { + item.TvDbId = providerIds.TheTvDb; + } item.Seasons.ToList().AddRange(seasonsContent); @@ -172,7 +183,7 @@ namespace Ombi.Schedule.Jobs.Plex } } } - if (content.viewGroup.Equals(Jobs.PlexContentCacher.PlexMediaType.Movie.ToString(), StringComparison.CurrentCultureIgnoreCase)) + if (content.viewGroup.Equals(PlexMediaType.Movie.ToString(), StringComparison.CurrentCultureIgnoreCase)) { Logger.LogInformation("Processing Movies"); foreach (var movie in content?.Metadata ?? new Metadata[]{}) @@ -187,13 +198,14 @@ namespace Ombi.Schedule.Jobs.Plex Logger.LogInformation("Adding movie {0}", movie.title); var metaData = await PlexApi.GetMetadata(servers.PlexAuthToken, servers.FullUri, movie.ratingKey); - var item = new PlexContent + var providerIds = PlexHelper.GetProviderIdFromPlexGuid(metaData.MediaContainer.Metadata + .FirstOrDefault() + .guid); + + var item = new PlexServerContent { AddedAt = DateTime.Now, Key = movie.ratingKey, - ProviderId = PlexHelper.GetProviderIdFromPlexGuid(metaData.MediaContainer.Metadata - .FirstOrDefault() - .guid), ReleaseYear = movie.year.ToString(), Type = PlexMediaTypeEntity.Movie, Title = movie.title, @@ -201,7 +213,18 @@ namespace Ombi.Schedule.Jobs.Plex Seasons = new List(), Quality = movie.Media?.FirstOrDefault()?.videoResolution ?? string.Empty }; - + if (providerIds.Type == ProviderType.ImdbId) + { + item.ImdbId = providerIds.ImdbId; + } + if (providerIds.Type == ProviderType.TheMovieDbId) + { + item.TheMovieDbId = providerIds.TheMovieDb; + } + if (providerIds.Type == ProviderType.TvDbId) + { + item.TvDbId = providerIds.TheTvDb; + } contentToAdd.Add(item); } } diff --git a/src/Ombi.Schedule/Jobs/Plex/PlexEpisodeCacher.cs b/src/Ombi.Schedule/Jobs/Plex/PlexEpisodeCacher.cs index f523d87dd..0b3137542 100644 --- a/src/Ombi.Schedule/Jobs/Plex/PlexEpisodeCacher.cs +++ b/src/Ombi.Schedule/Jobs/Plex/PlexEpisodeCacher.cs @@ -67,7 +67,7 @@ namespace Ombi.Schedule.Jobs.Plex var sections = await _api.GetLibrarySections(settings.PlexAuthToken, settings.FullUri); // Filter the libSections - var tvSections = sections.MediaContainer.Directory.Where(x => x.type.Equals(Jobs.PlexContentCacher.PlexMediaType.Show.ToString(), StringComparison.CurrentCultureIgnoreCase)); + var tvSections = sections.MediaContainer.Directory.Where(x => x.type.Equals(PlexMediaType.Show.ToString(), StringComparison.CurrentCultureIgnoreCase)); foreach (var section in tvSections) { diff --git a/src/Ombi.Schedule/Jobs/Plex/PlexMediaType.cs b/src/Ombi.Schedule/Jobs/Plex/PlexMediaType.cs index 14fd8b228..bf8ac1a75 100644 --- a/src/Ombi.Schedule/Jobs/Plex/PlexMediaType.cs +++ b/src/Ombi.Schedule/Jobs/Plex/PlexMediaType.cs @@ -28,12 +28,9 @@ namespace Ombi.Schedule.Jobs { - public partial class PlexContentCacher + public enum PlexMediaType { - public enum PlexMediaType - { - Movie = 0, - Show = 1 - } + Movie = 0, + Show = 1 } } \ No newline at end of file diff --git a/src/Ombi.Store/Context/IOmbiContext.cs b/src/Ombi.Store/Context/IOmbiContext.cs index 1bd705280..6f85a974f 100644 --- a/src/Ombi.Store/Context/IOmbiContext.cs +++ b/src/Ombi.Store/Context/IOmbiContext.cs @@ -14,7 +14,7 @@ namespace Ombi.Store.Context int SaveChanges(); Task SaveChangesAsync(CancellationToken cancellationToken = default(CancellationToken)); DbSet Settings { get; set; } - DbSet PlexContent { get; set; } + DbSet PlexServerContent { get; set; } DbSet PlexEpisode { get; set; } DbSet RadarrCache { get; set; } DbSet EmbyContent { get; set; } diff --git a/src/Ombi.Store/Context/OmbiContext.cs b/src/Ombi.Store/Context/OmbiContext.cs index c34470e51..fe508e060 100644 --- a/src/Ombi.Store/Context/OmbiContext.cs +++ b/src/Ombi.Store/Context/OmbiContext.cs @@ -23,7 +23,7 @@ namespace Ombi.Store.Context public DbSet NotificationTemplates { get; set; } public DbSet Settings { get; set; } - public DbSet PlexContent { get; set; } + public DbSet PlexServerContent { get; set; } public DbSet PlexEpisode { get; set; } public DbSet RadarrCache { get; set; } public DbSet CouchPotatoCache { get; set; } @@ -55,11 +55,10 @@ namespace Ombi.Store.Context protected override void OnModelCreating(ModelBuilder builder) { - builder.Entity() - .HasOne(p => p.Series) - .WithMany(b => b.Episodes) + builder.Entity().HasMany(x => x.Episodes) + .WithOne(x => x.Series) .HasPrincipalKey(x => x.Key) - .HasForeignKey(p => p.GrandparentKey); + .HasForeignKey(x => x.GrandparentKey); builder.Entity() .HasOne(p => p.Series) diff --git a/src/Ombi.Store/Entities/PlexEpisode.cs b/src/Ombi.Store/Entities/PlexEpisode.cs index ecd03742c..3acca8f3b 100644 --- a/src/Ombi.Store/Entities/PlexEpisode.cs +++ b/src/Ombi.Store/Entities/PlexEpisode.cs @@ -25,6 +25,6 @@ namespace Ombi.Store.Entities public int GrandparentKey { get; set; } - public PlexContent Series { get; set; } + public PlexServerContent Series { get; set; } } } \ No newline at end of file diff --git a/src/Ombi.Store/Entities/PlexContent.cs b/src/Ombi.Store/Entities/PlexServerContent.cs similarity index 92% rename from src/Ombi.Store/Entities/PlexContent.cs rename to src/Ombi.Store/Entities/PlexServerContent.cs index 0e8295cbc..f62dc7ff9 100644 --- a/src/Ombi.Store/Entities/PlexContent.cs +++ b/src/Ombi.Store/Entities/PlexServerContent.cs @@ -31,12 +31,14 @@ using System.ComponentModel.DataAnnotations.Schema; namespace Ombi.Store.Entities { - [Table("PlexContent")] - public class PlexContent : Entity + [Table("PlexServerContent")] + public class PlexServerContent : Entity { public string Title { get; set; } public string ReleaseYear { get; set; } - public string ProviderId { get; set; } + public string ImdbId { get; set; } + public string TvDbId { get; set; } + public string TheMovieDbId { get; set; } public PlexMediaTypeEntity Type { get; set; } public string Url { get; set; } diff --git a/src/Ombi.Store/Migrations/20170914122422_Inital.Designer.cs b/src/Ombi.Store/Migrations/20170914122422_Inital.Designer.cs deleted file mode 100644 index 2d3dcf123..000000000 --- a/src/Ombi.Store/Migrations/20170914122422_Inital.Designer.cs +++ /dev/null @@ -1,729 +0,0 @@ -// -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage; -using Microsoft.EntityFrameworkCore.Storage.Internal; -using Ombi.Helpers; -using Ombi.Store.Context; -using Ombi.Store.Entities; -using System; - -namespace Ombi.Store.Migrations -{ - [DbContext(typeof(OmbiContext))] - [Migration("20170914122422_Inital")] - partial class Inital - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Name") - .HasMaxLength(256); - - b.Property("NormalizedName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasName("RoleNameIndex"); - - b.ToTable("AspNetRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("RoleId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider"); - - b.Property("ProviderKey"); - - b.Property("ProviderDisplayName"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId"); - - b.Property("RoleId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId"); - - b.Property("LoginProvider"); - - b.Property("Name"); - - b.Property("Value"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.ApplicationConfiguration", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Type"); - - b.Property("Value"); - - b.HasKey("Id"); - - b.ToTable("ApplicationConfiguration"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Audit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AuditArea"); - - b.Property("AuditType"); - - b.Property("DateTime"); - - b.Property("Description"); - - b.Property("User"); - - b.HasKey("Id"); - - b.ToTable("Audit"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.EmbyContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("EmbyId") - .IsRequired(); - - b.Property("ProviderId"); - - b.Property("Title"); - - b.Property("Type"); - - b.HasKey("Id"); - - b.ToTable("EmbyContent"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.EmbyEpisode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("EmbyId"); - - b.Property("EpisodeNumber"); - - b.Property("ParentId"); - - b.Property("ProviderId"); - - b.Property("SeasonNumber"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("ParentId"); - - b.ToTable("EmbyEpisode"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.GlobalSettings", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Content"); - - b.Property("SettingsName"); - - b.HasKey("Id"); - - b.ToTable("GlobalSettings"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.NotificationTemplates", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Agent"); - - b.Property("Enabled"); - - b.Property("Message"); - - b.Property("NotificationType"); - - b.Property("Subject"); - - b.HasKey("Id"); - - b.ToTable("NotificationTemplates"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.OmbiUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AccessFailedCount"); - - b.Property("Alias"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Email") - .HasMaxLength(256); - - b.Property("EmailConfirmed"); - - b.Property("LockoutEnabled"); - - b.Property("LockoutEnd"); - - b.Property("NormalizedEmail") - .HasMaxLength(256); - - b.Property("NormalizedUserName") - .HasMaxLength(256); - - b.Property("PasswordHash"); - - b.Property("PhoneNumber"); - - b.Property("PhoneNumberConfirmed"); - - b.Property("ProviderUserId"); - - b.Property("SecurityStamp"); - - b.Property("TwoFactorEnabled"); - - b.Property("UserName") - .HasMaxLength(256); - - b.Property("UserType"); - - b.HasKey("Id"); - - b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasName("UserNameIndex"); - - b.ToTable("AspNetUsers"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("Key"); - - b.Property("ProviderId"); - - b.Property("Quality"); - - b.Property("ReleaseYear"); - - b.Property("Title"); - - b.Property("Type"); - - b.Property("Url"); - - b.HasKey("Id"); - - b.ToTable("PlexContent"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexEpisode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("EpisodeNumber"); - - b.Property("GrandparentKey"); - - b.Property("Key"); - - b.Property("ParentKey"); - - b.Property("SeasonNumber"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("GrandparentKey"); - - b.ToTable("PlexEpisode"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ParentKey"); - - b.Property("PlexContentId"); - - b.Property("SeasonKey"); - - b.Property("SeasonNumber"); - - b.HasKey("Id"); - - b.HasIndex("PlexContentId"); - - b.ToTable("PlexSeasonsContent"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.RadarrCache", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("TheMovieDbId"); - - b.HasKey("Id"); - - b.ToTable("RadarrCache"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.ChildRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Approved"); - - b.Property("Available"); - - b.Property("Denied"); - - b.Property("DeniedReason"); - - b.Property("IssueId"); - - b.Property("ParentRequestId"); - - b.Property("RequestType"); - - b.Property("RequestedDate"); - - b.Property("RequestedUserId"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("ParentRequestId"); - - b.HasIndex("RequestedUserId"); - - b.ToTable("ChildRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieIssues", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Description"); - - b.Property("IssueId"); - - b.Property("MovieId"); - - b.Property("Subect"); - - b.HasKey("Id"); - - b.HasIndex("IssueId"); - - b.HasIndex("MovieId"); - - b.ToTable("MovieIssues"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Approved"); - - b.Property("Available"); - - b.Property("Denied"); - - b.Property("DeniedReason"); - - b.Property("ImdbId"); - - b.Property("IssueId"); - - b.Property("Overview"); - - b.Property("PosterPath"); - - b.Property("ReleaseDate"); - - b.Property("RequestType"); - - b.Property("RequestedDate"); - - b.Property("RequestedUserId"); - - b.Property("Status"); - - b.Property("TheMovieDbId"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("RequestedUserId"); - - b.ToTable("MovieRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.TvIssues", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Description"); - - b.Property("IssueId"); - - b.Property("Subect"); - - b.Property("TvId"); - - b.HasKey("Id"); - - b.HasIndex("IssueId"); - - b.HasIndex("TvId"); - - b.ToTable("TvIssues"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.TvRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ImdbId"); - - b.Property("Overview"); - - b.Property("PosterPath"); - - b.Property("ReleaseDate"); - - b.Property("RootFolder"); - - b.Property("Status"); - - b.Property("Title"); - - b.Property("TvDbId"); - - b.HasKey("Id"); - - b.ToTable("TvRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Tokens", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Token"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("Tokens"); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.EpisodeRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AirDate"); - - b.Property("Approved"); - - b.Property("Available"); - - b.Property("EpisodeNumber"); - - b.Property("Requested"); - - b.Property("SeasonId"); - - b.Property("Title"); - - b.Property("Url"); - - b.HasKey("Id"); - - b.HasIndex("SeasonId"); - - b.ToTable("EpisodeRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.SeasonRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChildRequestId"); - - b.Property("SeasonNumber"); - - b.HasKey("Id"); - - b.HasIndex("ChildRequestId"); - - b.ToTable("SeasonRequests"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.EmbyEpisode", b => - { - b.HasOne("Ombi.Store.Entities.EmbyContent", "Series") - .WithMany("Episodes") - .HasForeignKey("ParentId") - .HasPrincipalKey("EmbyId"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexEpisode", b => - { - b.HasOne("Ombi.Store.Entities.PlexContent", "Series") - .WithMany("Episodes") - .HasForeignKey("GrandparentKey") - .HasPrincipalKey("Key") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b => - { - b.HasOne("Ombi.Store.Entities.PlexContent") - .WithMany("Seasons") - .HasForeignKey("PlexContentId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.ChildRequests", b => - { - b.HasOne("Ombi.Store.Entities.Requests.TvRequests", "ParentRequest") - .WithMany("ChildRequests") - .HasForeignKey("ParentRequestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser") - .WithMany() - .HasForeignKey("RequestedUserId"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieIssues", b => - { - b.HasOne("Ombi.Store.Entities.Requests.MovieRequests") - .WithMany("Issues") - .HasForeignKey("IssueId"); - - b.HasOne("Ombi.Store.Entities.Requests.MovieRequests", "Movie") - .WithMany() - .HasForeignKey("MovieId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieRequests", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser") - .WithMany() - .HasForeignKey("RequestedUserId"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.TvIssues", b => - { - b.HasOne("Ombi.Store.Entities.Requests.ChildRequests") - .WithMany("Issues") - .HasForeignKey("IssueId"); - - b.HasOne("Ombi.Store.Entities.Requests.ChildRequests", "Child") - .WithMany() - .HasForeignKey("TvId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Tokens", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser", "User") - .WithMany() - .HasForeignKey("UserId"); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.EpisodeRequests", b => - { - b.HasOne("Ombi.Store.Repository.Requests.SeasonRequests", "Season") - .WithMany("Episodes") - .HasForeignKey("SeasonId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.SeasonRequests", b => - { - b.HasOne("Ombi.Store.Entities.Requests.ChildRequests", "ChildRequest") - .WithMany("SeasonRequests") - .HasForeignKey("ChildRequestId") - .OnDelete(DeleteBehavior.Cascade); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/src/Ombi.Store/Migrations/20170928150420_LastLoggedIn.Designer.cs b/src/Ombi.Store/Migrations/20170928150420_LastLoggedIn.Designer.cs deleted file mode 100644 index 2cb6dbcc5..000000000 --- a/src/Ombi.Store/Migrations/20170928150420_LastLoggedIn.Designer.cs +++ /dev/null @@ -1,731 +0,0 @@ -// -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage; -using Microsoft.EntityFrameworkCore.Storage.Internal; -using Ombi.Helpers; -using Ombi.Store.Context; -using Ombi.Store.Entities; -using System; - -namespace Ombi.Store.Migrations -{ - [DbContext(typeof(OmbiContext))] - [Migration("20170928150420_LastLoggedIn")] - partial class LastLoggedIn - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Name") - .HasMaxLength(256); - - b.Property("NormalizedName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasName("RoleNameIndex"); - - b.ToTable("AspNetRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("RoleId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider"); - - b.Property("ProviderKey"); - - b.Property("ProviderDisplayName"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId"); - - b.Property("RoleId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId"); - - b.Property("LoginProvider"); - - b.Property("Name"); - - b.Property("Value"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.ApplicationConfiguration", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Type"); - - b.Property("Value"); - - b.HasKey("Id"); - - b.ToTable("ApplicationConfiguration"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Audit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AuditArea"); - - b.Property("AuditType"); - - b.Property("DateTime"); - - b.Property("Description"); - - b.Property("User"); - - b.HasKey("Id"); - - b.ToTable("Audit"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.EmbyContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("EmbyId") - .IsRequired(); - - b.Property("ProviderId"); - - b.Property("Title"); - - b.Property("Type"); - - b.HasKey("Id"); - - b.ToTable("EmbyContent"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.EmbyEpisode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("EmbyId"); - - b.Property("EpisodeNumber"); - - b.Property("ParentId"); - - b.Property("ProviderId"); - - b.Property("SeasonNumber"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("ParentId"); - - b.ToTable("EmbyEpisode"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.GlobalSettings", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Content"); - - b.Property("SettingsName"); - - b.HasKey("Id"); - - b.ToTable("GlobalSettings"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.NotificationTemplates", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Agent"); - - b.Property("Enabled"); - - b.Property("Message"); - - b.Property("NotificationType"); - - b.Property("Subject"); - - b.HasKey("Id"); - - b.ToTable("NotificationTemplates"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.OmbiUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AccessFailedCount"); - - b.Property("Alias"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Email") - .HasMaxLength(256); - - b.Property("EmailConfirmed"); - - b.Property("LastLoggedIn"); - - b.Property("LockoutEnabled"); - - b.Property("LockoutEnd"); - - b.Property("NormalizedEmail") - .HasMaxLength(256); - - b.Property("NormalizedUserName") - .HasMaxLength(256); - - b.Property("PasswordHash"); - - b.Property("PhoneNumber"); - - b.Property("PhoneNumberConfirmed"); - - b.Property("ProviderUserId"); - - b.Property("SecurityStamp"); - - b.Property("TwoFactorEnabled"); - - b.Property("UserName") - .HasMaxLength(256); - - b.Property("UserType"); - - b.HasKey("Id"); - - b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasName("UserNameIndex"); - - b.ToTable("AspNetUsers"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("Key"); - - b.Property("ProviderId"); - - b.Property("Quality"); - - b.Property("ReleaseYear"); - - b.Property("Title"); - - b.Property("Type"); - - b.Property("Url"); - - b.HasKey("Id"); - - b.ToTable("PlexContent"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexEpisode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("EpisodeNumber"); - - b.Property("GrandparentKey"); - - b.Property("Key"); - - b.Property("ParentKey"); - - b.Property("SeasonNumber"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("GrandparentKey"); - - b.ToTable("PlexEpisode"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ParentKey"); - - b.Property("PlexContentId"); - - b.Property("SeasonKey"); - - b.Property("SeasonNumber"); - - b.HasKey("Id"); - - b.HasIndex("PlexContentId"); - - b.ToTable("PlexSeasonsContent"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.RadarrCache", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("TheMovieDbId"); - - b.HasKey("Id"); - - b.ToTable("RadarrCache"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.ChildRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Approved"); - - b.Property("Available"); - - b.Property("Denied"); - - b.Property("DeniedReason"); - - b.Property("IssueId"); - - b.Property("ParentRequestId"); - - b.Property("RequestType"); - - b.Property("RequestedDate"); - - b.Property("RequestedUserId"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("ParentRequestId"); - - b.HasIndex("RequestedUserId"); - - b.ToTable("ChildRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieIssues", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Description"); - - b.Property("IssueId"); - - b.Property("MovieId"); - - b.Property("Subect"); - - b.HasKey("Id"); - - b.HasIndex("IssueId"); - - b.HasIndex("MovieId"); - - b.ToTable("MovieIssues"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Approved"); - - b.Property("Available"); - - b.Property("Denied"); - - b.Property("DeniedReason"); - - b.Property("ImdbId"); - - b.Property("IssueId"); - - b.Property("Overview"); - - b.Property("PosterPath"); - - b.Property("ReleaseDate"); - - b.Property("RequestType"); - - b.Property("RequestedDate"); - - b.Property("RequestedUserId"); - - b.Property("Status"); - - b.Property("TheMovieDbId"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("RequestedUserId"); - - b.ToTable("MovieRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.TvIssues", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Description"); - - b.Property("IssueId"); - - b.Property("Subect"); - - b.Property("TvId"); - - b.HasKey("Id"); - - b.HasIndex("IssueId"); - - b.HasIndex("TvId"); - - b.ToTable("TvIssues"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.TvRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ImdbId"); - - b.Property("Overview"); - - b.Property("PosterPath"); - - b.Property("ReleaseDate"); - - b.Property("RootFolder"); - - b.Property("Status"); - - b.Property("Title"); - - b.Property("TvDbId"); - - b.HasKey("Id"); - - b.ToTable("TvRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Tokens", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Token"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("Tokens"); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.EpisodeRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AirDate"); - - b.Property("Approved"); - - b.Property("Available"); - - b.Property("EpisodeNumber"); - - b.Property("Requested"); - - b.Property("SeasonId"); - - b.Property("Title"); - - b.Property("Url"); - - b.HasKey("Id"); - - b.HasIndex("SeasonId"); - - b.ToTable("EpisodeRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.SeasonRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChildRequestId"); - - b.Property("SeasonNumber"); - - b.HasKey("Id"); - - b.HasIndex("ChildRequestId"); - - b.ToTable("SeasonRequests"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.EmbyEpisode", b => - { - b.HasOne("Ombi.Store.Entities.EmbyContent", "Series") - .WithMany("Episodes") - .HasForeignKey("ParentId") - .HasPrincipalKey("EmbyId"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexEpisode", b => - { - b.HasOne("Ombi.Store.Entities.PlexContent", "Series") - .WithMany("Episodes") - .HasForeignKey("GrandparentKey") - .HasPrincipalKey("Key") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b => - { - b.HasOne("Ombi.Store.Entities.PlexContent") - .WithMany("Seasons") - .HasForeignKey("PlexContentId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.ChildRequests", b => - { - b.HasOne("Ombi.Store.Entities.Requests.TvRequests", "ParentRequest") - .WithMany("ChildRequests") - .HasForeignKey("ParentRequestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser") - .WithMany() - .HasForeignKey("RequestedUserId"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieIssues", b => - { - b.HasOne("Ombi.Store.Entities.Requests.MovieRequests") - .WithMany("Issues") - .HasForeignKey("IssueId"); - - b.HasOne("Ombi.Store.Entities.Requests.MovieRequests", "Movie") - .WithMany() - .HasForeignKey("MovieId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieRequests", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser") - .WithMany() - .HasForeignKey("RequestedUserId"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.TvIssues", b => - { - b.HasOne("Ombi.Store.Entities.Requests.ChildRequests") - .WithMany("Issues") - .HasForeignKey("IssueId"); - - b.HasOne("Ombi.Store.Entities.Requests.ChildRequests", "Child") - .WithMany() - .HasForeignKey("TvId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Tokens", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser", "User") - .WithMany() - .HasForeignKey("UserId"); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.EpisodeRequests", b => - { - b.HasOne("Ombi.Store.Repository.Requests.SeasonRequests", "Season") - .WithMany("Episodes") - .HasForeignKey("SeasonId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.SeasonRequests", b => - { - b.HasOne("Ombi.Store.Entities.Requests.ChildRequests", "ChildRequest") - .WithMany("SeasonRequests") - .HasForeignKey("ChildRequestId") - .OnDelete(DeleteBehavior.Cascade); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/src/Ombi.Store/Migrations/20170928150420_LastLoggedIn.cs b/src/Ombi.Store/Migrations/20170928150420_LastLoggedIn.cs deleted file mode 100644 index cf393c7a5..000000000 --- a/src/Ombi.Store/Migrations/20170928150420_LastLoggedIn.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; -using System; -using System.Collections.Generic; - -namespace Ombi.Store.Migrations -{ - public partial class LastLoggedIn : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "LastLoggedIn", - table: "AspNetUsers", - type: "TEXT", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "LastLoggedIn", - table: "AspNetUsers"); - } - } -} diff --git a/src/Ombi.Store/Migrations/20171002113357_SonarrCacher.Designer.cs b/src/Ombi.Store/Migrations/20171002113357_SonarrCacher.Designer.cs deleted file mode 100644 index 9ea6c0745..000000000 --- a/src/Ombi.Store/Migrations/20171002113357_SonarrCacher.Designer.cs +++ /dev/null @@ -1,747 +0,0 @@ -// -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage; -using Microsoft.EntityFrameworkCore.Storage.Internal; -using Ombi.Helpers; -using Ombi.Store.Context; -using Ombi.Store.Entities; -using System; - -namespace Ombi.Store.Migrations -{ - [DbContext(typeof(OmbiContext))] - [Migration("20171002113357_SonarrCacher")] - partial class SonarrCacher - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Name") - .HasMaxLength(256); - - b.Property("NormalizedName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasName("RoleNameIndex"); - - b.ToTable("AspNetRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("RoleId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider"); - - b.Property("ProviderKey"); - - b.Property("ProviderDisplayName"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId"); - - b.Property("RoleId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId"); - - b.Property("LoginProvider"); - - b.Property("Name"); - - b.Property("Value"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.ApplicationConfiguration", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Type"); - - b.Property("Value"); - - b.HasKey("Id"); - - b.ToTable("ApplicationConfiguration"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Audit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AuditArea"); - - b.Property("AuditType"); - - b.Property("DateTime"); - - b.Property("Description"); - - b.Property("User"); - - b.HasKey("Id"); - - b.ToTable("Audit"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.EmbyContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("EmbyId") - .IsRequired(); - - b.Property("ProviderId"); - - b.Property("Title"); - - b.Property("Type"); - - b.HasKey("Id"); - - b.ToTable("EmbyContent"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.EmbyEpisode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("EmbyId"); - - b.Property("EpisodeNumber"); - - b.Property("ParentId"); - - b.Property("ProviderId"); - - b.Property("SeasonNumber"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("ParentId"); - - b.ToTable("EmbyEpisode"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.GlobalSettings", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Content"); - - b.Property("SettingsName"); - - b.HasKey("Id"); - - b.ToTable("GlobalSettings"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.NotificationTemplates", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Agent"); - - b.Property("Enabled"); - - b.Property("Message"); - - b.Property("NotificationType"); - - b.Property("Subject"); - - b.HasKey("Id"); - - b.ToTable("NotificationTemplates"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.OmbiUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AccessFailedCount"); - - b.Property("Alias"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Email") - .HasMaxLength(256); - - b.Property("EmailConfirmed"); - - b.Property("LastLoggedIn"); - - b.Property("LockoutEnabled"); - - b.Property("LockoutEnd"); - - b.Property("NormalizedEmail") - .HasMaxLength(256); - - b.Property("NormalizedUserName") - .HasMaxLength(256); - - b.Property("PasswordHash"); - - b.Property("PhoneNumber"); - - b.Property("PhoneNumberConfirmed"); - - b.Property("ProviderUserId"); - - b.Property("SecurityStamp"); - - b.Property("TwoFactorEnabled"); - - b.Property("UserName") - .HasMaxLength(256); - - b.Property("UserType"); - - b.HasKey("Id"); - - b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasName("UserNameIndex"); - - b.ToTable("AspNetUsers"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("Key"); - - b.Property("ProviderId"); - - b.Property("Quality"); - - b.Property("ReleaseYear"); - - b.Property("Title"); - - b.Property("Type"); - - b.Property("Url"); - - b.HasKey("Id"); - - b.ToTable("PlexContent"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexEpisode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("EpisodeNumber"); - - b.Property("GrandparentKey"); - - b.Property("Key"); - - b.Property("ParentKey"); - - b.Property("SeasonNumber"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("GrandparentKey"); - - b.ToTable("PlexEpisode"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ParentKey"); - - b.Property("PlexContentId"); - - b.Property("SeasonKey"); - - b.Property("SeasonNumber"); - - b.HasKey("Id"); - - b.HasIndex("PlexContentId"); - - b.ToTable("PlexSeasonsContent"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.RadarrCache", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("TheMovieDbId"); - - b.HasKey("Id"); - - b.ToTable("RadarrCache"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.ChildRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Approved"); - - b.Property("Available"); - - b.Property("Denied"); - - b.Property("DeniedReason"); - - b.Property("IssueId"); - - b.Property("ParentRequestId"); - - b.Property("RequestType"); - - b.Property("RequestedDate"); - - b.Property("RequestedUserId"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("ParentRequestId"); - - b.HasIndex("RequestedUserId"); - - b.ToTable("ChildRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieIssues", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Description"); - - b.Property("IssueId"); - - b.Property("MovieId"); - - b.Property("Subect"); - - b.HasKey("Id"); - - b.HasIndex("IssueId"); - - b.HasIndex("MovieId"); - - b.ToTable("MovieIssues"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Approved"); - - b.Property("Available"); - - b.Property("Denied"); - - b.Property("DeniedReason"); - - b.Property("ImdbId"); - - b.Property("IssueId"); - - b.Property("Overview"); - - b.Property("PosterPath"); - - b.Property("QualityOverride"); - - b.Property("ReleaseDate"); - - b.Property("RequestType"); - - b.Property("RequestedDate"); - - b.Property("RequestedUserId"); - - b.Property("RootPathOverride"); - - b.Property("Status"); - - b.Property("TheMovieDbId"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("RequestedUserId"); - - b.ToTable("MovieRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.TvIssues", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Description"); - - b.Property("IssueId"); - - b.Property("Subect"); - - b.Property("TvId"); - - b.HasKey("Id"); - - b.HasIndex("IssueId"); - - b.HasIndex("TvId"); - - b.ToTable("TvIssues"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.TvRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ImdbId"); - - b.Property("Overview"); - - b.Property("PosterPath"); - - b.Property("ReleaseDate"); - - b.Property("RootFolder"); - - b.Property("Status"); - - b.Property("Title"); - - b.Property("TvDbId"); - - b.HasKey("Id"); - - b.ToTable("TvRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.SonarrCache", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("TvDbId"); - - b.HasKey("Id"); - - b.ToTable("SonarrCache"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Tokens", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Token"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("Tokens"); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.EpisodeRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AirDate"); - - b.Property("Approved"); - - b.Property("Available"); - - b.Property("EpisodeNumber"); - - b.Property("Requested"); - - b.Property("SeasonId"); - - b.Property("Title"); - - b.Property("Url"); - - b.HasKey("Id"); - - b.HasIndex("SeasonId"); - - b.ToTable("EpisodeRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.SeasonRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChildRequestId"); - - b.Property("SeasonNumber"); - - b.HasKey("Id"); - - b.HasIndex("ChildRequestId"); - - b.ToTable("SeasonRequests"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.EmbyEpisode", b => - { - b.HasOne("Ombi.Store.Entities.EmbyContent", "Series") - .WithMany("Episodes") - .HasForeignKey("ParentId") - .HasPrincipalKey("EmbyId"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexEpisode", b => - { - b.HasOne("Ombi.Store.Entities.PlexContent", "Series") - .WithMany("Episodes") - .HasForeignKey("GrandparentKey") - .HasPrincipalKey("Key") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b => - { - b.HasOne("Ombi.Store.Entities.PlexContent") - .WithMany("Seasons") - .HasForeignKey("PlexContentId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.ChildRequests", b => - { - b.HasOne("Ombi.Store.Entities.Requests.TvRequests", "ParentRequest") - .WithMany("ChildRequests") - .HasForeignKey("ParentRequestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser") - .WithMany() - .HasForeignKey("RequestedUserId"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieIssues", b => - { - b.HasOne("Ombi.Store.Entities.Requests.MovieRequests") - .WithMany("Issues") - .HasForeignKey("IssueId"); - - b.HasOne("Ombi.Store.Entities.Requests.MovieRequests", "Movie") - .WithMany() - .HasForeignKey("MovieId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieRequests", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser") - .WithMany() - .HasForeignKey("RequestedUserId"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.TvIssues", b => - { - b.HasOne("Ombi.Store.Entities.Requests.ChildRequests") - .WithMany("Issues") - .HasForeignKey("IssueId"); - - b.HasOne("Ombi.Store.Entities.Requests.ChildRequests", "Child") - .WithMany() - .HasForeignKey("TvId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Tokens", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser", "User") - .WithMany() - .HasForeignKey("UserId"); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.EpisodeRequests", b => - { - b.HasOne("Ombi.Store.Repository.Requests.SeasonRequests", "Season") - .WithMany("Episodes") - .HasForeignKey("SeasonId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.SeasonRequests", b => - { - b.HasOne("Ombi.Store.Entities.Requests.ChildRequests", "ChildRequest") - .WithMany("SeasonRequests") - .HasForeignKey("ChildRequestId") - .OnDelete(DeleteBehavior.Cascade); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/src/Ombi.Store/Migrations/20171002113357_SonarrCacher.cs b/src/Ombi.Store/Migrations/20171002113357_SonarrCacher.cs deleted file mode 100644 index 36bdbca20..000000000 --- a/src/Ombi.Store/Migrations/20171002113357_SonarrCacher.cs +++ /dev/null @@ -1,53 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; -using System; -using System.Collections.Generic; - -namespace Ombi.Store.Migrations -{ - public partial class SonarrCacher : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "QualityOverride", - table: "MovieRequests", - type: "INTEGER", - nullable: false, - defaultValue: 0); - - migrationBuilder.AddColumn( - name: "RootPathOverride", - table: "MovieRequests", - type: "INTEGER", - nullable: false, - defaultValue: 0); - - migrationBuilder.CreateTable( - name: "SonarrCache", - columns: table => new - { - Id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - TvDbId = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_SonarrCache", x => x.Id); - }); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "SonarrCache"); - - migrationBuilder.DropColumn( - name: "QualityOverride", - table: "MovieRequests"); - - migrationBuilder.DropColumn( - name: "RootPathOverride", - table: "MovieRequests"); - } - } -} diff --git a/src/Ombi.Store/Migrations/20171004155149_SonarrEpisodes.Designer.cs b/src/Ombi.Store/Migrations/20171004155149_SonarrEpisodes.Designer.cs deleted file mode 100644 index b8b71af8d..000000000 --- a/src/Ombi.Store/Migrations/20171004155149_SonarrEpisodes.Designer.cs +++ /dev/null @@ -1,763 +0,0 @@ -// -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage; -using Microsoft.EntityFrameworkCore.Storage.Internal; -using Ombi.Helpers; -using Ombi.Store.Context; -using Ombi.Store.Entities; -using System; - -namespace Ombi.Store.Migrations -{ - [DbContext(typeof(OmbiContext))] - [Migration("20171004155149_SonarrEpisodes")] - partial class SonarrEpisodes - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Name") - .HasMaxLength(256); - - b.Property("NormalizedName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasName("RoleNameIndex"); - - b.ToTable("AspNetRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("RoleId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider"); - - b.Property("ProviderKey"); - - b.Property("ProviderDisplayName"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId"); - - b.Property("RoleId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId"); - - b.Property("LoginProvider"); - - b.Property("Name"); - - b.Property("Value"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.ApplicationConfiguration", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Type"); - - b.Property("Value"); - - b.HasKey("Id"); - - b.ToTable("ApplicationConfiguration"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Audit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AuditArea"); - - b.Property("AuditType"); - - b.Property("DateTime"); - - b.Property("Description"); - - b.Property("User"); - - b.HasKey("Id"); - - b.ToTable("Audit"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.EmbyContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("EmbyId") - .IsRequired(); - - b.Property("ProviderId"); - - b.Property("Title"); - - b.Property("Type"); - - b.HasKey("Id"); - - b.ToTable("EmbyContent"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.EmbyEpisode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("EmbyId"); - - b.Property("EpisodeNumber"); - - b.Property("ParentId"); - - b.Property("ProviderId"); - - b.Property("SeasonNumber"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("ParentId"); - - b.ToTable("EmbyEpisode"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.GlobalSettings", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Content"); - - b.Property("SettingsName"); - - b.HasKey("Id"); - - b.ToTable("GlobalSettings"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.NotificationTemplates", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Agent"); - - b.Property("Enabled"); - - b.Property("Message"); - - b.Property("NotificationType"); - - b.Property("Subject"); - - b.HasKey("Id"); - - b.ToTable("NotificationTemplates"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.OmbiUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AccessFailedCount"); - - b.Property("Alias"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Email") - .HasMaxLength(256); - - b.Property("EmailConfirmed"); - - b.Property("LastLoggedIn"); - - b.Property("LockoutEnabled"); - - b.Property("LockoutEnd"); - - b.Property("NormalizedEmail") - .HasMaxLength(256); - - b.Property("NormalizedUserName") - .HasMaxLength(256); - - b.Property("PasswordHash"); - - b.Property("PhoneNumber"); - - b.Property("PhoneNumberConfirmed"); - - b.Property("ProviderUserId"); - - b.Property("SecurityStamp"); - - b.Property("TwoFactorEnabled"); - - b.Property("UserName") - .HasMaxLength(256); - - b.Property("UserType"); - - b.HasKey("Id"); - - b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasName("UserNameIndex"); - - b.ToTable("AspNetUsers"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("Key"); - - b.Property("ProviderId"); - - b.Property("Quality"); - - b.Property("ReleaseYear"); - - b.Property("Title"); - - b.Property("Type"); - - b.Property("Url"); - - b.HasKey("Id"); - - b.ToTable("PlexContent"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexEpisode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("EpisodeNumber"); - - b.Property("GrandparentKey"); - - b.Property("Key"); - - b.Property("ParentKey"); - - b.Property("SeasonNumber"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("GrandparentKey"); - - b.ToTable("PlexEpisode"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ParentKey"); - - b.Property("PlexContentId"); - - b.Property("SeasonKey"); - - b.Property("SeasonNumber"); - - b.HasKey("Id"); - - b.HasIndex("PlexContentId"); - - b.ToTable("PlexSeasonsContent"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.RadarrCache", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("TheMovieDbId"); - - b.HasKey("Id"); - - b.ToTable("RadarrCache"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.ChildRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Approved"); - - b.Property("Available"); - - b.Property("Denied"); - - b.Property("DeniedReason"); - - b.Property("IssueId"); - - b.Property("ParentRequestId"); - - b.Property("RequestType"); - - b.Property("RequestedDate"); - - b.Property("RequestedUserId"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("ParentRequestId"); - - b.HasIndex("RequestedUserId"); - - b.ToTable("ChildRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieIssues", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Description"); - - b.Property("IssueId"); - - b.Property("MovieId"); - - b.Property("Subect"); - - b.HasKey("Id"); - - b.HasIndex("IssueId"); - - b.HasIndex("MovieId"); - - b.ToTable("MovieIssues"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Approved"); - - b.Property("Available"); - - b.Property("Denied"); - - b.Property("DeniedReason"); - - b.Property("ImdbId"); - - b.Property("IssueId"); - - b.Property("Overview"); - - b.Property("PosterPath"); - - b.Property("QualityOverride"); - - b.Property("ReleaseDate"); - - b.Property("RequestType"); - - b.Property("RequestedDate"); - - b.Property("RequestedUserId"); - - b.Property("RootPathOverride"); - - b.Property("Status"); - - b.Property("TheMovieDbId"); - - b.Property("Title"); - - b.HasKey("Id"); - - b.HasIndex("RequestedUserId"); - - b.ToTable("MovieRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.TvIssues", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Description"); - - b.Property("IssueId"); - - b.Property("Subect"); - - b.Property("TvId"); - - b.HasKey("Id"); - - b.HasIndex("IssueId"); - - b.HasIndex("TvId"); - - b.ToTable("TvIssues"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.TvRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ImdbId"); - - b.Property("Overview"); - - b.Property("PosterPath"); - - b.Property("ReleaseDate"); - - b.Property("RootFolder"); - - b.Property("Status"); - - b.Property("Title"); - - b.Property("TvDbId"); - - b.HasKey("Id"); - - b.ToTable("TvRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.SonarrCache", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("TvDbId"); - - b.HasKey("Id"); - - b.ToTable("SonarrCache"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.SonarrEpisodeCache", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("EpisodeNumber"); - - b.Property("SeasonNumber"); - - b.Property("TvDbId"); - - b.HasKey("Id"); - - b.ToTable("SonarrEpisodeCache"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Tokens", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Token"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("Tokens"); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.EpisodeRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AirDate"); - - b.Property("Approved"); - - b.Property("Available"); - - b.Property("EpisodeNumber"); - - b.Property("Requested"); - - b.Property("SeasonId"); - - b.Property("Title"); - - b.Property("Url"); - - b.HasKey("Id"); - - b.HasIndex("SeasonId"); - - b.ToTable("EpisodeRequests"); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.SeasonRequests", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChildRequestId"); - - b.Property("SeasonNumber"); - - b.HasKey("Id"); - - b.HasIndex("ChildRequestId"); - - b.ToTable("SeasonRequests"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.EmbyEpisode", b => - { - b.HasOne("Ombi.Store.Entities.EmbyContent", "Series") - .WithMany("Episodes") - .HasForeignKey("ParentId") - .HasPrincipalKey("EmbyId"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexEpisode", b => - { - b.HasOne("Ombi.Store.Entities.PlexContent", "Series") - .WithMany("Episodes") - .HasForeignKey("GrandparentKey") - .HasPrincipalKey("Key") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b => - { - b.HasOne("Ombi.Store.Entities.PlexContent") - .WithMany("Seasons") - .HasForeignKey("PlexContentId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.ChildRequests", b => - { - b.HasOne("Ombi.Store.Entities.Requests.TvRequests", "ParentRequest") - .WithMany("ChildRequests") - .HasForeignKey("ParentRequestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser") - .WithMany() - .HasForeignKey("RequestedUserId"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieIssues", b => - { - b.HasOne("Ombi.Store.Entities.Requests.MovieRequests") - .WithMany("Issues") - .HasForeignKey("IssueId"); - - b.HasOne("Ombi.Store.Entities.Requests.MovieRequests", "Movie") - .WithMany() - .HasForeignKey("MovieId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieRequests", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser") - .WithMany() - .HasForeignKey("RequestedUserId"); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Requests.TvIssues", b => - { - b.HasOne("Ombi.Store.Entities.Requests.ChildRequests") - .WithMany("Issues") - .HasForeignKey("IssueId"); - - b.HasOne("Ombi.Store.Entities.Requests.ChildRequests", "Child") - .WithMany() - .HasForeignKey("TvId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Entities.Tokens", b => - { - b.HasOne("Ombi.Store.Entities.OmbiUser", "User") - .WithMany() - .HasForeignKey("UserId"); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.EpisodeRequests", b => - { - b.HasOne("Ombi.Store.Repository.Requests.SeasonRequests", "Season") - .WithMany("Episodes") - .HasForeignKey("SeasonId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Ombi.Store.Repository.Requests.SeasonRequests", b => - { - b.HasOne("Ombi.Store.Entities.Requests.ChildRequests", "ChildRequest") - .WithMany("SeasonRequests") - .HasForeignKey("ChildRequestId") - .OnDelete(DeleteBehavior.Cascade); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/src/Ombi.Store/Migrations/20171004155149_SonarrEpisodes.cs b/src/Ombi.Store/Migrations/20171004155149_SonarrEpisodes.cs deleted file mode 100644 index 71668ee6b..000000000 --- a/src/Ombi.Store/Migrations/20171004155149_SonarrEpisodes.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; -using System; -using System.Collections.Generic; - -namespace Ombi.Store.Migrations -{ - public partial class SonarrEpisodes : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "SonarrEpisodeCache", - columns: table => new - { - Id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - EpisodeNumber = table.Column(type: "INTEGER", nullable: false), - SeasonNumber = table.Column(type: "INTEGER", nullable: false), - TvDbId = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_SonarrEpisodeCache", x => x.Id); - }); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "SonarrEpisodeCache"); - } - } -} diff --git a/src/Ombi.Store/Migrations/20171015200035_CouchPotatoCacher.cs b/src/Ombi.Store/Migrations/20171015200035_CouchPotatoCacher.cs deleted file mode 100644 index 0bb3b3243..000000000 --- a/src/Ombi.Store/Migrations/20171015200035_CouchPotatoCacher.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; -using System; -using System.Collections.Generic; - -namespace Ombi.Store.Migrations -{ - public partial class CouchPotatoCacher : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "CouchPotatoCache", - columns: table => new - { - Id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - TheMovieDbId = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CouchPotatoCache", x => x.Id); - }); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "CouchPotatoCache"); - } - } -} diff --git a/src/Ombi.Store/Migrations/20171015200035_CouchPotatoCacher.Designer.cs b/src/Ombi.Store/Migrations/20171103003202_Inital.Designer.cs similarity index 97% rename from src/Ombi.Store/Migrations/20171015200035_CouchPotatoCacher.Designer.cs rename to src/Ombi.Store/Migrations/20171103003202_Inital.Designer.cs index e94514748..3bde0f01c 100644 --- a/src/Ombi.Store/Migrations/20171015200035_CouchPotatoCacher.Designer.cs +++ b/src/Ombi.Store/Migrations/20171103003202_Inital.Designer.cs @@ -13,8 +13,8 @@ using System; namespace Ombi.Store.Migrations { [DbContext(typeof(OmbiContext))] - [Migration("20171015200035_CouchPotatoCacher")] - partial class CouchPotatoCacher + [Migration("20171103003202_Inital")] + partial class Inital { protected override void BuildTargetModel(ModelBuilder modelBuilder) { @@ -314,32 +314,6 @@ namespace Ombi.Store.Migrations b.ToTable("AspNetUsers"); }); - modelBuilder.Entity("Ombi.Store.Entities.PlexContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("Key"); - - b.Property("ProviderId"); - - b.Property("Quality"); - - b.Property("ReleaseYear"); - - b.Property("Title"); - - b.Property("Type"); - - b.Property("Url"); - - b.HasKey("Id"); - - b.ToTable("PlexContent"); - }); - modelBuilder.Entity("Ombi.Store.Entities.PlexEpisode", b => { b.Property("Id") @@ -373,17 +347,49 @@ namespace Ombi.Store.Migrations b.Property("PlexContentId"); + b.Property("PlexServerContentId"); + b.Property("SeasonKey"); b.Property("SeasonNumber"); b.HasKey("Id"); - b.HasIndex("PlexContentId"); + b.HasIndex("PlexServerContentId"); b.ToTable("PlexSeasonsContent"); }); + modelBuilder.Entity("Ombi.Store.Entities.PlexServerContent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AddedAt"); + + b.Property("ImdbId"); + + b.Property("Key"); + + b.Property("Quality"); + + b.Property("ReleaseYear"); + + b.Property("TheMovieDbId"); + + b.Property("Title"); + + b.Property("TvDbId"); + + b.Property("Type"); + + b.Property("Url"); + + b.HasKey("Id"); + + b.ToTable("PlexServerContent"); + }); + modelBuilder.Entity("Ombi.Store.Entities.RadarrCache", b => { b.Property("Id") @@ -689,7 +695,7 @@ namespace Ombi.Store.Migrations modelBuilder.Entity("Ombi.Store.Entities.PlexEpisode", b => { - b.HasOne("Ombi.Store.Entities.PlexContent", "Series") + b.HasOne("Ombi.Store.Entities.PlexServerContent", "Series") .WithMany("Episodes") .HasForeignKey("GrandparentKey") .HasPrincipalKey("Key") @@ -698,10 +704,9 @@ namespace Ombi.Store.Migrations modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b => { - b.HasOne("Ombi.Store.Entities.PlexContent") + b.HasOne("Ombi.Store.Entities.PlexServerContent") .WithMany("Seasons") - .HasForeignKey("PlexContentId") - .OnDelete(DeleteBehavior.Cascade); + .HasForeignKey("PlexServerContentId"); }); modelBuilder.Entity("Ombi.Store.Entities.Requests.ChildRequests", b => diff --git a/src/Ombi.Store/Migrations/20170914122422_Inital.cs b/src/Ombi.Store/Migrations/20171103003202_Inital.cs similarity index 90% rename from src/Ombi.Store/Migrations/20170914122422_Inital.cs rename to src/Ombi.Store/Migrations/20171103003202_Inital.cs index e8d1b0968..77eb681d1 100644 --- a/src/Ombi.Store/Migrations/20170914122422_Inital.cs +++ b/src/Ombi.Store/Migrations/20171103003202_Inital.cs @@ -46,6 +46,7 @@ namespace Ombi.Store.Migrations ConcurrencyStamp = table.Column(type: "TEXT", nullable: true), Email = table.Column(type: "TEXT", maxLength: 256, nullable: true), EmailConfirmed = table.Column(type: "INTEGER", nullable: false), + LastLoggedIn = table.Column(type: "TEXT", nullable: true), LockoutEnabled = table.Column(type: "INTEGER", nullable: false), LockoutEnd = table.Column(type: "TEXT", nullable: true), NormalizedEmail = table.Column(type: "TEXT", maxLength: 256, nullable: true), @@ -81,6 +82,19 @@ namespace Ombi.Store.Migrations table.PrimaryKey("PK_Audit", x => x.Id); }); + migrationBuilder.CreateTable( + name: "CouchPotatoCache", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + TheMovieDbId = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CouchPotatoCache", x => x.Id); + }); + migrationBuilder.CreateTable( name: "EmbyContent", columns: table => new @@ -131,24 +145,26 @@ namespace Ombi.Store.Migrations }); migrationBuilder.CreateTable( - name: "PlexContent", + name: "PlexServerContent", columns: table => new { Id = table.Column(type: "INTEGER", nullable: false) .Annotation("Sqlite:Autoincrement", true), AddedAt = table.Column(type: "TEXT", nullable: false), + ImdbId = table.Column(type: "TEXT", nullable: true), Key = table.Column(type: "INTEGER", nullable: false), - ProviderId = table.Column(type: "TEXT", nullable: true), Quality = table.Column(type: "TEXT", nullable: true), ReleaseYear = table.Column(type: "TEXT", nullable: true), + TheMovieDbId = table.Column(type: "TEXT", nullable: true), Title = table.Column(type: "TEXT", nullable: true), + TvDbId = table.Column(type: "TEXT", nullable: true), Type = table.Column(type: "INTEGER", nullable: false), Url = table.Column(type: "TEXT", nullable: true) }, constraints: table => { - table.PrimaryKey("PK_PlexContent", x => x.Id); - table.UniqueConstraint("AK_PlexContent_Key", x => x.Key); + table.PrimaryKey("PK_PlexServerContent", x => x.Id); + table.UniqueConstraint("AK_PlexServerContent_Key", x => x.Key); }); migrationBuilder.CreateTable( @@ -164,6 +180,34 @@ namespace Ombi.Store.Migrations table.PrimaryKey("PK_RadarrCache", x => x.Id); }); + migrationBuilder.CreateTable( + name: "SonarrCache", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + TvDbId = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SonarrCache", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "SonarrEpisodeCache", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + EpisodeNumber = table.Column(type: "INTEGER", nullable: false), + SeasonNumber = table.Column(type: "INTEGER", nullable: false), + TvDbId = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SonarrEpisodeCache", x => x.Id); + }); + migrationBuilder.CreateTable( name: "TvRequests", columns: table => new @@ -304,10 +348,12 @@ namespace Ombi.Store.Migrations IssueId = table.Column(type: "INTEGER", nullable: true), Overview = table.Column(type: "TEXT", nullable: true), PosterPath = table.Column(type: "TEXT", nullable: true), + QualityOverride = table.Column(type: "INTEGER", nullable: false), ReleaseDate = table.Column(type: "TEXT", nullable: false), RequestType = table.Column(type: "INTEGER", nullable: false), RequestedDate = table.Column(type: "TEXT", nullable: false), RequestedUserId = table.Column(type: "TEXT", nullable: true), + RootPathOverride = table.Column(type: "INTEGER", nullable: false), Status = table.Column(type: "TEXT", nullable: true), TheMovieDbId = table.Column(type: "INTEGER", nullable: false), Title = table.Column(type: "TEXT", nullable: true) @@ -385,9 +431,9 @@ namespace Ombi.Store.Migrations { table.PrimaryKey("PK_PlexEpisode", x => x.Id); table.ForeignKey( - name: "FK_PlexEpisode_PlexContent_GrandparentKey", + name: "FK_PlexEpisode_PlexServerContent_GrandparentKey", column: x => x.GrandparentKey, - principalTable: "PlexContent", + principalTable: "PlexServerContent", principalColumn: "Key", onDelete: ReferentialAction.Cascade); }); @@ -400,6 +446,7 @@ namespace Ombi.Store.Migrations .Annotation("Sqlite:Autoincrement", true), ParentKey = table.Column(type: "INTEGER", nullable: false), PlexContentId = table.Column(type: "INTEGER", nullable: false), + PlexServerContentId = table.Column(type: "INTEGER", nullable: true), SeasonKey = table.Column(type: "INTEGER", nullable: false), SeasonNumber = table.Column(type: "INTEGER", nullable: false) }, @@ -407,11 +454,11 @@ namespace Ombi.Store.Migrations { table.PrimaryKey("PK_PlexSeasonsContent", x => x.Id); table.ForeignKey( - name: "FK_PlexSeasonsContent_PlexContent_PlexContentId", - column: x => x.PlexContentId, - principalTable: "PlexContent", + name: "FK_PlexSeasonsContent_PlexServerContent_PlexServerContentId", + column: x => x.PlexServerContentId, + principalTable: "PlexServerContent", principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( @@ -628,9 +675,9 @@ namespace Ombi.Store.Migrations column: "GrandparentKey"); migrationBuilder.CreateIndex( - name: "IX_PlexSeasonsContent_PlexContentId", + name: "IX_PlexSeasonsContent_PlexServerContentId", table: "PlexSeasonsContent", - column: "PlexContentId"); + column: "PlexServerContentId"); migrationBuilder.CreateIndex( name: "IX_SeasonRequests_ChildRequestId", @@ -676,6 +723,9 @@ namespace Ombi.Store.Migrations migrationBuilder.DropTable( name: "Audit"); + migrationBuilder.DropTable( + name: "CouchPotatoCache"); + migrationBuilder.DropTable( name: "EmbyEpisode"); @@ -700,6 +750,12 @@ namespace Ombi.Store.Migrations migrationBuilder.DropTable( name: "RadarrCache"); + migrationBuilder.DropTable( + name: "SonarrCache"); + + migrationBuilder.DropTable( + name: "SonarrEpisodeCache"); + migrationBuilder.DropTable( name: "Tokens"); @@ -719,7 +775,7 @@ namespace Ombi.Store.Migrations name: "MovieRequests"); migrationBuilder.DropTable( - name: "PlexContent"); + name: "PlexServerContent"); migrationBuilder.DropTable( name: "ChildRequests"); diff --git a/src/Ombi.Store/Migrations/OmbiContextModelSnapshot.cs b/src/Ombi.Store/Migrations/OmbiContextModelSnapshot.cs index efae58afa..a605222ff 100644 --- a/src/Ombi.Store/Migrations/OmbiContextModelSnapshot.cs +++ b/src/Ombi.Store/Migrations/OmbiContextModelSnapshot.cs @@ -313,32 +313,6 @@ namespace Ombi.Store.Migrations b.ToTable("AspNetUsers"); }); - modelBuilder.Entity("Ombi.Store.Entities.PlexContent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AddedAt"); - - b.Property("Key"); - - b.Property("ProviderId"); - - b.Property("Quality"); - - b.Property("ReleaseYear"); - - b.Property("Title"); - - b.Property("Type"); - - b.Property("Url"); - - b.HasKey("Id"); - - b.ToTable("PlexContent"); - }); - modelBuilder.Entity("Ombi.Store.Entities.PlexEpisode", b => { b.Property("Id") @@ -372,17 +346,49 @@ namespace Ombi.Store.Migrations b.Property("PlexContentId"); + b.Property("PlexServerContentId"); + b.Property("SeasonKey"); b.Property("SeasonNumber"); b.HasKey("Id"); - b.HasIndex("PlexContentId"); + b.HasIndex("PlexServerContentId"); b.ToTable("PlexSeasonsContent"); }); + modelBuilder.Entity("Ombi.Store.Entities.PlexServerContent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AddedAt"); + + b.Property("ImdbId"); + + b.Property("Key"); + + b.Property("Quality"); + + b.Property("ReleaseYear"); + + b.Property("TheMovieDbId"); + + b.Property("Title"); + + b.Property("TvDbId"); + + b.Property("Type"); + + b.Property("Url"); + + b.HasKey("Id"); + + b.ToTable("PlexServerContent"); + }); + modelBuilder.Entity("Ombi.Store.Entities.RadarrCache", b => { b.Property("Id") @@ -688,7 +694,7 @@ namespace Ombi.Store.Migrations modelBuilder.Entity("Ombi.Store.Entities.PlexEpisode", b => { - b.HasOne("Ombi.Store.Entities.PlexContent", "Series") + b.HasOne("Ombi.Store.Entities.PlexServerContent", "Series") .WithMany("Episodes") .HasForeignKey("GrandparentKey") .HasPrincipalKey("Key") @@ -697,10 +703,9 @@ namespace Ombi.Store.Migrations modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b => { - b.HasOne("Ombi.Store.Entities.PlexContent") + b.HasOne("Ombi.Store.Entities.PlexServerContent") .WithMany("Seasons") - .HasForeignKey("PlexContentId") - .OnDelete(DeleteBehavior.Cascade); + .HasForeignKey("PlexServerContentId"); }); modelBuilder.Entity("Ombi.Store.Entities.Requests.ChildRequests", b => diff --git a/src/Ombi.Store/Repository/IPlexContentRepository.cs b/src/Ombi.Store/Repository/IPlexContentRepository.cs index 7b9ae7c9a..4996eac0b 100644 --- a/src/Ombi.Store/Repository/IPlexContentRepository.cs +++ b/src/Ombi.Store/Repository/IPlexContentRepository.cs @@ -5,13 +5,13 @@ using Ombi.Store.Entities; namespace Ombi.Store.Repository { - public interface IPlexContentRepository : IRepository + public interface IPlexContentRepository : IRepository { - Task Add(PlexContent content); + Task Add(PlexServerContent content); Task ContentExists(string providerId); - Task Get(string providerId); - Task GetByKey(int key); - Task Update(PlexContent existingContent); + Task Get(string providerId); + Task GetByKey(int key); + Task Update(PlexServerContent existingContent); IQueryable GetAllEpisodes(); Task Add(PlexEpisode content); Task GetEpisodeByKey(int key); diff --git a/src/Ombi.Store/Repository/PlexContentRepository.cs b/src/Ombi.Store/Repository/PlexContentRepository.cs index 10d464d16..284489cf4 100644 --- a/src/Ombi.Store/Repository/PlexContentRepository.cs +++ b/src/Ombi.Store/Repository/PlexContentRepository.cs @@ -1,7 +1,7 @@ #region Copyright // /************************************************************************ // Copyright (c) 2017 Jamie Rees -// File: PlexContentRepository.cs +// File: PlexServerContentRepository.cs // Created By: Jamie Rees // // Permission is hereby granted, free of charge, to any person obtaining @@ -34,10 +34,10 @@ using Ombi.Store.Entities; namespace Ombi.Store.Repository { - public class PlexContentRepository : Repository, IPlexContentRepository + public class PlexServerContentRepository : Repository, IPlexContentRepository { - public PlexContentRepository(IOmbiContext db) : base(db) + public PlexServerContentRepository(IOmbiContext db) : base(db) { Db = db; } @@ -47,22 +47,36 @@ namespace Ombi.Store.Repository public async Task ContentExists(string providerId) { - return await Db.PlexContent.AnyAsync(x => x.ProviderId == providerId); + var any = await Db.PlexServerContent.AnyAsync(x => x.ImdbId == providerId); + if (!any) + { + any = await Db.PlexServerContent.AnyAsync(x => x.TheMovieDbId == providerId); + if (!any) + { + any = await Db.PlexServerContent.AnyAsync(x => x.TvDbId == providerId); + } + } + return any; } - public async Task Get(string providerId) + public async Task Get(string providerId) { - return await Db.PlexContent.FirstOrDefaultAsync(x => x.ProviderId == providerId); + var item = await Db.PlexServerContent.FirstOrDefaultAsync(x => x.ImdbId == providerId); + if (item == null) + { + item = await Db.PlexServerContent.FirstOrDefaultAsync(x => x.TheMovieDbId == providerId) ?? await Db.PlexServerContent.FirstOrDefaultAsync(x => x.TvDbId == providerId); + } + return item; } - public async Task GetByKey(int key) + public async Task GetByKey(int key) { - return await Db.PlexContent.Include(x => x.Seasons).FirstOrDefaultAsync(x => x.Key == key); + return await Db.PlexServerContent.Include(x => x.Seasons).FirstOrDefaultAsync(x => x.Key == key); } - public async Task Update(PlexContent existingContent) + public async Task Update(PlexServerContent existingContent) { - Db.PlexContent.Update(existingContent); + Db.PlexServerContent.Update(existingContent); await Db.SaveChangesAsync(); } diff --git a/src/Ombi/ClientApp/app/search/moviesearch.component.ts b/src/Ombi/ClientApp/app/search/moviesearch.component.ts index 0de3738c5..93fef7388 100644 --- a/src/Ombi/ClientApp/app/search/moviesearch.component.ts +++ b/src/Ombi/ClientApp/app/search/moviesearch.component.ts @@ -148,7 +148,7 @@ export class MovieSearchComponent implements OnInit { private updateItem(key: ISearchMovieResult, updated: ISearchMovieResult) { const index = this.movieResults.indexOf(key, 0); if (index > -1) { - + debugger; const copy = { ...this.movieResults[index] }; this.movieResults[index] = updated; this.movieResults[index].background = copy.background;