mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-07-07 10:14:13 -04:00
ShowRepository: Fixing relation adding
This commit is contained in:
parent
181eb5ba2e
commit
c0b83d2d58
@ -74,6 +74,26 @@ namespace Kyoo.Tests.Database
|
||||
Assert.Equal(value.Genres.Select(x => new{x.Slug, x.Name}), show.Genres.Select(x => new{x.Slug, x.Name}));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task AddGenreTest()
|
||||
{
|
||||
Show value = await _repository.Get(TestSample.Get<Show>().Slug);
|
||||
await Repositories.LibraryManager.Load(value, x => x.Genres);
|
||||
value.Genres.Add(new Genre("test"));
|
||||
Show edited = await _repository.Edit(value, false);
|
||||
|
||||
Assert.Equal(value.Slug, edited.Slug);
|
||||
Assert.Equal(value.Genres.Select(x => new{x.Slug, x.Name}), edited.Genres.Select(x => new{x.Slug, x.Name}));
|
||||
|
||||
await using DatabaseContext database = Repositories.Context.New();
|
||||
Show show = await database.Shows
|
||||
.Include(x => x.Genres)
|
||||
.FirstAsync();
|
||||
|
||||
Assert.Equal(value.Slug, show.Slug);
|
||||
Assert.Equal(value.Genres.Select(x => new{x.Slug, x.Name}), show.Genres.Select(x => new{x.Slug, x.Name}));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task EditStudioTest()
|
||||
{
|
||||
|
@ -76,10 +76,6 @@ namespace Kyoo.Controllers
|
||||
{
|
||||
await base.Create(obj);
|
||||
_database.Entry(obj).State = EntityState.Added;
|
||||
if (obj.Genres != null)
|
||||
_database.AttachRange(obj.Genres);
|
||||
obj.People.ForEach(x => _database.Entry(x).State = EntityState.Added);
|
||||
obj.ExternalIDs.ForEach(x => _database.MetadataIds<Show>().Attach(x));
|
||||
await _database.SaveChangesAsync($"Trying to insert a duplicated show (slug {obj.Slug} already exists).");
|
||||
return obj;
|
||||
}
|
||||
@ -99,20 +95,30 @@ namespace Kyoo.Controllers
|
||||
resource.Genres = await resource.Genres
|
||||
.SelectAsync(x => _genres.CreateIfNotExists(x))
|
||||
.ToListAsync();
|
||||
_database.AttachRange(resource.Genres);
|
||||
}
|
||||
|
||||
await resource.ExternalIDs.ForEachAsync(async id =>
|
||||
if (resource.ExternalIDs != null)
|
||||
{
|
||||
id.Provider = await _providers.CreateIfNotExists(id.Provider);
|
||||
id.ProviderID = id.Provider.ID;
|
||||
_database.Entry(id.Provider).State = EntityState.Detached;
|
||||
});
|
||||
await resource.People.ForEachAsync(async role =>
|
||||
foreach (MetadataID id in resource.ExternalIDs)
|
||||
{
|
||||
id.Provider = await _providers.CreateIfNotExists(id.Provider);
|
||||
id.ProviderID = id.Provider.ID;
|
||||
_database.Entry(id.Provider).State = EntityState.Detached;
|
||||
}
|
||||
_database.MetadataIds<Show>().AttachRange(resource.ExternalIDs);
|
||||
}
|
||||
|
||||
if (resource.People != null)
|
||||
{
|
||||
role.People = await _people.CreateIfNotExists(role.People);
|
||||
role.PeopleID = role.People.ID;
|
||||
_database.Entry(role.People).State = EntityState.Detached;
|
||||
});
|
||||
foreach (PeopleRole role in resource.People)
|
||||
{
|
||||
role.People = await _people.CreateIfNotExists(role.People);
|
||||
role.PeopleID = role.People.ID;
|
||||
_database.Entry(role.People).State = EntityState.Detached;
|
||||
_database.Entry(role).State = EntityState.Added;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
Loading…
x
Reference in New Issue
Block a user