From 468847b103f7ae28ffc373bbf227a760fe5a5e58 Mon Sep 17 00:00:00 2001 From: Florian Dupret <34862846+sephrat@users.noreply.github.com> Date: Sun, 16 Jan 2022 19:32:26 +0100 Subject: [PATCH] Clean up leftovers --- .../Jobs/Emby/EmbyContentSync.cs | 4 +-- .../Jobs/Jellyfin/JellyfinContentSync.cs | 6 ++-- src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs | 8 ++--- .../Jobs/Plex/PlexContentSync.cs | 6 ++-- src/Ombi.Store/Entities/EmbyContent.cs | 1 + .../Entities/IMediaServerContent.cs | 4 +-- src/Ombi.Store/Entities/JellyfinContent.cs | 1 + src/Ombi.Store/Entities/MediaServerContent.cs | 8 ++--- src/Ombi.Store/Entities/PlexServerContent.cs | 2 ++ .../IMediaServerContentRepository.cs | 8 ++++- .../IMediaServerContentRepositoryLight.cs | 30 ------------------- .../Repository/IPlexContentRepository.cs | 2 +- .../Repository/MediaServerRepository.cs | 5 ---- .../Repository/PlexContentRepository.cs | 8 ++--- 14 files changed, 28 insertions(+), 65 deletions(-) delete mode 100644 src/Ombi.Store/Repository/IMediaServerContentRepositoryLight.cs diff --git a/src/Ombi.Schedule/Jobs/Emby/EmbyContentSync.cs b/src/Ombi.Schedule/Jobs/Emby/EmbyContentSync.cs index 8cf58391d..cb7eaefd3 100644 --- a/src/Ombi.Schedule/Jobs/Emby/EmbyContentSync.cs +++ b/src/Ombi.Schedule/Jobs/Emby/EmbyContentSync.cs @@ -169,7 +169,6 @@ namespace Ombi.Schedule.Jobs.Emby EmbyId = tvShow.Id, Url = EmbyHelper.GetEmbyMediaUrl(tvShow.Id, server?.ServerId, server.ServerHostname), AddedAt = DateTime.UtcNow, - Repository = _repo }); } else @@ -259,8 +258,7 @@ namespace Ombi.Schedule.Jobs.Emby Type = MediaType.Movie, EmbyId = movieInfo.Id, Url = EmbyHelper.GetEmbyMediaUrl(movieInfo.Id, server?.ServerId, server.ServerHostname), - AddedAt = DateTime.UtcNow, - Repository = _repo + AddedAt = DateTime.UtcNow }); } else diff --git a/src/Ombi.Schedule/Jobs/Jellyfin/JellyfinContentSync.cs b/src/Ombi.Schedule/Jobs/Jellyfin/JellyfinContentSync.cs index 1789498e3..60ee42210 100644 --- a/src/Ombi.Schedule/Jobs/Jellyfin/JellyfinContentSync.cs +++ b/src/Ombi.Schedule/Jobs/Jellyfin/JellyfinContentSync.cs @@ -146,8 +146,7 @@ namespace Ombi.Schedule.Jobs.Jellyfin Type = MediaType.Series, JellyfinId = tvShow.Id, Url = JellyfinHelper.GetJellyfinMediaUrl(tvShow.Id, server?.ServerId, server.ServerHostname), - AddedAt = DateTime.UtcNow, - Repository = _repo + AddedAt = DateTime.UtcNow }); } else @@ -227,8 +226,7 @@ namespace Ombi.Schedule.Jobs.Jellyfin Type = MediaType.Movie, JellyfinId = movieInfo.Id, Url = JellyfinHelper.GetJellyfinMediaUrl(movieInfo.Id, server?.ServerId, server.ServerHostname), - AddedAt = DateTime.UtcNow, - Repository = _repo + AddedAt = DateTime.UtcNow }); } else diff --git a/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs b/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs index 53ab15f00..4659e95cd 100644 --- a/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs +++ b/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs @@ -250,7 +250,7 @@ namespace Ombi.Schedule.Jobs.Ombi recentlyAddedLog.Add(new RecentlyAddedLog { AddedAt = DateTime.Now, - Type = p.Repository?.RecentlyAddedType ?? RecentlyAddedType.Plex, // TODO + Type = p.RecentlyAddedType, ContentType = ContentType.Parent, ContentId = StringHelper.IntParseLinq(p.TheMovieDbId), }); @@ -264,7 +264,7 @@ namespace Ombi.Schedule.Jobs.Ombi recentlyAddedLog.Add(new RecentlyAddedLog { AddedAt = DateTime.Now, - Type = p.Series.Repository?.RecentlyAddedType ?? RecentlyAddedType.Plex, // TODO + Type = p.Series.RecentlyAddedType, ContentType = ContentType.Episode, ContentId = StringHelper.IntParseLinq(p.Series.TvDbId), EpisodeNumber = p.EpisodeNumber, @@ -510,7 +510,7 @@ namespace Ombi.Schedule.Jobs.Ombi continue; } var info = await _movieApi.GetMovieInformationWithExtraInfo(movieDbId, defaultLanguageCode); - var mediaurl = content.GetExternalUrl(); + var mediaurl = content.Url; if (info == null) { continue; @@ -720,7 +720,7 @@ namespace Ombi.Schedule.Jobs.Ombi AddBackgroundInsideTable($"https://image.tmdb.org/t/p/w1280/"); } AddPosterInsideTable(banner); - AddMediaServerUrl(t.GetExternalUrl(), banner); + AddMediaServerUrl(t.Url, banner); AddInfoTable(); AddTvTitle(info, tvInfo); diff --git a/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs b/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs index c2a9d20bf..637d7591d 100644 --- a/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs +++ b/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs @@ -353,8 +353,7 @@ namespace Ombi.Schedule.Jobs.Plex Title = movie.title, Url = PlexHelper.GetPlexMediaUrl(servers.MachineIdentifier, movie.ratingKey), Seasons = new List(), - Quality = movie.Media?.FirstOrDefault()?.videoResolution ?? string.Empty, - Repository = Repo + Quality = movie.Media?.FirstOrDefault()?.videoResolution ?? string.Empty }; if (providerIds.ImdbId.HasValue()) { @@ -557,8 +556,7 @@ namespace Ombi.Schedule.Jobs.Plex Type = MediaType.Series, Title = show.title, Url = PlexHelper.GetPlexMediaUrl(servers.MachineIdentifier, show.ratingKey), - Seasons = new List(), - Repository = Repo + Seasons = new List() }; await GetProviderIds(showMetadata, item); diff --git a/src/Ombi.Store/Entities/EmbyContent.cs b/src/Ombi.Store/Entities/EmbyContent.cs index 07fb1110e..4005e7a48 100644 --- a/src/Ombi.Store/Entities/EmbyContent.cs +++ b/src/Ombi.Store/Entities/EmbyContent.cs @@ -40,6 +40,7 @@ namespace Ombi.Store.Entities /// public string ProviderId { get; set; } public string EmbyId { get; set; } + public override RecentlyAddedType RecentlyAddedType => RecentlyAddedType.Emby; } } \ No newline at end of file diff --git a/src/Ombi.Store/Entities/IMediaServerContent.cs b/src/Ombi.Store/Entities/IMediaServerContent.cs index 889f66c1c..3e78dffcc 100644 --- a/src/Ombi.Store/Entities/IMediaServerContent.cs +++ b/src/Ombi.Store/Entities/IMediaServerContent.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; -using Ombi.Store.Repository; namespace Ombi.Store.Entities { @@ -12,10 +11,9 @@ namespace Ombi.Store.Entities public string TvDbId { get; set; } public string TheMovieDbId { get; set; } public MediaType Type { get; set; } - public IMediaServerContentRepositoryLight Repository { get; } + public RecentlyAddedType RecentlyAddedType{ get; } public string Url { get; set; } - public string GetExternalUrl(); public ICollection Episodes { get; set; } diff --git a/src/Ombi.Store/Entities/JellyfinContent.cs b/src/Ombi.Store/Entities/JellyfinContent.cs index a3744adeb..da77c910c 100644 --- a/src/Ombi.Store/Entities/JellyfinContent.cs +++ b/src/Ombi.Store/Entities/JellyfinContent.cs @@ -40,6 +40,7 @@ namespace Ombi.Store.Entities /// public string ProviderId { get; set; } public string JellyfinId { get; set; } + public override RecentlyAddedType RecentlyAddedType => RecentlyAddedType.Jellyfin; } } diff --git a/src/Ombi.Store/Entities/MediaServerContent.cs b/src/Ombi.Store/Entities/MediaServerContent.cs index 83cc3059b..ab99090f4 100644 --- a/src/Ombi.Store/Entities/MediaServerContent.cs +++ b/src/Ombi.Store/Entities/MediaServerContent.cs @@ -27,13 +27,9 @@ namespace Ombi.Store.Entities [NotMapped] public bool HasTheMovieDb => !string.IsNullOrEmpty(TheMovieDbId); - - [NotMapped] //TODO: instantiate this variable upon read // something in ExternalContext.cs? - public IMediaServerContentRepositoryLight Repository { get; set; } - public string GetExternalUrl() { - return string.Empty; // TODO - } + [NotMapped] + public abstract RecentlyAddedType RecentlyAddedType { get; } } public abstract class MediaServerEpisode: Entity, IMediaServerEpisode diff --git a/src/Ombi.Store/Entities/PlexServerContent.cs b/src/Ombi.Store/Entities/PlexServerContent.cs index c2e6b8de0..a9116ad16 100644 --- a/src/Ombi.Store/Entities/PlexServerContent.cs +++ b/src/Ombi.Store/Entities/PlexServerContent.cs @@ -51,6 +51,8 @@ namespace Ombi.Store.Entities get => (ICollection)Episodes; set => Episodes = (ICollection)value; } + + public override RecentlyAddedType RecentlyAddedType => RecentlyAddedType.Plex; } [Table("PlexSeasonsContent")] diff --git a/src/Ombi.Store/Repository/IMediaServerContentRepository.cs b/src/Ombi.Store/Repository/IMediaServerContentRepository.cs index 1f81a40ba..73cc00fde 100644 --- a/src/Ombi.Store/Repository/IMediaServerContentRepository.cs +++ b/src/Ombi.Store/Repository/IMediaServerContentRepository.cs @@ -5,8 +5,14 @@ using Ombi.Store.Entities; namespace Ombi.Store.Repository { - public interface IMediaServerContentRepository : IExternalRepository, IMediaServerContentRepositoryLight + public interface IMediaServerContentRepository : IExternalRepository where Content : IMediaServerContent { + RecentlyAddedType RecentlyAddedType{ get; } + Task Update(IMediaServerContent existingContent); + IQueryable GetAllEpisodes(); + Task Add(IMediaServerEpisode content); + Task AddRange(IEnumerable content); + void UpdateWithoutSave(IMediaServerContent existingContent); } } \ No newline at end of file diff --git a/src/Ombi.Store/Repository/IMediaServerContentRepositoryLight.cs b/src/Ombi.Store/Repository/IMediaServerContentRepositoryLight.cs deleted file mode 100644 index 1f1749ae8..000000000 --- a/src/Ombi.Store/Repository/IMediaServerContentRepositoryLight.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Ombi.Store.Entities; - -namespace Ombi.Store.Repository -{ - // TOOD: this is a mess done to bypass the fact that - // I can't pass around IMediaServerContentRepository as a parameter - // because I want to pass it a generic IMediaServerContent as a 'type' - // and casting from concrete classes doesn't work due to my poor C# knowledge - - // My workaround so far has been to use this lightened interface, - // but the ever-growing number of wrapper methods for methods coming from IRepository - // is starting to smell (see implementing class MediaServerContentRepository). - public interface IMediaServerContentRepositoryLight - { - RecentlyAddedType RecentlyAddedType{ get; } - Task Update(IMediaServerContent existingContent); - - // IQueryable GetAllContent(); - // Task FindContent(object key); - // Task SaveChangesAsync(); - - IQueryable GetAllEpisodes(); - Task Add(IMediaServerEpisode content); - Task AddRange(IEnumerable content); - void UpdateWithoutSave(IMediaServerContent existingContent); - } -} \ No newline at end of file diff --git a/src/Ombi.Store/Repository/IPlexContentRepository.cs b/src/Ombi.Store/Repository/IPlexContentRepository.cs index 8203959bc..f3c6d0ae2 100644 --- a/src/Ombi.Store/Repository/IPlexContentRepository.cs +++ b/src/Ombi.Store/Repository/IPlexContentRepository.cs @@ -12,7 +12,7 @@ namespace Ombi.Store.Repository { Task ContentExists(string providerId); Task Get(string providerId, ProviderType type); - Task GetByType(string providerId, ProviderType type, MediaType MediaServerType); + Task GetByType(string providerId, ProviderType type, MediaType mediaType); Task GetByKey(int key); Task GetEpisodeByKey(int key); IEnumerable GetWhereContentByCustom(Expression> predicate); diff --git a/src/Ombi.Store/Repository/MediaServerRepository.cs b/src/Ombi.Store/Repository/MediaServerRepository.cs index 3fdc35ea8..0f458ee2b 100644 --- a/src/Ombi.Store/Repository/MediaServerRepository.cs +++ b/src/Ombi.Store/Repository/MediaServerRepository.cs @@ -17,11 +17,6 @@ namespace Ombi.Store.Repository } public abstract Task Update(IMediaServerContent existingContent); - - // TOOD: this smells: trying to wrap ExternalRepository methods in IMediaServerContentRepositoryLight for generic consumption - public IQueryable GetAllContent() => (IQueryable)GetAll(); - public async Task FindContent(object key) => (IMediaServerContent)await Find(key); - public abstract IQueryable GetAllEpisodes(); public abstract Task Add(IMediaServerEpisode content); public abstract Task AddRange(IEnumerable content); diff --git a/src/Ombi.Store/Repository/PlexContentRepository.cs b/src/Ombi.Store/Repository/PlexContentRepository.cs index 6429e679f..db7251987 100644 --- a/src/Ombi.Store/Repository/PlexContentRepository.cs +++ b/src/Ombi.Store/Repository/PlexContentRepository.cs @@ -75,16 +75,16 @@ namespace Ombi.Store.Repository return null; } - public async Task GetByType(string providerId, ProviderType type, MediaType plexType) + public async Task GetByType(string providerId, ProviderType type, MediaType mediaType) { switch (type) { case ProviderType.ImdbId: - return await Db.PlexServerContent.FirstOrDefaultAsync(x => x.ImdbId == providerId && x.Type == plexType); + return await Db.PlexServerContent.FirstOrDefaultAsync(x => x.ImdbId == providerId && x.Type == mediaType); case ProviderType.TheMovieDbId: - return await Db.PlexServerContent.FirstOrDefaultAsync(x => x.TheMovieDbId == providerId && x.Type == plexType); + return await Db.PlexServerContent.FirstOrDefaultAsync(x => x.TheMovieDbId == providerId && x.Type == mediaType); case ProviderType.TvDbId: - return await Db.PlexServerContent.FirstOrDefaultAsync(x => x.TvDbId == providerId && x.Type == plexType); + return await Db.PlexServerContent.FirstOrDefaultAsync(x => x.TvDbId == providerId && x.Type == mediaType); default: break; }