Fixing others's repository edit

This commit is contained in:
Zoe Roux 2021-03-17 00:03:06 +01:00
parent 4b56ec4114
commit cfc3e4b865
4 changed files with 36 additions and 14 deletions

View File

@ -169,8 +169,6 @@ namespace Kyoo.Controllers
if (resource.ShowID <= 0) if (resource.ShowID <= 0)
throw new InvalidOperationException($"Can't store an episode not related to any show (showID: {resource.ShowID})."); throw new InvalidOperationException($"Can't store an episode not related to any show (showID: {resource.ShowID}).");
await base.EditRelations(resource, changed, resetOld);
if (changed.Tracks != null || resetOld) if (changed.Tracks != null || resetOld)
{ {
ICollection<Track> oldTracks = await _tracks.GetAll(x => x.EpisodeID == resource.ID); ICollection<Track> oldTracks = await _tracks.GetAll(x => x.EpisodeID == resource.ID);
@ -190,7 +188,11 @@ namespace Kyoo.Controllers
if (changed.ExternalIDs != null || resetOld) if (changed.ExternalIDs != null || resetOld)
{ {
await Database.Entry(resource).Collection(x => x.ExternalIDs).LoadAsync(); await Database.Entry(resource).Collection(x => x.ExternalIDs).LoadAsync();
resource.ExternalIDs = changed.ExternalIDs; resource.ExternalIDs = changed.ExternalIDs?.Select(x =>
{
x.Provider = null;
return x;
}).ToList();
} }
} }

View File

@ -79,9 +79,11 @@ namespace Kyoo.Controllers
throw new ArgumentException("The library should have a least one path."); throw new ArgumentException("The library should have a least one path.");
if (changed.Providers != null || resetOld) if (changed.Providers != null || resetOld)
{
await Validate(changed);
await Database.Entry(resource).Collection(x => x.Providers).LoadAsync(); await Database.Entry(resource).Collection(x => x.Providers).LoadAsync();
resource.Providers = changed.Providers; resource.Providers = changed.Providers;
await base.EditRelations(resource, changed, resetOld); }
} }
public override async Task Delete(Library obj) public override async Task Delete(Library obj)

View File

@ -72,19 +72,32 @@ namespace Kyoo.Controllers
{ {
await base.Validate(resource); await base.Validate(resource);
await resource.ExternalIDs.ForEachAsync(async id => await resource.ExternalIDs.ForEachAsync(async id =>
id.Provider = await _providers.CreateIfNotExists(id.Provider, true)); {
id.ProviderID = (await _providers.CreateIfNotExists(id.Provider, true)).ID;
id.Provider = null;
});
await resource.Roles.ForEachAsync(async role => await resource.Roles.ForEachAsync(async role =>
role.Show = await _shows.Value.CreateIfNotExists(role.Show, true)); {
role.ShowID = (await _shows.Value.CreateIfNotExists(role.Show, true)).ID;
role.Show = null;
});
} }
protected override async Task EditRelations(People resource, People changed, bool resetOld) protected override async Task EditRelations(People resource, People changed, bool resetOld)
{ {
if (changed.Roles != null || resetOld) if (changed.Roles != null || resetOld)
{
await Database.Entry(resource).Collection(x => x.Roles).LoadAsync(); await Database.Entry(resource).Collection(x => x.Roles).LoadAsync();
resource.Roles = changed.Roles; resource.Roles = changed.Roles;
}
if (changed.ExternalIDs != null || resetOld) if (changed.ExternalIDs != null || resetOld)
{
await Database.Entry(resource).Collection(x => x.ExternalIDs).LoadAsync(); await Database.Entry(resource).Collection(x => x.ExternalIDs).LoadAsync();
resource.ExternalIDs = changed.ExternalIDs; resource.ExternalIDs = changed.ExternalIDs;
}
await base.EditRelations(resource, changed, resetOld); await base.EditRelations(resource, changed, resetOld);
} }

View File

@ -139,14 +139,19 @@ namespace Kyoo.Controllers
await base.Validate(resource); await base.Validate(resource);
await resource.ExternalIDs.ForEachAsync(async id => await resource.ExternalIDs.ForEachAsync(async id =>
id.Provider = await _providers.CreateIfNotExists(id.Provider, true)); {
id.ProviderID = (await _providers.CreateIfNotExists(id.Provider, true)).ID;
id.Provider = null;
});
} }
protected override async Task EditRelations(Season resource, Season changed, bool resetOld) protected override async Task EditRelations(Season resource, Season changed, bool resetOld)
{ {
if (changed.ExternalIDs != null || resetOld) if (changed.ExternalIDs != null || resetOld)
{
await Database.Entry(resource).Collection(x => x.ExternalIDs).LoadAsync(); await Database.Entry(resource).Collection(x => x.ExternalIDs).LoadAsync();
resource.ExternalIDs = changed.ExternalIDs; resource.ExternalIDs = changed.ExternalIDs;
}
await base.EditRelations(resource, changed, resetOld); await base.EditRelations(resource, changed, resetOld);
} }