diff --git a/Kyoo.Common/Kyoo.Common.csproj b/Kyoo.Common/Kyoo.Common.csproj
index 7799859f..bdd20619 100644
--- a/Kyoo.Common/Kyoo.Common.csproj
+++ b/Kyoo.Common/Kyoo.Common.csproj
@@ -11,7 +11,7 @@
SDG
GPL-3.0-or-later
true
- 1.0.20
+ 1.0.21
diff --git a/Kyoo/Controllers/Repositories/EpisodeRepository.cs b/Kyoo/Controllers/Repositories/EpisodeRepository.cs
index 157a7a80..231107b6 100644
--- a/Kyoo/Controllers/Repositories/EpisodeRepository.cs
+++ b/Kyoo/Controllers/Repositories/EpisodeRepository.cs
@@ -66,7 +66,10 @@ namespace Kyoo.Controllers
throw new ArgumentNullException(nameof(obj));
await Validate(obj);
- await _database.Episodes.AddAsync(obj);
+ _database.Entry(obj).State = EntityState.Added;
+ if (obj.ExternalIDs != null)
+ foreach (MetadataID entry in obj.ExternalIDs)
+ _database.Entry(entry).State = EntityState.Added;
await _database.SaveChangesAsync();
return obj.ID;
}
diff --git a/Kyoo/Controllers/Repositories/LibraryRepository.cs b/Kyoo/Controllers/Repositories/LibraryRepository.cs
index 9df08f4b..4df5a1d0 100644
--- a/Kyoo/Controllers/Repositories/LibraryRepository.cs
+++ b/Kyoo/Controllers/Repositories/LibraryRepository.cs
@@ -49,9 +49,11 @@ namespace Kyoo.Controllers
if (obj == null)
throw new ArgumentNullException(nameof(obj));
- obj.Links = null;
await Validate(obj);
_database.Entry(obj).State = EntityState.Added;
+ if (obj.ProviderLinks != null)
+ foreach (ProviderLink entry in obj.ProviderLinks)
+ _database.Entry(entry).State = EntityState.Added;
await _database.SaveChangesAsync();
return obj.ID;
}
diff --git a/Kyoo/Controllers/Repositories/PeopleRepository.cs b/Kyoo/Controllers/Repositories/PeopleRepository.cs
index d6fd7e3f..26bcc825 100644
--- a/Kyoo/Controllers/Repositories/PeopleRepository.cs
+++ b/Kyoo/Controllers/Repositories/PeopleRepository.cs
@@ -5,18 +5,19 @@ using System.Threading.Tasks;
using Kyoo.Models;
using Kyoo.Models.Exceptions;
using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
namespace Kyoo.Controllers
{
public class PeopleRepository : IPeopleRepository
{
private readonly DatabaseContext _database;
- private readonly IProviderRepository _providers;
+ private readonly IServiceProvider _serviceProvider;
- public PeopleRepository(DatabaseContext database, IProviderRepository providers)
+ public PeopleRepository(DatabaseContext database, IServiceProvider serviceProvider)
{
_database = database;
- _providers = providers;
+ _serviceProvider = serviceProvider;
}
public Task Get(int id)
@@ -48,9 +49,10 @@ namespace Kyoo.Controllers
throw new ArgumentNullException(nameof(obj));
await Validate(obj);
- obj.Roles = null;
-
- await _database.Peoples.AddAsync(obj);
+ _database.Entry(obj).State = EntityState.Added;
+ if (obj.ExternalIDs != null)
+ foreach (MetadataID entry in obj.ExternalIDs)
+ _database.Entry(entry).State = EntityState.Added;
await _database.SaveChangesAsync();
return obj.ID;
}
@@ -87,7 +89,10 @@ namespace Kyoo.Controllers
{
obj.ExternalIDs = (await Task.WhenAll(obj.ExternalIDs.Select(async x =>
{
- x.ProviderID = await _providers.CreateIfNotExists(x.Provider);
+ using IServiceScope serviceScope = _serviceProvider.CreateScope();
+ IProviderRepository providers = serviceScope.ServiceProvider.GetService();
+
+ x.ProviderID = await providers.CreateIfNotExists(x.Provider);
return x;
}))).ToList();
}
diff --git a/Kyoo/Controllers/Repositories/SeasonRepository.cs b/Kyoo/Controllers/Repositories/SeasonRepository.cs
index bf06c538..6e514871 100644
--- a/Kyoo/Controllers/Repositories/SeasonRepository.cs
+++ b/Kyoo/Controllers/Repositories/SeasonRepository.cs
@@ -60,12 +60,12 @@ namespace Kyoo.Controllers
{
if (obj == null)
throw new ArgumentNullException(nameof(obj));
-
- obj.Show = null;
- obj.Episodes = null;
- await Validate(obj);
- await _database.Seasons.AddAsync(obj);
+ await Validate(obj);
+ _database.Entry(obj).State = EntityState.Added;
+ if (obj.ExternalIDs != null)
+ foreach (MetadataID entry in obj.ExternalIDs)
+ _database.Entry(entry).State = EntityState.Added;
await _database.SaveChangesAsync();
return obj.ID;
}
diff --git a/Kyoo/Views/API/ShowsAPI.cs b/Kyoo/Views/API/ShowsAPI.cs
index e92c028a..a22a485e 100644
--- a/Kyoo/Views/API/ShowsAPI.cs
+++ b/Kyoo/Views/API/ShowsAPI.cs
@@ -37,7 +37,10 @@ namespace Kyoo.Api
[Authorize(Policy="Read")]
public IEnumerable GetShows()
{
- return _database.LibraryLinks.AsEnumerable().Select(x => x.Show ?? x.Collection.AsShow());
+ return _database.LibraryLinks
+ .Include(x => x.Show)
+ .Include(x => x.Collection)
+ .AsEnumerable().Select(x => x.Show ?? x.Collection.AsShow()).ToList();
}
[HttpGet("{slug}")]