Fixing people repositroy

This commit is contained in:
Zoe Roux 2021-03-16 10:01:02 +01:00
parent 28bb719b06
commit a74a06913c
3 changed files with 16 additions and 14 deletions

View File

@ -181,7 +181,7 @@ namespace Kyoo.Controllers
} }
} }
protected virtual Task EditRelations(T resource, T newValues) protected virtual Task EditRelations(T resource, T changed)
{ {
return Validate(resource); return Validate(resource);
} }

View File

@ -110,7 +110,7 @@ namespace Kyoo.Controllers
throw new InvalidOperationException(); throw new InvalidOperationException();
} }
public override Task<LibraryItem> Edit(LibraryItem obj, bool reset) => throw new InvalidOperationException(); public override Task<LibraryItem> Edit(LibraryItem obj, bool reset) => throw new InvalidOperationException();
protected override Task EditRelations(LibraryItem _, LibraryItem _2) => throw new InvalidOperationException(); protected override Task EditRelations(LibraryItem _, LibraryItem changed) => throw new InvalidOperationException();
public override Task Delete(int id) => throw new InvalidOperationException(); public override Task Delete(int id) => throw new InvalidOperationException();
public override Task Delete(string slug) => throw new InvalidOperationException(); public override Task Delete(string slug) => throw new InvalidOperationException();
public override Task Delete(LibraryItem obj) => throw new InvalidOperationException(); public override Task Delete(LibraryItem obj) => throw new InvalidOperationException();

View File

@ -71,25 +71,27 @@ namespace Kyoo.Controllers
protected override async Task Validate(People resource) protected override async Task Validate(People resource)
{ {
await base.Validate(resource); await base.Validate(resource);
await resource.ExternalIDs.ForEachAsync(async id =>
if (resource.ExternalIDs != null) id.Provider = await _providers.CreateIfNotExists(id.Provider, true));
foreach (MetadataID link in resource.ExternalIDs) await resource.Roles.ForEachAsync(async role =>
if (ShouldValidate(link)) role.Show = await _shows.Value.CreateIfNotExists(role.Show, true));
link.Provider = await _providers.CreateIfNotExists(link.Provider, true);
} }
protected override async Task EditRelations(People resource, People changed)
{
await base.EditRelations(resource, changed);
resource.Roles = changed.Roles;
resource.ExternalIDs = changed.ExternalIDs;
}
public override async Task Delete(People obj) public override async Task Delete(People obj)
{ {
if (obj == null) if (obj == null)
throw new ArgumentNullException(nameof(obj)); throw new ArgumentNullException(nameof(obj));
_database.Entry(obj).State = EntityState.Deleted; _database.Entry(obj).State = EntityState.Deleted;
if (obj.ExternalIDs != null) obj.ExternalIDs.ForEach(x => _database.Entry(x).State = EntityState.Deleted);
foreach (MetadataID entry in obj.ExternalIDs) obj.Roles.ForEach(x => _database.Entry(x).State = EntityState.Deleted);
_database.Entry(entry).State = EntityState.Deleted;
if (obj.Roles != null)
foreach (PeopleRole link in obj.Roles)
_database.Entry(link).State = EntityState.Deleted;
await _database.SaveChangesAsync(); await _database.SaveChangesAsync();
} }