diff --git a/Kyoo.Common/Models/Show.cs b/Kyoo.Common/Models/Show.cs index 1d69b2be..a580a259 100644 --- a/Kyoo.Common/Models/Show.cs +++ b/Kyoo.Common/Models/Show.cs @@ -36,7 +36,7 @@ namespace Kyoo.Models get { return GenreLinks?.Select(x => x.Genre).OrderBy(x => x.Name); } set { GenreLinks = value?.Select(x => new GenreLink(this, x)).ToList(); } } - [JsonIgnore] public virtual List GenreLinks { get; set; } + [JsonIgnore] public virtual IEnumerable GenreLinks { get; set; } public virtual Studio Studio { get; set; } [JsonIgnore] public virtual IEnumerable People { get; set; } [JsonIgnore] public virtual IEnumerable Seasons { get; set; } diff --git a/Kyoo/Controllers/LibraryManager.cs b/Kyoo/Controllers/LibraryManager.cs index a4e20dac..6f22cdab 100644 --- a/Kyoo/Controllers/LibraryManager.cs +++ b/Kyoo/Controllers/LibraryManager.cs @@ -347,8 +347,25 @@ namespace Kyoo.Controllers { if (show == null) return 0; + if (!_database.Entry(show).IsKeySet) _database.Shows.Add(show); + + if (show.Studio != null) // Do not query it if the studio is already attached. // Do not set this value if the database does not found the studio. + show.Studio = _database.Studios.FirstOrDefault(x => x.Slug == show.Studio.Slug); + // show.GenreLinks = show.GenreLinks?.Select(x => + // { + // x.Genre = _database.Genres.FirstOrDefault(y => y.Slug == x.Genre.Slug) ?? x.Genre; + // return x; + // }); + // show.People = show.People?.Select(x => + // { + // x.People = _database.Peoples.FirstOrDefault(y => y.Slug == x.Slug) ?? x.People; + // return x; + // }); + // show.Seasons = show.Seasons?.Select(x => _database.Seasons.FirstOrDefault(y => y.SeasonNumber == x.SeasonNumber) ?? x); + // show.Episodes = show.Episodes?.Select(x => _database.Episodes.FirstOrDefault(y => y.EpisodeNumber == x.EpisodeNumber && y.SeasonNumber == x.SeasonNumber) ?? x); + // _database.SaveChanges(); return show.ID; } diff --git a/Kyoo/Models/DatabaseContext.cs b/Kyoo/Models/DatabaseContext.cs index 87c6f012..63b5fc92 100644 --- a/Kyoo/Models/DatabaseContext.cs +++ b/Kyoo/Models/DatabaseContext.cs @@ -65,7 +65,7 @@ namespace Kyoo public class DatabaseContext : DbContext { - public DatabaseContext(DbContextOptions options) : base(options) {} + public DatabaseContext(DbContextOptions options) : base(options) { } public DbSet Libraries { get; set; } public DbSet Collections { get; set; } diff --git a/Kyoo/Startup.cs b/Kyoo/Startup.cs index 4b944e35..4115bf34 100644 --- a/Kyoo/Startup.cs +++ b/Kyoo/Startup.cs @@ -52,8 +52,8 @@ namespace Kyoo services.AddDbContext(options => { options.UseLazyLoadingProxies() - .UseSqlite(_configuration.GetConnectionString("Database")); - //.UseLoggerFactory(LoggerFactory.Create(builder => builder.AddConsole())); + .UseSqlite(_configuration.GetConnectionString("Database")) + .UseLoggerFactory(LoggerFactory.Create(builder => builder.AddConsole())); }); services.AddDbContext(options => diff --git a/Kyoo/Tasks/Crawler.cs b/Kyoo/Tasks/Crawler.cs index 77cfe2a7..219e65e1 100644 --- a/Kyoo/Tasks/Crawler.cs +++ b/Kyoo/Tasks/Crawler.cs @@ -144,9 +144,10 @@ namespace Kyoo.Controllers if (seasonNumber == -1) return null; Season season = _libraryManager.GetSeason(show.Slug, seasonNumber); - if (season != null) - return await Task.FromResult(season); - return await _metadataProvider.GetSeason(show, seasonNumber, library); + if (season == null) + return await _metadataProvider.GetSeason(show, seasonNumber, library); + season.Show = show; + return await Task.FromResult(season); } private async Task GetEpisode(Show show, Season season, long episodeNumber, long absoluteNumber, string episodePath, Library library) diff --git a/Kyoo/Views/API/ShowsAPI.cs b/Kyoo/Views/API/ShowsAPI.cs index 1bf19449..d21850a0 100644 --- a/Kyoo/Views/API/ShowsAPI.cs +++ b/Kyoo/Views/API/ShowsAPI.cs @@ -47,13 +47,11 @@ namespace Kyoo.Api { if (!ModelState.IsValid) return BadRequest(show); - + show.ID = 0; Show old = _libraryManager.GetShowBySlug(slug); if (old == null) return NotFound(); - show.ID = 0; - //Should prevent duplicates (If the user put another studio, it is always created even if there is already a studio with the same slug. - old = Utility.Complete(old, show); + //old = Utility.Complete(old, show); _libraryManager.RegisterShow(old); return Ok(); }