mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-07-09 03:04:20 -04:00
Solving bugs with related entities in repositories
This commit is contained in:
parent
2d77ca992b
commit
e7a3cfc2cc
@ -11,7 +11,7 @@
|
||||
<Company>SDG</Company>
|
||||
<PackageLicenseExpression>GPL-3.0-or-later</PackageLicenseExpression>
|
||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
||||
<PackageVersion>1.0.20</PackageVersion>
|
||||
<PackageVersion>1.0.21</PackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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<People> 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<IProviderRepository>();
|
||||
|
||||
x.ProviderID = await providers.CreateIfNotExists(x.Provider);
|
||||
return x;
|
||||
}))).ToList();
|
||||
}
|
||||
|
@ -61,11 +61,11 @@ 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);
|
||||
_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;
|
||||
}
|
||||
|
@ -37,7 +37,10 @@ namespace Kyoo.Api
|
||||
[Authorize(Policy="Read")]
|
||||
public IEnumerable<Show> 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}")]
|
||||
|
Loading…
x
Reference in New Issue
Block a user