mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-07-07 18:24:14 -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}));
|
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]
|
[Fact]
|
||||||
public async Task EditStudioTest()
|
public async Task EditStudioTest()
|
||||||
{
|
{
|
||||||
|
@ -76,10 +76,6 @@ namespace Kyoo.Controllers
|
|||||||
{
|
{
|
||||||
await base.Create(obj);
|
await base.Create(obj);
|
||||||
_database.Entry(obj).State = EntityState.Added;
|
_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).");
|
await _database.SaveChangesAsync($"Trying to insert a duplicated show (slug {obj.Slug} already exists).");
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
@ -99,20 +95,30 @@ namespace Kyoo.Controllers
|
|||||||
resource.Genres = await resource.Genres
|
resource.Genres = await resource.Genres
|
||||||
.SelectAsync(x => _genres.CreateIfNotExists(x))
|
.SelectAsync(x => _genres.CreateIfNotExists(x))
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
_database.AttachRange(resource.Genres);
|
||||||
}
|
}
|
||||||
|
|
||||||
await resource.ExternalIDs.ForEachAsync(async id =>
|
if (resource.ExternalIDs != null)
|
||||||
|
{
|
||||||
|
foreach (MetadataID id in resource.ExternalIDs)
|
||||||
{
|
{
|
||||||
id.Provider = await _providers.CreateIfNotExists(id.Provider);
|
id.Provider = await _providers.CreateIfNotExists(id.Provider);
|
||||||
id.ProviderID = id.Provider.ID;
|
id.ProviderID = id.Provider.ID;
|
||||||
_database.Entry(id.Provider).State = EntityState.Detached;
|
_database.Entry(id.Provider).State = EntityState.Detached;
|
||||||
});
|
}
|
||||||
await resource.People.ForEachAsync(async role =>
|
_database.MetadataIds<Show>().AttachRange(resource.ExternalIDs);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (resource.People != null)
|
||||||
|
{
|
||||||
|
foreach (PeopleRole role in resource.People)
|
||||||
{
|
{
|
||||||
role.People = await _people.CreateIfNotExists(role.People);
|
role.People = await _people.CreateIfNotExists(role.People);
|
||||||
role.PeopleID = role.People.ID;
|
role.PeopleID = role.People.ID;
|
||||||
_database.Entry(role.People).State = EntityState.Detached;
|
_database.Entry(role.People).State = EntityState.Detached;
|
||||||
});
|
_database.Entry(role).State = EntityState.Added;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user