mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-07-07 10:14:13 -04:00
Trying to prevent duplicated of related entities
This commit is contained in:
parent
e890c05660
commit
9b42680b31
@ -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<GenreLink> GenreLinks { get; set; }
|
||||
[JsonIgnore] public virtual IEnumerable<GenreLink> GenreLinks { get; set; }
|
||||
public virtual Studio Studio { get; set; }
|
||||
[JsonIgnore] public virtual IEnumerable<PeopleLink> People { get; set; }
|
||||
[JsonIgnore] public virtual IEnumerable<Season> Seasons { get; set; }
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ namespace Kyoo
|
||||
|
||||
public class DatabaseContext : DbContext
|
||||
{
|
||||
public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options) {}
|
||||
public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options) { }
|
||||
|
||||
public DbSet<Library> Libraries { get; set; }
|
||||
public DbSet<Collection> Collections { get; set; }
|
||||
|
@ -52,8 +52,8 @@ namespace Kyoo
|
||||
services.AddDbContext<DatabaseContext>(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<IdentityDatabase>(options =>
|
||||
|
@ -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<Episode> GetEpisode(Show show, Season season, long episodeNumber, long absoluteNumber, string episodePath, Library library)
|
||||
|
@ -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();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user