diff --git a/Kyoo.Common/Models/Genre.cs b/Kyoo.Common/Models/Genre.cs index 1935189e..d4c43ce1 100644 --- a/Kyoo.Common/Models/Genre.cs +++ b/Kyoo.Common/Models/Genre.cs @@ -1,4 +1,7 @@ -using Newtonsoft.Json; +using System.Collections.Generic; +using System.Linq; +using Kyoo.Models.Attributes; +using Newtonsoft.Json; namespace Kyoo.Models { @@ -8,7 +11,13 @@ namespace Kyoo.Models public string Slug { get; set; } public string Name { get; set; } - // public IEnumerable Shows { get; set; } + [NotMergable] [JsonIgnore] public IEnumerable Links { get; set; } + + [NotMergable] [JsonIgnore] public IEnumerable Shows + { + get => Links.Select(x => x.Show); + set => Links = value?.Select(x => new GenreLink(x, this)); + } public Genre() {} diff --git a/Kyoo/Controllers/Repositories/GenreRepository.cs b/Kyoo/Controllers/Repositories/GenreRepository.cs index 116dd0ec..a9e444ea 100644 --- a/Kyoo/Controllers/Repositories/GenreRepository.cs +++ b/Kyoo/Controllers/Repositories/GenreRepository.cs @@ -115,8 +115,11 @@ namespace Kyoo.Controllers { if (obj == null) throw new ArgumentNullException(nameof(obj)); - - _database.Genres.Remove(obj); + + _database.Entry(obj).State = EntityState.Deleted; + if (obj.Links != null) + foreach (GenreLink link in obj.Links) + _database.Entry(link).State = EntityState.Deleted; await _database.SaveChangesAsync(); } }