diff --git a/Kyoo/Controllers/Repositories/EpisodeRepository.cs b/Kyoo/Controllers/Repositories/EpisodeRepository.cs index 81650aaa..e0e4f7f7 100644 --- a/Kyoo/Controllers/Repositories/EpisodeRepository.cs +++ b/Kyoo/Controllers/Repositories/EpisodeRepository.cs @@ -106,7 +106,17 @@ namespace Kyoo.Controllers Episode old = await Get(obj.Slug); if (old != null) return old.ID; - return await Create(obj); + try + { + return await Create(obj); + } + catch (DuplicatedItemException) + { + old = await Get(obj.Slug); + if (old == null) + throw new SystemException("Unknown database state."); + return old.ID; + } } public async Task Edit(Episode edited, bool resetOld) diff --git a/Kyoo/Controllers/Repositories/GenreRepository.cs b/Kyoo/Controllers/Repositories/GenreRepository.cs index 74442a54..06d73755 100644 --- a/Kyoo/Controllers/Repositories/GenreRepository.cs +++ b/Kyoo/Controllers/Repositories/GenreRepository.cs @@ -80,7 +80,17 @@ namespace Kyoo.Controllers Genre old = await Get(obj.Slug); if (old != null) return old.ID; - return await Create(obj); + try + { + return await Create(obj); + } + catch (DuplicatedItemException) + { + old = await Get(obj.Slug); + if (old == null) + throw new SystemException("Unknown database state."); + return old.ID; + } } public async Task Edit(Genre edited, bool resetOld) diff --git a/Kyoo/Controllers/Repositories/LibraryRepository.cs b/Kyoo/Controllers/Repositories/LibraryRepository.cs index 8f665922..257399a1 100644 --- a/Kyoo/Controllers/Repositories/LibraryRepository.cs +++ b/Kyoo/Controllers/Repositories/LibraryRepository.cs @@ -84,10 +84,20 @@ namespace Kyoo.Controllers if (obj == null) throw new ArgumentNullException(nameof(obj)); - Library old = await Get(obj.Name); + Library old = await Get(obj.Slug); if (old != null) return old.ID; - return await Create(obj); + try + { + return await Create(obj); + } + catch (DuplicatedItemException) + { + old = await Get(obj.Slug); + if (old == null) + throw new SystemException("Unknown database state."); + return old.ID; + } } public async Task Edit(Library edited, bool resetOld) diff --git a/Kyoo/Controllers/Repositories/PeopleRepository.cs b/Kyoo/Controllers/Repositories/PeopleRepository.cs index 444d2836..2cfae2b9 100644 --- a/Kyoo/Controllers/Repositories/PeopleRepository.cs +++ b/Kyoo/Controllers/Repositories/PeopleRepository.cs @@ -86,7 +86,17 @@ namespace Kyoo.Controllers People old = await Get(obj.Slug); if (old != null) return old.ID; - return await Create(obj); + try + { + return await Create(obj); + } + catch (DuplicatedItemException) + { + old = await Get(obj.Slug); + if (old == null) + throw new SystemException("Unknown database state."); + return old.ID; + } } public async Task Edit(People edited, bool resetOld) diff --git a/Kyoo/Controllers/Repositories/ProviderRepository.cs b/Kyoo/Controllers/Repositories/ProviderRepository.cs index fd4c56eb..7d4c3dfb 100644 --- a/Kyoo/Controllers/Repositories/ProviderRepository.cs +++ b/Kyoo/Controllers/Repositories/ProviderRepository.cs @@ -80,7 +80,17 @@ namespace Kyoo.Controllers ProviderID old = await Get(obj.Name); if (old != null) return old.ID; - return await Create(obj); + try + { + return await Create(obj); + } + catch (DuplicatedItemException) + { + old = await Get(obj.Name); + if (old == null) + throw new SystemException("Unknown database state."); + return old.ID; + } } public async Task Edit(ProviderID edited, bool resetOld) diff --git a/Kyoo/Controllers/Repositories/SeasonRepository.cs b/Kyoo/Controllers/Repositories/SeasonRepository.cs index e7a56faa..23eb188c 100644 --- a/Kyoo/Controllers/Repositories/SeasonRepository.cs +++ b/Kyoo/Controllers/Repositories/SeasonRepository.cs @@ -99,7 +99,17 @@ namespace Kyoo.Controllers Season old = await Get(obj.Slug); if (old != null) return old.ID; - return await Create(obj); + try + { + return await Create(obj); + } + catch (DuplicatedItemException) + { + old = await Get(obj.Slug); + if (old == null) + throw new SystemException("Unknown database state."); + return old.ID; + } } public async Task Edit(Season edited, bool resetOld) diff --git a/Kyoo/Controllers/Repositories/ShowRepository.cs b/Kyoo/Controllers/Repositories/ShowRepository.cs index e0973f6b..7d9b41b4 100644 --- a/Kyoo/Controllers/Repositories/ShowRepository.cs +++ b/Kyoo/Controllers/Repositories/ShowRepository.cs @@ -103,7 +103,17 @@ namespace Kyoo.Controllers Show old = await Get(obj.Slug); if (old != null) return old.ID; - return await Create(obj); + try + { + return await Create(obj); + } + catch (DuplicatedItemException) + { + old = await Get(obj.Slug); + if (old == null) + throw new SystemException("Unknown database state."); + return old.ID; + } } public async Task Edit(Show edited, bool resetOld) diff --git a/Kyoo/Controllers/Repositories/StudioRepository.cs b/Kyoo/Controllers/Repositories/StudioRepository.cs index 59731717..c408234c 100644 --- a/Kyoo/Controllers/Repositories/StudioRepository.cs +++ b/Kyoo/Controllers/Repositories/StudioRepository.cs @@ -79,7 +79,17 @@ namespace Kyoo.Controllers Studio old = await Get(obj.Slug); if (old != null) return old.ID; - return await Create(obj); + try + { + return await Create(obj); + } + catch (DuplicatedItemException) + { + old = await Get(obj.Slug); + if (old == null) + throw new SystemException("Unknown database state."); + return old.ID; + } } public async Task Edit(Studio edited, bool resetOld)