diff --git a/Kyoo.Common/Kyoo.Common.csproj b/Kyoo.Common/Kyoo.Common.csproj
index c0ffcb47..904c40f5 100644
--- a/Kyoo.Common/Kyoo.Common.csproj
+++ b/Kyoo.Common/Kyoo.Common.csproj
@@ -11,7 +11,7 @@
SDG
GPL-3.0-or-later
true
- 1.0.17
+ 1.0.18
diff --git a/Kyoo.Common/Models/Library.cs b/Kyoo.Common/Models/Library.cs
index d9d5c7ca..883a2f37 100644
--- a/Kyoo.Common/Models/Library.cs
+++ b/Kyoo.Common/Models/Library.cs
@@ -1,4 +1,5 @@
-using Newtonsoft.Json;
+using System.Collections.Generic;
+using Newtonsoft.Json;
namespace Kyoo.Models
{
@@ -8,11 +9,11 @@ namespace Kyoo.Models
public string Slug { get; set; }
public string Name { get; set; }
public string[] Paths { get; set; }
- public ProviderID[] Providers { get; set; }
+ public virtual IEnumerable Providers { get; set; }
public Library() { }
- public Library(string slug, string name, string[] paths, ProviderID[] providers)
+ public Library(string slug, string name, string[] paths, IEnumerable providers)
{
Slug = slug;
Name = name;
diff --git a/Kyoo.Common/Models/ProviderLink.cs b/Kyoo.Common/Models/ProviderLink.cs
new file mode 100644
index 00000000..ce98b00c
--- /dev/null
+++ b/Kyoo.Common/Models/ProviderLink.cs
@@ -0,0 +1,17 @@
+namespace Kyoo.Models
+{
+ public class ProviderLink
+ {
+ public long ID { get; set; }
+ public long ProviderID { get; set; }
+ public virtual ProviderID Provider { get; set; }
+ public long? ShowID { get; set; }
+ public virtual Show Show { get; set; }
+ public long? LibraryID { get; set; }
+ public virtual Library Library { get; set; }
+
+ public string Name => Provider.Name;
+
+ public ProviderLink() { }
+ }
+}
\ No newline at end of file
diff --git a/Kyoo.Common/Models/Show.cs b/Kyoo.Common/Models/Show.cs
index a4fa2804..00cb0ce8 100644
--- a/Kyoo.Common/Models/Show.cs
+++ b/Kyoo.Common/Models/Show.cs
@@ -24,7 +24,7 @@ namespace Kyoo.Models
[JsonIgnore] public string ImgLogo { get; set; }
[JsonIgnore] public string ImgBackdrop { get; set; }
- public IEnumerable ExternalIDs { get; set; }
+ public virtual IEnumerable ExternalIDs { get; set; }
public bool IsMovie { get; set; }
diff --git a/Kyoo/Controllers/ProviderManager.cs b/Kyoo/Controllers/ProviderManager.cs
index 6e4d536d..2751c793 100644
--- a/Kyoo/Controllers/ProviderManager.cs
+++ b/Kyoo/Controllers/ProviderManager.cs
@@ -20,10 +20,10 @@ namespace Kyoo.Controllers
{
T ret = new T();
- IEnumerable providers = library?.Providers != null
- ? _providers.Where(x => library.Providers.Contains(x.Provider))
- .OrderBy(provider => Array.IndexOf(library.Providers, provider.Provider))
- : _providers;
+ IEnumerable providers = library?.Providers
+ .Select(x => _providers.FirstOrDefault(y => y.Provider.Name == x.Name))
+ .Where(x => x != null)
+ ?? _providers;
foreach (IMetadataProvider provider in providers)
{
@@ -41,10 +41,10 @@ namespace Kyoo.Controllers
{
List ret = new List();
- IEnumerable providers = library?.Providers != null
- ? _providers.Where(x => library.Providers.Contains(x.Provider))
- .OrderBy(provider => Array.IndexOf(library.Providers, provider.Provider))
- : _providers;
+ IEnumerable providers = library?.Providers
+ .Select(x => _providers.FirstOrDefault(y => y.Provider.Name == x.Name))
+ .Where(x => x != null)
+ ?? _providers;
foreach (IMetadataProvider provider in providers)
{
diff --git a/Kyoo/Models/DatabaseContext.cs b/Kyoo/Models/DatabaseContext.cs
index ac6ed62d..391fba31 100644
--- a/Kyoo/Models/DatabaseContext.cs
+++ b/Kyoo/Models/DatabaseContext.cs
@@ -85,6 +85,7 @@ namespace Kyoo
// This is used because EF doesn't support Many-To-Many relationships so for now we need to override the getter/setters to store this.
public DbSet GenreLinks { get; set; }
+ public DbSet ProviderLinks { get; set; }
private ValueConverter stringArrayConverter = new ValueConverter(
@@ -101,7 +102,6 @@ namespace Kyoo
base.OnModelCreating(modelBuilder);
modelBuilder.Entity().Property(e => e.Paths).HasConversion(stringArrayConverter).Metadata.SetValueComparer(stringArrayComparer);
- modelBuilder.Entity().Property(e => e.Providers).HasConversion(stringArrayConverter).Metadata.SetValueComparer(stringArrayComparer);
modelBuilder.Entity().Property(e => e.Aliases).HasConversion(stringArrayConverter).Metadata.SetValueComparer(stringArrayComparer);
modelBuilder.Entity