mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-07-09 03:04:20 -04:00
Removing links
This commit is contained in:
parent
0c594a92c6
commit
756bfa762c
@ -17,7 +17,7 @@
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
<LangVersion>default</LangVersion>
|
||||
|
||||
<DefineConstants>ENABLE_INTERNAL_LINKS</DefineConstants>
|
||||
<!-- <DefineConstants>ENABLE_INTERNAL_LINKS</DefineConstants>-->
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -32,12 +32,7 @@ namespace Kyoo.Models
|
||||
/// </summary>
|
||||
[SerializeAs("{HOST}/api/providers/{Slug}/logo")]
|
||||
public string Logo => Images?.GetValueOrDefault(Thumbnails.Logo);
|
||||
|
||||
/// <summary>
|
||||
/// The extension of the logo. This is used for http responses.
|
||||
/// </summary>
|
||||
[SerializeIgnore] public string LogoExtension { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// The list of libraries that uses this provider.
|
||||
/// </summary>
|
||||
|
@ -6,7 +6,7 @@ namespace Kyoo.Models
|
||||
/// <summary>
|
||||
/// A single user of the app.
|
||||
/// </summary>
|
||||
public class User : IResource
|
||||
public class User : IResource, IThumbnails
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public int ID { get; set; }
|
||||
@ -38,7 +38,10 @@ namespace Kyoo.Models
|
||||
/// Arbitrary extra data that can be used by specific authentication implementations.
|
||||
/// </summary>
|
||||
public Dictionary<string, string> ExtraData { get; set; }
|
||||
|
||||
|
||||
/// <inheritdoc />
|
||||
public Dictionary<int, string> Images { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The list of shows the user has finished.
|
||||
/// </summary>
|
||||
@ -48,7 +51,7 @@ namespace Kyoo.Models
|
||||
/// The list of episodes the user is watching (stopped in progress or the next episode of the show)
|
||||
/// </summary>
|
||||
public ICollection<WatchedEpisode> CurrentlyWatching { get; set; }
|
||||
|
||||
|
||||
#if ENABLE_INTERNAL_LINKS
|
||||
/// <summary>
|
||||
/// Links between Users and Shows.
|
||||
@ -60,8 +63,23 @@ namespace Kyoo.Models
|
||||
/// <summary>
|
||||
/// Metadata of episode currently watching by an user
|
||||
/// </summary>
|
||||
public class WatchedEpisode : Link<User, Episode>
|
||||
public class WatchedEpisode
|
||||
{
|
||||
/// <summary>
|
||||
/// The ID of the user that started watching this episode.
|
||||
/// </summary>
|
||||
public int UserID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The ID of the episode started.
|
||||
/// </summary>
|
||||
public int EpisodeID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The <see cref="Episode"/> started.
|
||||
/// </summary>
|
||||
public Episode Episode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Where the player has stopped watching the episode (between 0 and 100).
|
||||
/// </summary>
|
||||
|
@ -84,14 +84,6 @@ namespace Kyoo
|
||||
/// </remarks>
|
||||
public DbSet<LibraryItem> LibraryItems { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the name of the metadata table of the given type.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type related to the metadata</typeparam>
|
||||
/// <returns>The name of the table containing the metadata.</returns>
|
||||
protected abstract string MetadataName<T>()
|
||||
where T : IMetadata;
|
||||
|
||||
/// <summary>
|
||||
/// Get all metadataIDs (ExternalIDs) of a given resource. See <see cref="MetadataID"/>.
|
||||
/// </summary>
|
||||
@ -131,6 +123,24 @@ namespace Kyoo
|
||||
: base(options)
|
||||
{ }
|
||||
|
||||
/// <summary>
|
||||
/// Get the name of the metadata table of the given type.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type related to the metadata</typeparam>
|
||||
/// <returns>The name of the table containing the metadata.</returns>
|
||||
protected abstract string MetadataName<T>()
|
||||
where T : IMetadata;
|
||||
|
||||
/// <summary>
|
||||
/// Get the name of the link table of the two given types.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The owner type of the relation</typeparam>
|
||||
/// <typeparam name="T2">The child type of the relation</typeparam>
|
||||
/// <returns>The name of the table containing the links.</returns>
|
||||
protected abstract string LinkName<T, T2>()
|
||||
where T : IResource
|
||||
where T2 : IResource;
|
||||
|
||||
/// <summary>
|
||||
/// Set basic configurations (like preventing query tracking)
|
||||
/// </summary>
|
||||
@ -196,74 +206,27 @@ namespace Kyoo
|
||||
modelBuilder.Entity<Provider>()
|
||||
.HasMany(x => x.Libraries)
|
||||
.WithMany(x => x.Providers)
|
||||
.UsingEntity<Link<Library, Provider>>(
|
||||
y => y
|
||||
.HasOne(x => x.First)
|
||||
.WithMany(x => x.ProviderLinks),
|
||||
y => y
|
||||
.HasOne(x => x.Second)
|
||||
.WithMany(x => x.LibraryLinks),
|
||||
y => y.HasKey(Link<Library, Provider>.PrimaryKey));
|
||||
|
||||
.UsingEntity(x => x.ToTable(LinkName<Library, Provider>()));
|
||||
modelBuilder.Entity<Collection>()
|
||||
.HasMany(x => x.Libraries)
|
||||
.WithMany(x => x.Collections)
|
||||
.UsingEntity<Link<Library, Collection>>(
|
||||
y => y
|
||||
.HasOne(x => x.First)
|
||||
.WithMany(x => x.CollectionLinks),
|
||||
y => y
|
||||
.HasOne(x => x.Second)
|
||||
.WithMany(x => x.LibraryLinks),
|
||||
y => y.HasKey(Link<Library, Collection>.PrimaryKey));
|
||||
|
||||
.UsingEntity(x => x.ToTable(LinkName<Library, Collection>()));
|
||||
modelBuilder.Entity<Show>()
|
||||
.HasMany(x => x.Libraries)
|
||||
.WithMany(x => x.Shows)
|
||||
.UsingEntity<Link<Library, Show>>(
|
||||
y => y
|
||||
.HasOne(x => x.First)
|
||||
.WithMany(x => x.ShowLinks),
|
||||
y => y
|
||||
.HasOne(x => x.Second)
|
||||
.WithMany(x => x.LibraryLinks),
|
||||
y => y.HasKey(Link<Library, Show>.PrimaryKey));
|
||||
|
||||
.UsingEntity(x => x.ToTable(LinkName<Library, Show>()));
|
||||
modelBuilder.Entity<Show>()
|
||||
.HasMany(x => x.Collections)
|
||||
.WithMany(x => x.Shows)
|
||||
.UsingEntity<Link<Collection, Show>>(
|
||||
y => y
|
||||
.HasOne(x => x.First)
|
||||
.WithMany(x => x.ShowLinks),
|
||||
y => y
|
||||
.HasOne(x => x.Second)
|
||||
.WithMany(x => x.CollectionLinks),
|
||||
y => y.HasKey(Link<Collection, Show>.PrimaryKey));
|
||||
|
||||
.UsingEntity(x => x.ToTable(LinkName<Collection, Show>()));
|
||||
modelBuilder.Entity<Genre>()
|
||||
.HasMany(x => x.Shows)
|
||||
.WithMany(x => x.Genres)
|
||||
.UsingEntity<Link<Show, Genre>>(
|
||||
y => y
|
||||
.HasOne(x => x.First)
|
||||
.WithMany(x => x.GenreLinks),
|
||||
y => y
|
||||
.HasOne(x => x.Second)
|
||||
.WithMany(x => x.ShowLinks),
|
||||
y => y.HasKey(Link<Show, Genre>.PrimaryKey));
|
||||
|
||||
.UsingEntity(x => x.ToTable(LinkName<Show, Genre>()));
|
||||
modelBuilder.Entity<User>()
|
||||
.HasMany(x => x.Watched)
|
||||
.WithMany("users")
|
||||
.UsingEntity<Link<User, Show>>(
|
||||
y => y
|
||||
.HasOne(x => x.Second)
|
||||
.WithMany(),
|
||||
y => y
|
||||
.HasOne(x => x.First)
|
||||
.WithMany(x => x.ShowLinks),
|
||||
y => y.HasKey(Link<User, Show>.PrimaryKey));
|
||||
.WithMany("Users")
|
||||
.UsingEntity(x => x.ToTable(LinkName<User, Show>()));
|
||||
|
||||
_HasMetadata<Collection>(modelBuilder);
|
||||
_HasMetadata<Show>(modelBuilder);
|
||||
@ -273,7 +236,7 @@ namespace Kyoo
|
||||
_HasMetadata<Studio>(modelBuilder);
|
||||
|
||||
modelBuilder.Entity<WatchedEpisode>()
|
||||
.HasKey(x => new { First = x.FirstID, Second = x.SecondID });
|
||||
.HasKey(x => new { User = x.UserID, Episode = x.EpisodeID });
|
||||
|
||||
modelBuilder.Entity<Collection>().Property(x => x.Slug).IsRequired();
|
||||
modelBuilder.Entity<Genre>().Property(x => x.Slug).IsRequired();
|
||||
|
@ -12,7 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||
namespace Kyoo.Postgresql.Migrations
|
||||
{
|
||||
[DbContext(typeof(PostgresContext))]
|
||||
[Migration("20210728141410_Initial")]
|
||||
[Migration("20210730183548_Initial")]
|
||||
partial class Initial
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
@ -26,6 +26,63 @@ namespace Kyoo.Postgresql.Migrations
|
||||
.HasAnnotation("ProductVersion", "5.0.8")
|
||||
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
|
||||
|
||||
modelBuilder.Entity("CollectionLibrary", b =>
|
||||
{
|
||||
b.Property<int>("CollectionsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("collections_id");
|
||||
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("libraries_id");
|
||||
|
||||
b.HasKey("CollectionsID", "LibrariesID")
|
||||
.HasName("pk_link_library_collection");
|
||||
|
||||
b.HasIndex("LibrariesID")
|
||||
.HasDatabaseName("ix_link_library_collection_libraries_id");
|
||||
|
||||
b.ToTable("link_library_collection");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionShow", b =>
|
||||
{
|
||||
b.Property<int>("CollectionsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("collections_id");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("shows_id");
|
||||
|
||||
b.HasKey("CollectionsID", "ShowsID")
|
||||
.HasName("pk_link_collection_show");
|
||||
|
||||
b.HasIndex("ShowsID")
|
||||
.HasDatabaseName("ix_link_collection_show_shows_id");
|
||||
|
||||
b.ToTable("link_collection_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GenreShow", b =>
|
||||
{
|
||||
b.Property<int>("GenresID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("genres_id");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("shows_id");
|
||||
|
||||
b.HasKey("GenresID", "ShowsID")
|
||||
.HasName("pk_link_show_genre");
|
||||
|
||||
b.HasIndex("ShowsID")
|
||||
.HasDatabaseName("ix_link_show_genre_shows_id");
|
||||
|
||||
b.ToTable("link_show_genre");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Collection", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
@ -234,120 +291,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.ToView("library_items");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Collection, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_collection_show");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_collection_show_second_id");
|
||||
|
||||
b.ToTable("link_collection_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Collection>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_library_collection");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_library_collection_second_id");
|
||||
|
||||
b.ToTable("link_library_collection");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Provider>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_library_provider");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_library_provider_second_id");
|
||||
|
||||
b.ToTable("link_library_provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_library_show");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_library_show_second_id");
|
||||
|
||||
b.ToTable("link_library_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Show, Kyoo.Models.Genre>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_show_genre");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_show_genre_second_id");
|
||||
|
||||
b.ToTable("link_show_genre");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.User, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_user_show");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_user_show_second_id");
|
||||
|
||||
b.ToTable("link_user_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.People", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
@ -427,10 +370,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("images");
|
||||
|
||||
b.Property<string>("LogoExtension")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("logo_extension");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("name");
|
||||
@ -681,6 +620,10 @@ namespace Kyoo.Postgresql.Migrations
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("extra_data");
|
||||
|
||||
b.Property<Dictionary<int, string>>("Images")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("images");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("password");
|
||||
@ -710,27 +653,84 @@ namespace Kyoo.Postgresql.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
b.Property<int>("UserID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
.HasColumnName("user_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
b.Property<int>("EpisodeID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
.HasColumnName("episode_id");
|
||||
|
||||
b.Property<int>("WatchedPercentage")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("watched_percentage");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
b.HasKey("UserID", "EpisodeID")
|
||||
.HasName("pk_watched_episodes");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_watched_episodes_second_id");
|
||||
b.HasIndex("EpisodeID")
|
||||
.HasDatabaseName("ix_watched_episodes_episode_id");
|
||||
|
||||
b.ToTable("watched_episodes");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryProvider", b =>
|
||||
{
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("libraries_id");
|
||||
|
||||
b.Property<int>("ProvidersID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("providers_id");
|
||||
|
||||
b.HasKey("LibrariesID", "ProvidersID")
|
||||
.HasName("pk_link_library_provider");
|
||||
|
||||
b.HasIndex("ProvidersID")
|
||||
.HasDatabaseName("ix_link_library_provider_providers_id");
|
||||
|
||||
b.ToTable("link_library_provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryShow", b =>
|
||||
{
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("libraries_id");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("shows_id");
|
||||
|
||||
b.HasKey("LibrariesID", "ShowsID")
|
||||
.HasName("pk_link_library_show");
|
||||
|
||||
b.HasIndex("ShowsID")
|
||||
.HasDatabaseName("ix_link_library_show_shows_id");
|
||||
|
||||
b.ToTable("link_library_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ShowUser", b =>
|
||||
{
|
||||
b.Property<int>("UsersID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("users_id");
|
||||
|
||||
b.Property<int>("WatchedID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("watched_id");
|
||||
|
||||
b.HasKey("UsersID", "WatchedID")
|
||||
.HasName("pk_link_user_show");
|
||||
|
||||
b.HasIndex("WatchedID")
|
||||
.HasDatabaseName("ix_link_user_show_watched_id");
|
||||
|
||||
b.ToTable("link_user_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("collection_metadata_id", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -893,6 +893,57 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.ToTable("studio_metadata_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionLibrary", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CollectionsID")
|
||||
.HasConstraintName("fk_link_library_collection_collections_collections_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.HasConstraintName("fk_link_library_collection_libraries_libraries_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CollectionsID")
|
||||
.HasConstraintName("fk_link_collection_show_collections_collections_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.HasConstraintName("fk_link_collection_show_shows_shows_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GenreShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Genre", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("GenresID")
|
||||
.HasConstraintName("fk_link_show_genre_genres_genres_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.HasConstraintName("fk_link_show_genre_shows_shows_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Episode", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Season", "Season")
|
||||
@ -913,132 +964,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.Navigation("Show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Collection, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_collection_show_collections_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany("CollectionLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_collection_show_shows_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Collection>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("CollectionLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_library_collection_libraries_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Collection", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_library_collection_collections_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Provider>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("ProviderLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_library_provider_libraries_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Provider", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_library_provider_providers_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_library_show_libraries_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_library_show_shows_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Show, Kyoo.Models.Genre>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Show", "First")
|
||||
.WithMany("GenreLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_show_genre_shows_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Genre", "Second")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_show_genre_genres_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.User, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_user_show_users_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany()
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_user_show_shows_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.PeopleRole", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.People", "People")
|
||||
@ -1097,23 +1022,72 @@ namespace Kyoo.Postgresql.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", "First")
|
||||
.WithMany("CurrentlyWatching")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_watched_episodes_users_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Episode", "Second")
|
||||
b.HasOne("Kyoo.Models.Episode", "Episode")
|
||||
.WithMany()
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_watched_episodes_episodes_second_id")
|
||||
.HasForeignKey("EpisodeID")
|
||||
.HasConstraintName("fk_watched_episodes_episodes_episode_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
b.HasOne("Kyoo.Models.User", null)
|
||||
.WithMany("CurrentlyWatching")
|
||||
.HasForeignKey("UserID")
|
||||
.HasConstraintName("fk_watched_episodes_users_user_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Second");
|
||||
b.Navigation("Episode");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryProvider", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.HasConstraintName("fk_link_library_provider_libraries_libraries_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Provider", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ProvidersID")
|
||||
.HasConstraintName("fk_link_library_provider_providers_providers_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.HasConstraintName("fk_link_library_show_libraries_libraries_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.HasConstraintName("fk_link_library_show_shows_shows_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ShowUser", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UsersID")
|
||||
.HasConstraintName("fk_link_user_show_users_users_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("WatchedID")
|
||||
.HasConstraintName("fk_link_user_show_shows_watched_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("collection_metadata_id", b =>
|
||||
@ -1233,10 +1207,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
modelBuilder.Entity("Kyoo.Models.Collection", b =>
|
||||
{
|
||||
b.Navigation("ExternalIDs");
|
||||
|
||||
b.Navigation("LibraryLinks");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Episode", b =>
|
||||
@ -1246,20 +1216,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.Navigation("Tracks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Genre", b =>
|
||||
{
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Library", b =>
|
||||
{
|
||||
b.Navigation("CollectionLinks");
|
||||
|
||||
b.Navigation("ProviderLinks");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.People", b =>
|
||||
{
|
||||
b.Navigation("ExternalIDs");
|
||||
@ -1267,11 +1223,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.Navigation("Roles");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Provider", b =>
|
||||
{
|
||||
b.Navigation("LibraryLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Season", b =>
|
||||
{
|
||||
b.Navigation("Episodes");
|
||||
@ -1281,16 +1232,10 @@ namespace Kyoo.Postgresql.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Show", b =>
|
||||
{
|
||||
b.Navigation("CollectionLinks");
|
||||
|
||||
b.Navigation("Episodes");
|
||||
|
||||
b.Navigation("ExternalIDs");
|
||||
|
||||
b.Navigation("GenreLinks");
|
||||
|
||||
b.Navigation("LibraryLinks");
|
||||
|
||||
b.Navigation("People");
|
||||
|
||||
b.Navigation("Seasons");
|
||||
@ -1306,8 +1251,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
modelBuilder.Entity("Kyoo.Models.User", b =>
|
||||
{
|
||||
b.Navigation("CurrentlyWatching");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
@ -83,8 +83,7 @@ namespace Kyoo.Postgresql.Migrations
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
slug = table.Column<string>(type: "text", nullable: false),
|
||||
name = table.Column<string>(type: "text", nullable: true),
|
||||
images = table.Column<Dictionary<int, string>>(type: "jsonb", nullable: true),
|
||||
logo_extension = table.Column<string>(type: "text", nullable: true)
|
||||
images = table.Column<Dictionary<int, string>>(type: "jsonb", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@ -116,7 +115,8 @@ namespace Kyoo.Postgresql.Migrations
|
||||
email = table.Column<string>(type: "text", nullable: true),
|
||||
password = table.Column<string>(type: "text", nullable: true),
|
||||
permissions = table.Column<string[]>(type: "text[]", nullable: true),
|
||||
extra_data = table.Column<Dictionary<string, string>>(type: "jsonb", nullable: true)
|
||||
extra_data = table.Column<Dictionary<string, string>>(type: "jsonb", nullable: true),
|
||||
images = table.Column<Dictionary<int, string>>(type: "jsonb", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@ -127,21 +127,21 @@ namespace Kyoo.Postgresql.Migrations
|
||||
name: "link_library_collection",
|
||||
columns: table => new
|
||||
{
|
||||
first_id = table.Column<int>(type: "integer", nullable: false),
|
||||
second_id = table.Column<int>(type: "integer", nullable: false)
|
||||
collections_id = table.Column<int>(type: "integer", nullable: false),
|
||||
libraries_id = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("pk_link_library_collection", x => new { x.first_id, x.second_id });
|
||||
table.PrimaryKey("pk_link_library_collection", x => new { x.collections_id, x.libraries_id });
|
||||
table.ForeignKey(
|
||||
name: "fk_link_library_collection_collections_second_id",
|
||||
column: x => x.second_id,
|
||||
name: "fk_link_library_collection_collections_collections_id",
|
||||
column: x => x.collections_id,
|
||||
principalTable: "collections",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "fk_link_library_collection_libraries_first_id",
|
||||
column: x => x.first_id,
|
||||
name: "fk_link_library_collection_libraries_libraries_id",
|
||||
column: x => x.libraries_id,
|
||||
principalTable: "libraries",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
@ -177,21 +177,21 @@ namespace Kyoo.Postgresql.Migrations
|
||||
name: "link_library_provider",
|
||||
columns: table => new
|
||||
{
|
||||
first_id = table.Column<int>(type: "integer", nullable: false),
|
||||
second_id = table.Column<int>(type: "integer", nullable: false)
|
||||
libraries_id = table.Column<int>(type: "integer", nullable: false),
|
||||
providers_id = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("pk_link_library_provider", x => new { x.first_id, x.second_id });
|
||||
table.PrimaryKey("pk_link_library_provider", x => new { x.libraries_id, x.providers_id });
|
||||
table.ForeignKey(
|
||||
name: "fk_link_library_provider_libraries_first_id",
|
||||
column: x => x.first_id,
|
||||
name: "fk_link_library_provider_libraries_libraries_id",
|
||||
column: x => x.libraries_id,
|
||||
principalTable: "libraries",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "fk_link_library_provider_providers_second_id",
|
||||
column: x => x.second_id,
|
||||
name: "fk_link_library_provider_providers_providers_id",
|
||||
column: x => x.providers_id,
|
||||
principalTable: "providers",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
@ -282,21 +282,21 @@ namespace Kyoo.Postgresql.Migrations
|
||||
name: "link_collection_show",
|
||||
columns: table => new
|
||||
{
|
||||
first_id = table.Column<int>(type: "integer", nullable: false),
|
||||
second_id = table.Column<int>(type: "integer", nullable: false)
|
||||
collections_id = table.Column<int>(type: "integer", nullable: false),
|
||||
shows_id = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("pk_link_collection_show", x => new { x.first_id, x.second_id });
|
||||
table.PrimaryKey("pk_link_collection_show", x => new { x.collections_id, x.shows_id });
|
||||
table.ForeignKey(
|
||||
name: "fk_link_collection_show_collections_first_id",
|
||||
column: x => x.first_id,
|
||||
name: "fk_link_collection_show_collections_collections_id",
|
||||
column: x => x.collections_id,
|
||||
principalTable: "collections",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "fk_link_collection_show_shows_second_id",
|
||||
column: x => x.second_id,
|
||||
name: "fk_link_collection_show_shows_shows_id",
|
||||
column: x => x.shows_id,
|
||||
principalTable: "shows",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
@ -306,21 +306,21 @@ namespace Kyoo.Postgresql.Migrations
|
||||
name: "link_library_show",
|
||||
columns: table => new
|
||||
{
|
||||
first_id = table.Column<int>(type: "integer", nullable: false),
|
||||
second_id = table.Column<int>(type: "integer", nullable: false)
|
||||
libraries_id = table.Column<int>(type: "integer", nullable: false),
|
||||
shows_id = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("pk_link_library_show", x => new { x.first_id, x.second_id });
|
||||
table.PrimaryKey("pk_link_library_show", x => new { x.libraries_id, x.shows_id });
|
||||
table.ForeignKey(
|
||||
name: "fk_link_library_show_libraries_first_id",
|
||||
column: x => x.first_id,
|
||||
name: "fk_link_library_show_libraries_libraries_id",
|
||||
column: x => x.libraries_id,
|
||||
principalTable: "libraries",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "fk_link_library_show_shows_second_id",
|
||||
column: x => x.second_id,
|
||||
name: "fk_link_library_show_shows_shows_id",
|
||||
column: x => x.shows_id,
|
||||
principalTable: "shows",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
@ -330,21 +330,21 @@ namespace Kyoo.Postgresql.Migrations
|
||||
name: "link_show_genre",
|
||||
columns: table => new
|
||||
{
|
||||
first_id = table.Column<int>(type: "integer", nullable: false),
|
||||
second_id = table.Column<int>(type: "integer", nullable: false)
|
||||
genres_id = table.Column<int>(type: "integer", nullable: false),
|
||||
shows_id = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("pk_link_show_genre", x => new { x.first_id, x.second_id });
|
||||
table.PrimaryKey("pk_link_show_genre", x => new { x.genres_id, x.shows_id });
|
||||
table.ForeignKey(
|
||||
name: "fk_link_show_genre_genres_second_id",
|
||||
column: x => x.second_id,
|
||||
name: "fk_link_show_genre_genres_genres_id",
|
||||
column: x => x.genres_id,
|
||||
principalTable: "genres",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "fk_link_show_genre_shows_first_id",
|
||||
column: x => x.first_id,
|
||||
name: "fk_link_show_genre_shows_shows_id",
|
||||
column: x => x.shows_id,
|
||||
principalTable: "shows",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
@ -354,21 +354,21 @@ namespace Kyoo.Postgresql.Migrations
|
||||
name: "link_user_show",
|
||||
columns: table => new
|
||||
{
|
||||
first_id = table.Column<int>(type: "integer", nullable: false),
|
||||
second_id = table.Column<int>(type: "integer", nullable: false)
|
||||
users_id = table.Column<int>(type: "integer", nullable: false),
|
||||
watched_id = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("pk_link_user_show", x => new { x.first_id, x.second_id });
|
||||
table.PrimaryKey("pk_link_user_show", x => new { x.users_id, x.watched_id });
|
||||
table.ForeignKey(
|
||||
name: "fk_link_user_show_shows_second_id",
|
||||
column: x => x.second_id,
|
||||
name: "fk_link_user_show_shows_watched_id",
|
||||
column: x => x.watched_id,
|
||||
principalTable: "shows",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "fk_link_user_show_users_first_id",
|
||||
column: x => x.first_id,
|
||||
name: "fk_link_user_show_users_users_id",
|
||||
column: x => x.users_id,
|
||||
principalTable: "users",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
@ -574,22 +574,22 @@ namespace Kyoo.Postgresql.Migrations
|
||||
name: "watched_episodes",
|
||||
columns: table => new
|
||||
{
|
||||
first_id = table.Column<int>(type: "integer", nullable: false),
|
||||
second_id = table.Column<int>(type: "integer", nullable: false),
|
||||
user_id = table.Column<int>(type: "integer", nullable: false),
|
||||
episode_id = table.Column<int>(type: "integer", nullable: false),
|
||||
watched_percentage = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("pk_watched_episodes", x => new { x.first_id, x.second_id });
|
||||
table.PrimaryKey("pk_watched_episodes", x => new { x.user_id, x.episode_id });
|
||||
table.ForeignKey(
|
||||
name: "fk_watched_episodes_episodes_second_id",
|
||||
column: x => x.second_id,
|
||||
name: "fk_watched_episodes_episodes_episode_id",
|
||||
column: x => x.episode_id,
|
||||
principalTable: "episodes",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "fk_watched_episodes_users_first_id",
|
||||
column: x => x.first_id,
|
||||
name: "fk_watched_episodes_users_user_id",
|
||||
column: x => x.user_id,
|
||||
principalTable: "users",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
@ -641,34 +641,34 @@ namespace Kyoo.Postgresql.Migrations
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_link_collection_show_second_id",
|
||||
name: "ix_link_collection_show_shows_id",
|
||||
table: "link_collection_show",
|
||||
column: "second_id");
|
||||
column: "shows_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_link_library_collection_second_id",
|
||||
name: "ix_link_library_collection_libraries_id",
|
||||
table: "link_library_collection",
|
||||
column: "second_id");
|
||||
column: "libraries_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_link_library_provider_second_id",
|
||||
name: "ix_link_library_provider_providers_id",
|
||||
table: "link_library_provider",
|
||||
column: "second_id");
|
||||
column: "providers_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_link_library_show_second_id",
|
||||
name: "ix_link_library_show_shows_id",
|
||||
table: "link_library_show",
|
||||
column: "second_id");
|
||||
column: "shows_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_link_show_genre_second_id",
|
||||
name: "ix_link_show_genre_shows_id",
|
||||
table: "link_show_genre",
|
||||
column: "second_id");
|
||||
column: "shows_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_link_user_show_second_id",
|
||||
name: "ix_link_user_show_watched_id",
|
||||
table: "link_user_show",
|
||||
column: "second_id");
|
||||
column: "watched_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_people_slug",
|
||||
@ -760,9 +760,9 @@ namespace Kyoo.Postgresql.Migrations
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_watched_episodes_second_id",
|
||||
name: "ix_watched_episodes_episode_id",
|
||||
table: "watched_episodes",
|
||||
column: "second_id");
|
||||
column: "episode_id");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
@ -12,7 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||
namespace Kyoo.Postgresql.Migrations
|
||||
{
|
||||
[DbContext(typeof(PostgresContext))]
|
||||
[Migration("20210728142213_Triggers")]
|
||||
[Migration("20210730203102_Triggers")]
|
||||
partial class Triggers
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
@ -26,6 +26,63 @@ namespace Kyoo.Postgresql.Migrations
|
||||
.HasAnnotation("ProductVersion", "5.0.8")
|
||||
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
|
||||
|
||||
modelBuilder.Entity("CollectionLibrary", b =>
|
||||
{
|
||||
b.Property<int>("CollectionsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("collections_id");
|
||||
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("libraries_id");
|
||||
|
||||
b.HasKey("CollectionsID", "LibrariesID")
|
||||
.HasName("pk_link_library_collection");
|
||||
|
||||
b.HasIndex("LibrariesID")
|
||||
.HasDatabaseName("ix_link_library_collection_libraries_id");
|
||||
|
||||
b.ToTable("link_library_collection");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionShow", b =>
|
||||
{
|
||||
b.Property<int>("CollectionsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("collections_id");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("shows_id");
|
||||
|
||||
b.HasKey("CollectionsID", "ShowsID")
|
||||
.HasName("pk_link_collection_show");
|
||||
|
||||
b.HasIndex("ShowsID")
|
||||
.HasDatabaseName("ix_link_collection_show_shows_id");
|
||||
|
||||
b.ToTable("link_collection_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GenreShow", b =>
|
||||
{
|
||||
b.Property<int>("GenresID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("genres_id");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("shows_id");
|
||||
|
||||
b.HasKey("GenresID", "ShowsID")
|
||||
.HasName("pk_link_show_genre");
|
||||
|
||||
b.HasIndex("ShowsID")
|
||||
.HasDatabaseName("ix_link_show_genre_shows_id");
|
||||
|
||||
b.ToTable("link_show_genre");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Collection", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
@ -234,120 +291,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.ToView("library_items");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Collection, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_collection_show");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_collection_show_second_id");
|
||||
|
||||
b.ToTable("link_collection_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Collection>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_library_collection");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_library_collection_second_id");
|
||||
|
||||
b.ToTable("link_library_collection");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Provider>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_library_provider");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_library_provider_second_id");
|
||||
|
||||
b.ToTable("link_library_provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_library_show");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_library_show_second_id");
|
||||
|
||||
b.ToTable("link_library_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Show, Kyoo.Models.Genre>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_show_genre");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_show_genre_second_id");
|
||||
|
||||
b.ToTable("link_show_genre");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.User, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_user_show");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_user_show_second_id");
|
||||
|
||||
b.ToTable("link_user_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.People", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
@ -427,10 +370,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("images");
|
||||
|
||||
b.Property<string>("LogoExtension")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("logo_extension");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("name");
|
||||
@ -681,6 +620,10 @@ namespace Kyoo.Postgresql.Migrations
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("extra_data");
|
||||
|
||||
b.Property<Dictionary<int, string>>("Images")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("images");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("password");
|
||||
@ -710,27 +653,84 @@ namespace Kyoo.Postgresql.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
b.Property<int>("UserID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
.HasColumnName("user_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
b.Property<int>("EpisodeID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
.HasColumnName("episode_id");
|
||||
|
||||
b.Property<int>("WatchedPercentage")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("watched_percentage");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
b.HasKey("UserID", "EpisodeID")
|
||||
.HasName("pk_watched_episodes");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_watched_episodes_second_id");
|
||||
b.HasIndex("EpisodeID")
|
||||
.HasDatabaseName("ix_watched_episodes_episode_id");
|
||||
|
||||
b.ToTable("watched_episodes");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryProvider", b =>
|
||||
{
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("libraries_id");
|
||||
|
||||
b.Property<int>("ProvidersID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("providers_id");
|
||||
|
||||
b.HasKey("LibrariesID", "ProvidersID")
|
||||
.HasName("pk_link_library_provider");
|
||||
|
||||
b.HasIndex("ProvidersID")
|
||||
.HasDatabaseName("ix_link_library_provider_providers_id");
|
||||
|
||||
b.ToTable("link_library_provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryShow", b =>
|
||||
{
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("libraries_id");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("shows_id");
|
||||
|
||||
b.HasKey("LibrariesID", "ShowsID")
|
||||
.HasName("pk_link_library_show");
|
||||
|
||||
b.HasIndex("ShowsID")
|
||||
.HasDatabaseName("ix_link_library_show_shows_id");
|
||||
|
||||
b.ToTable("link_library_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ShowUser", b =>
|
||||
{
|
||||
b.Property<int>("UsersID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("users_id");
|
||||
|
||||
b.Property<int>("WatchedID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("watched_id");
|
||||
|
||||
b.HasKey("UsersID", "WatchedID")
|
||||
.HasName("pk_link_user_show");
|
||||
|
||||
b.HasIndex("WatchedID")
|
||||
.HasDatabaseName("ix_link_user_show_watched_id");
|
||||
|
||||
b.ToTable("link_user_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("collection_metadata_id", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -893,6 +893,57 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.ToTable("studio_metadata_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionLibrary", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CollectionsID")
|
||||
.HasConstraintName("fk_link_library_collection_collections_collections_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.HasConstraintName("fk_link_library_collection_libraries_libraries_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CollectionsID")
|
||||
.HasConstraintName("fk_link_collection_show_collections_collections_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.HasConstraintName("fk_link_collection_show_shows_shows_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GenreShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Genre", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("GenresID")
|
||||
.HasConstraintName("fk_link_show_genre_genres_genres_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.HasConstraintName("fk_link_show_genre_shows_shows_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Episode", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Season", "Season")
|
||||
@ -913,132 +964,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.Navigation("Show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Collection, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_collection_show_collections_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany("CollectionLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_collection_show_shows_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Collection>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("CollectionLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_library_collection_libraries_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Collection", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_library_collection_collections_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Provider>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("ProviderLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_library_provider_libraries_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Provider", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_library_provider_providers_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_library_show_libraries_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_library_show_shows_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Show, Kyoo.Models.Genre>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Show", "First")
|
||||
.WithMany("GenreLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_show_genre_shows_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Genre", "Second")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_show_genre_genres_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.User, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_user_show_users_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany()
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_user_show_shows_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.PeopleRole", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.People", "People")
|
||||
@ -1097,23 +1022,72 @@ namespace Kyoo.Postgresql.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", "First")
|
||||
.WithMany("CurrentlyWatching")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_watched_episodes_users_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Episode", "Second")
|
||||
b.HasOne("Kyoo.Models.Episode", "Episode")
|
||||
.WithMany()
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_watched_episodes_episodes_second_id")
|
||||
.HasForeignKey("EpisodeID")
|
||||
.HasConstraintName("fk_watched_episodes_episodes_episode_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
b.HasOne("Kyoo.Models.User", null)
|
||||
.WithMany("CurrentlyWatching")
|
||||
.HasForeignKey("UserID")
|
||||
.HasConstraintName("fk_watched_episodes_users_user_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Second");
|
||||
b.Navigation("Episode");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryProvider", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.HasConstraintName("fk_link_library_provider_libraries_libraries_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Provider", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ProvidersID")
|
||||
.HasConstraintName("fk_link_library_provider_providers_providers_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.HasConstraintName("fk_link_library_show_libraries_libraries_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.HasConstraintName("fk_link_library_show_shows_shows_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ShowUser", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UsersID")
|
||||
.HasConstraintName("fk_link_user_show_users_users_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("WatchedID")
|
||||
.HasConstraintName("fk_link_user_show_shows_watched_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("collection_metadata_id", b =>
|
||||
@ -1233,10 +1207,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
modelBuilder.Entity("Kyoo.Models.Collection", b =>
|
||||
{
|
||||
b.Navigation("ExternalIDs");
|
||||
|
||||
b.Navigation("LibraryLinks");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Episode", b =>
|
||||
@ -1246,20 +1216,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.Navigation("Tracks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Genre", b =>
|
||||
{
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Library", b =>
|
||||
{
|
||||
b.Navigation("CollectionLinks");
|
||||
|
||||
b.Navigation("ProviderLinks");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.People", b =>
|
||||
{
|
||||
b.Navigation("ExternalIDs");
|
||||
@ -1267,11 +1223,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.Navigation("Roles");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Provider", b =>
|
||||
{
|
||||
b.Navigation("LibraryLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Season", b =>
|
||||
{
|
||||
b.Navigation("Episodes");
|
||||
@ -1281,16 +1232,10 @@ namespace Kyoo.Postgresql.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Show", b =>
|
||||
{
|
||||
b.Navigation("CollectionLinks");
|
||||
|
||||
b.Navigation("Episodes");
|
||||
|
||||
b.Navigation("ExternalIDs");
|
||||
|
||||
b.Navigation("GenreLinks");
|
||||
|
||||
b.Navigation("LibraryLinks");
|
||||
|
||||
b.Navigation("People");
|
||||
|
||||
b.Navigation("Seasons");
|
||||
@ -1306,8 +1251,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
modelBuilder.Entity("Kyoo.Models.User", b =>
|
||||
{
|
||||
b.Navigation("CurrentlyWatching");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
@ -149,8 +149,8 @@ namespace Kyoo.Postgresql.Migrations
|
||||
WHERE NOT (EXISTS (
|
||||
SELECT 1
|
||||
FROM link_collection_show AS l
|
||||
INNER JOIN collections AS c ON l.first_id = c.id
|
||||
WHERE s.id = l.second_id))
|
||||
INNER JOIN collections AS c ON l.collections_id = c.id
|
||||
WHERE s.id = l.shows_id))
|
||||
UNION ALL
|
||||
SELECT -c0.id, c0.slug, c0.name AS title, c0.overview, 'unknown'::status AS status,
|
||||
NULL AS start_air, NULL AS end_air, c0.images, 'collection'::item_type AS type
|
@ -24,6 +24,63 @@ namespace Kyoo.Postgresql.Migrations
|
||||
.HasAnnotation("ProductVersion", "5.0.8")
|
||||
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
|
||||
|
||||
modelBuilder.Entity("CollectionLibrary", b =>
|
||||
{
|
||||
b.Property<int>("CollectionsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("collections_id");
|
||||
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("libraries_id");
|
||||
|
||||
b.HasKey("CollectionsID", "LibrariesID")
|
||||
.HasName("pk_link_library_collection");
|
||||
|
||||
b.HasIndex("LibrariesID")
|
||||
.HasDatabaseName("ix_link_library_collection_libraries_id");
|
||||
|
||||
b.ToTable("link_library_collection");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionShow", b =>
|
||||
{
|
||||
b.Property<int>("CollectionsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("collections_id");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("shows_id");
|
||||
|
||||
b.HasKey("CollectionsID", "ShowsID")
|
||||
.HasName("pk_link_collection_show");
|
||||
|
||||
b.HasIndex("ShowsID")
|
||||
.HasDatabaseName("ix_link_collection_show_shows_id");
|
||||
|
||||
b.ToTable("link_collection_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GenreShow", b =>
|
||||
{
|
||||
b.Property<int>("GenresID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("genres_id");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("shows_id");
|
||||
|
||||
b.HasKey("GenresID", "ShowsID")
|
||||
.HasName("pk_link_show_genre");
|
||||
|
||||
b.HasIndex("ShowsID")
|
||||
.HasDatabaseName("ix_link_show_genre_shows_id");
|
||||
|
||||
b.ToTable("link_show_genre");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Collection", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
@ -232,120 +289,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.ToView("library_items");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Collection, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_collection_show");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_collection_show_second_id");
|
||||
|
||||
b.ToTable("link_collection_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Collection>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_library_collection");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_library_collection_second_id");
|
||||
|
||||
b.ToTable("link_library_collection");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Provider>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_library_provider");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_library_provider_second_id");
|
||||
|
||||
b.ToTable("link_library_provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_library_show");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_library_show_second_id");
|
||||
|
||||
b.ToTable("link_library_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Show, Kyoo.Models.Genre>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_show_genre");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_show_genre_second_id");
|
||||
|
||||
b.ToTable("link_show_genre");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.User, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
.HasName("pk_link_user_show");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_link_user_show_second_id");
|
||||
|
||||
b.ToTable("link_user_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.People", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
@ -425,10 +368,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("images");
|
||||
|
||||
b.Property<string>("LogoExtension")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("logo_extension");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("name");
|
||||
@ -679,6 +618,10 @@ namespace Kyoo.Postgresql.Migrations
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("extra_data");
|
||||
|
||||
b.Property<Dictionary<int, string>>("Images")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("images");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("password");
|
||||
@ -708,27 +651,84 @@ namespace Kyoo.Postgresql.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
b.Property<int>("UserID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("first_id");
|
||||
.HasColumnName("user_id");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
b.Property<int>("EpisodeID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("second_id");
|
||||
.HasColumnName("episode_id");
|
||||
|
||||
b.Property<int>("WatchedPercentage")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("watched_percentage");
|
||||
|
||||
b.HasKey("FirstID", "SecondID")
|
||||
b.HasKey("UserID", "EpisodeID")
|
||||
.HasName("pk_watched_episodes");
|
||||
|
||||
b.HasIndex("SecondID")
|
||||
.HasDatabaseName("ix_watched_episodes_second_id");
|
||||
b.HasIndex("EpisodeID")
|
||||
.HasDatabaseName("ix_watched_episodes_episode_id");
|
||||
|
||||
b.ToTable("watched_episodes");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryProvider", b =>
|
||||
{
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("libraries_id");
|
||||
|
||||
b.Property<int>("ProvidersID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("providers_id");
|
||||
|
||||
b.HasKey("LibrariesID", "ProvidersID")
|
||||
.HasName("pk_link_library_provider");
|
||||
|
||||
b.HasIndex("ProvidersID")
|
||||
.HasDatabaseName("ix_link_library_provider_providers_id");
|
||||
|
||||
b.ToTable("link_library_provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryShow", b =>
|
||||
{
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("libraries_id");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("shows_id");
|
||||
|
||||
b.HasKey("LibrariesID", "ShowsID")
|
||||
.HasName("pk_link_library_show");
|
||||
|
||||
b.HasIndex("ShowsID")
|
||||
.HasDatabaseName("ix_link_library_show_shows_id");
|
||||
|
||||
b.ToTable("link_library_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ShowUser", b =>
|
||||
{
|
||||
b.Property<int>("UsersID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("users_id");
|
||||
|
||||
b.Property<int>("WatchedID")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("watched_id");
|
||||
|
||||
b.HasKey("UsersID", "WatchedID")
|
||||
.HasName("pk_link_user_show");
|
||||
|
||||
b.HasIndex("WatchedID")
|
||||
.HasDatabaseName("ix_link_user_show_watched_id");
|
||||
|
||||
b.ToTable("link_user_show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("collection_metadata_id", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -891,6 +891,57 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.ToTable("studio_metadata_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionLibrary", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CollectionsID")
|
||||
.HasConstraintName("fk_link_library_collection_collections_collections_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.HasConstraintName("fk_link_library_collection_libraries_libraries_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CollectionsID")
|
||||
.HasConstraintName("fk_link_collection_show_collections_collections_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.HasConstraintName("fk_link_collection_show_shows_shows_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GenreShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Genre", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("GenresID")
|
||||
.HasConstraintName("fk_link_show_genre_genres_genres_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.HasConstraintName("fk_link_show_genre_shows_shows_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Episode", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Season", "Season")
|
||||
@ -911,132 +962,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.Navigation("Show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Collection, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_collection_show_collections_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany("CollectionLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_collection_show_shows_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Collection>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("CollectionLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_library_collection_libraries_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Collection", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_library_collection_collections_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Provider>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("ProviderLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_library_provider_libraries_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Provider", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_library_provider_providers_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_library_show_libraries_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_library_show_shows_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Show, Kyoo.Models.Genre>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Show", "First")
|
||||
.WithMany("GenreLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_show_genre_shows_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Genre", "Second")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_show_genre_genres_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.User, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_link_user_show_users_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany()
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_link_user_show_shows_second_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.PeopleRole", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.People", "People")
|
||||
@ -1095,23 +1020,72 @@ namespace Kyoo.Postgresql.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", "First")
|
||||
.WithMany("CurrentlyWatching")
|
||||
.HasForeignKey("FirstID")
|
||||
.HasConstraintName("fk_watched_episodes_users_first_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Episode", "Second")
|
||||
b.HasOne("Kyoo.Models.Episode", "Episode")
|
||||
.WithMany()
|
||||
.HasForeignKey("SecondID")
|
||||
.HasConstraintName("fk_watched_episodes_episodes_second_id")
|
||||
.HasForeignKey("EpisodeID")
|
||||
.HasConstraintName("fk_watched_episodes_episodes_episode_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
b.HasOne("Kyoo.Models.User", null)
|
||||
.WithMany("CurrentlyWatching")
|
||||
.HasForeignKey("UserID")
|
||||
.HasConstraintName("fk_watched_episodes_users_user_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Second");
|
||||
b.Navigation("Episode");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryProvider", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.HasConstraintName("fk_link_library_provider_libraries_libraries_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Provider", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ProvidersID")
|
||||
.HasConstraintName("fk_link_library_provider_providers_providers_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.HasConstraintName("fk_link_library_show_libraries_libraries_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.HasConstraintName("fk_link_library_show_shows_shows_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ShowUser", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UsersID")
|
||||
.HasConstraintName("fk_link_user_show_users_users_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("WatchedID")
|
||||
.HasConstraintName("fk_link_user_show_shows_watched_id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("collection_metadata_id", b =>
|
||||
@ -1231,10 +1205,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
modelBuilder.Entity("Kyoo.Models.Collection", b =>
|
||||
{
|
||||
b.Navigation("ExternalIDs");
|
||||
|
||||
b.Navigation("LibraryLinks");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Episode", b =>
|
||||
@ -1244,20 +1214,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.Navigation("Tracks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Genre", b =>
|
||||
{
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Library", b =>
|
||||
{
|
||||
b.Navigation("CollectionLinks");
|
||||
|
||||
b.Navigation("ProviderLinks");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.People", b =>
|
||||
{
|
||||
b.Navigation("ExternalIDs");
|
||||
@ -1265,11 +1221,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.Navigation("Roles");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Provider", b =>
|
||||
{
|
||||
b.Navigation("LibraryLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Season", b =>
|
||||
{
|
||||
b.Navigation("Episodes");
|
||||
@ -1279,16 +1230,10 @@ namespace Kyoo.Postgresql.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Show", b =>
|
||||
{
|
||||
b.Navigation("CollectionLinks");
|
||||
|
||||
b.Navigation("Episodes");
|
||||
|
||||
b.Navigation("ExternalIDs");
|
||||
|
||||
b.Navigation("GenreLinks");
|
||||
|
||||
b.Navigation("LibraryLinks");
|
||||
|
||||
b.Navigation("People");
|
||||
|
||||
b.Navigation("Seasons");
|
||||
@ -1304,8 +1249,6 @@ namespace Kyoo.Postgresql.Migrations
|
||||
modelBuilder.Entity("Kyoo.Models.User", b =>
|
||||
{
|
||||
b.Navigation("CurrentlyWatching");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
|
@ -122,6 +122,9 @@ namespace Kyoo.Postgresql
|
||||
modelBuilder.Entity<Provider>()
|
||||
.Property(x => x.Images)
|
||||
.HasColumnType("jsonb");
|
||||
modelBuilder.Entity<User>()
|
||||
.Property(x => x.Images)
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
base.OnModelCreating(modelBuilder);
|
||||
}
|
||||
@ -132,6 +135,13 @@ namespace Kyoo.Postgresql
|
||||
SnakeCaseNameRewriter rewriter = new(CultureInfo.InvariantCulture);
|
||||
return rewriter.RewriteName(typeof(T).Name + nameof(MetadataID));
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override string LinkName<T, T2>()
|
||||
{
|
||||
SnakeCaseNameRewriter rewriter = new(CultureInfo.InvariantCulture);
|
||||
return rewriter.RewriteName("Link" + typeof(T).Name + typeof(T2).Name);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override bool IsDuplicateException(Exception ex)
|
||||
|
@ -66,7 +66,7 @@ namespace Kyoo.Postgresql
|
||||
x.UseNpgsql(_configuration.GetDatabaseConnection("postgres"));
|
||||
if (_environment.IsDevelopment())
|
||||
x.EnableDetailedErrors().EnableSensitiveDataLogging();
|
||||
});
|
||||
}, ServiceLifetime.Transient);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
namespace Kyoo.SqLite.Migrations
|
||||
{
|
||||
[DbContext(typeof(SqLiteContext))]
|
||||
[Migration("20210728134952_Initial")]
|
||||
[Migration("20210730203155_Initial")]
|
||||
partial class Initial
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
@ -18,6 +18,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "5.0.8");
|
||||
|
||||
modelBuilder.Entity("CollectionLibrary", b =>
|
||||
{
|
||||
b.Property<int>("CollectionsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("CollectionsID", "LibrariesID");
|
||||
|
||||
b.HasIndex("LibrariesID");
|
||||
|
||||
b.ToTable("LinkLibraryCollection");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionMetadataID", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -39,6 +54,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToTable("CollectionMetadataID");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionShow", b =>
|
||||
{
|
||||
b.Property<int>("CollectionsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("CollectionsID", "ShowsID");
|
||||
|
||||
b.HasIndex("ShowsID");
|
||||
|
||||
b.ToTable("LinkCollectionShow");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("EpisodeMetadataID", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -60,6 +90,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToTable("EpisodeMetadataID");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GenreShow", b =>
|
||||
{
|
||||
b.Property<int>("GenresID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("GenresID", "ShowsID");
|
||||
|
||||
b.HasIndex("ShowsID");
|
||||
|
||||
b.ToTable("LinkShowGenre");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Collection", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
@ -220,96 +265,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToView("LibraryItems");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Collection, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Collection, Show>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Collection>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Library, Collection>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Provider>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Library, Provider>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Library, Show>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Show, Kyoo.Models.Genre>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Show, Genre>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.User, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<User, Show>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.People", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
@ -370,9 +325,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Property<string>("Images")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("LogoExtension")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
@ -564,6 +516,9 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Property<string>("ExtraData")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Images")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
@ -587,22 +542,52 @@ namespace Kyoo.SqLite.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
b.Property<int>("UserID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
b.Property<int>("EpisodeID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("WatchedPercentage")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
b.HasKey("UserID", "EpisodeID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
b.HasIndex("EpisodeID");
|
||||
|
||||
b.ToTable("WatchedEpisodes");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryProvider", b =>
|
||||
{
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ProvidersID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("LibrariesID", "ProvidersID");
|
||||
|
||||
b.HasIndex("ProvidersID");
|
||||
|
||||
b.ToTable("LinkLibraryProvider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryShow", b =>
|
||||
{
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("LibrariesID", "ShowsID");
|
||||
|
||||
b.HasIndex("ShowsID");
|
||||
|
||||
b.ToTable("LinkLibraryShow");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PeopleMetadataID", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -666,6 +651,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToTable("ShowMetadataID");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ShowUser", b =>
|
||||
{
|
||||
b.Property<int>("UsersID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("WatchedID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("UsersID", "WatchedID");
|
||||
|
||||
b.HasIndex("WatchedID");
|
||||
|
||||
b.ToTable("LinkUserShow");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("StudioMetadataID", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -687,6 +687,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToTable("StudioMetadataID");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionLibrary", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CollectionsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionMetadataID", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Provider", "Provider")
|
||||
@ -704,6 +719,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CollectionsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("EpisodeMetadataID", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Provider", "Provider")
|
||||
@ -721,6 +751,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GenreShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Genre", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("GenresID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Episode", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Season", "Season")
|
||||
@ -739,120 +784,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Collection, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany("CollectionLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Collection>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("CollectionLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Collection", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Provider>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("ProviderLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Provider", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Show, Kyoo.Models.Genre>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Show", "First")
|
||||
.WithMany("GenreLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Genre", "Second")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.User, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany()
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.PeopleRole", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.People", "People")
|
||||
@ -906,21 +837,49 @@ namespace Kyoo.SqLite.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", "First")
|
||||
.WithMany("CurrentlyWatching")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Episode", "Second")
|
||||
b.HasOne("Kyoo.Models.Episode", "Episode")
|
||||
.WithMany()
|
||||
.HasForeignKey("SecondID")
|
||||
.HasForeignKey("EpisodeID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
b.HasOne("Kyoo.Models.User", null)
|
||||
.WithMany("CurrentlyWatching")
|
||||
.HasForeignKey("UserID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Second");
|
||||
b.Navigation("Episode");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryProvider", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Provider", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ProvidersID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PeopleMetadataID", b =>
|
||||
@ -974,6 +933,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ShowUser", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UsersID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("WatchedID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("StudioMetadataID", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Provider", "Provider")
|
||||
@ -994,10 +968,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
modelBuilder.Entity("Kyoo.Models.Collection", b =>
|
||||
{
|
||||
b.Navigation("ExternalIDs");
|
||||
|
||||
b.Navigation("LibraryLinks");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Episode", b =>
|
||||
@ -1007,20 +977,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Tracks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Genre", b =>
|
||||
{
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Library", b =>
|
||||
{
|
||||
b.Navigation("CollectionLinks");
|
||||
|
||||
b.Navigation("ProviderLinks");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.People", b =>
|
||||
{
|
||||
b.Navigation("ExternalIDs");
|
||||
@ -1028,11 +984,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Roles");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Provider", b =>
|
||||
{
|
||||
b.Navigation("LibraryLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Season", b =>
|
||||
{
|
||||
b.Navigation("Episodes");
|
||||
@ -1042,16 +993,10 @@ namespace Kyoo.SqLite.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Show", b =>
|
||||
{
|
||||
b.Navigation("CollectionLinks");
|
||||
|
||||
b.Navigation("Episodes");
|
||||
|
||||
b.Navigation("ExternalIDs");
|
||||
|
||||
b.Navigation("GenreLinks");
|
||||
|
||||
b.Navigation("LibraryLinks");
|
||||
|
||||
b.Navigation("People");
|
||||
|
||||
b.Navigation("Seasons");
|
||||
@ -1067,8 +1012,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
modelBuilder.Entity("Kyoo.Models.User", b =>
|
||||
{
|
||||
b.Navigation("CurrentlyWatching");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
@ -75,8 +75,7 @@ namespace Kyoo.SqLite.Migrations
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
Slug = table.Column<string>(type: "TEXT", nullable: false),
|
||||
Name = table.Column<string>(type: "TEXT", nullable: true),
|
||||
Images = table.Column<string>(type: "TEXT", nullable: true),
|
||||
LogoExtension = table.Column<string>(type: "TEXT", nullable: true)
|
||||
Images = table.Column<string>(type: "TEXT", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@ -108,7 +107,8 @@ namespace Kyoo.SqLite.Migrations
|
||||
Email = table.Column<string>(type: "TEXT", nullable: true),
|
||||
Password = table.Column<string>(type: "TEXT", nullable: true),
|
||||
Permissions = table.Column<string>(type: "TEXT", nullable: true),
|
||||
ExtraData = table.Column<string>(type: "TEXT", nullable: true)
|
||||
ExtraData = table.Column<string>(type: "TEXT", nullable: true),
|
||||
Images = table.Column<string>(type: "TEXT", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@ -116,24 +116,24 @@ namespace Kyoo.SqLite.Migrations
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Link<Library, Collection>",
|
||||
name: "LinkLibraryCollection",
|
||||
columns: table => new
|
||||
{
|
||||
FirstID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
SecondID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
CollectionsID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
LibrariesID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Link<Library, Collection>", x => new { x.FirstID, x.SecondID });
|
||||
table.PrimaryKey("PK_LinkLibraryCollection", x => new { x.CollectionsID, x.LibrariesID });
|
||||
table.ForeignKey(
|
||||
name: "FK_Link<Library, Collection>_Collections_SecondID",
|
||||
column: x => x.SecondID,
|
||||
name: "FK_LinkLibraryCollection_Collections_CollectionsID",
|
||||
column: x => x.CollectionsID,
|
||||
principalTable: "Collections",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_Link<Library, Collection>_Libraries_FirstID",
|
||||
column: x => x.FirstID,
|
||||
name: "FK_LinkLibraryCollection_Libraries_LibrariesID",
|
||||
column: x => x.LibrariesID,
|
||||
principalTable: "Libraries",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
@ -166,24 +166,24 @@ namespace Kyoo.SqLite.Migrations
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Link<Library, Provider>",
|
||||
name: "LinkLibraryProvider",
|
||||
columns: table => new
|
||||
{
|
||||
FirstID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
SecondID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
LibrariesID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
ProvidersID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Link<Library, Provider>", x => new { x.FirstID, x.SecondID });
|
||||
table.PrimaryKey("PK_LinkLibraryProvider", x => new { x.LibrariesID, x.ProvidersID });
|
||||
table.ForeignKey(
|
||||
name: "FK_Link<Library, Provider>_Libraries_FirstID",
|
||||
column: x => x.FirstID,
|
||||
name: "FK_LinkLibraryProvider_Libraries_LibrariesID",
|
||||
column: x => x.LibrariesID,
|
||||
principalTable: "Libraries",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_Link<Library, Provider>_Providers_SecondID",
|
||||
column: x => x.SecondID,
|
||||
name: "FK_LinkLibraryProvider_Providers_ProvidersID",
|
||||
column: x => x.ProvidersID,
|
||||
principalTable: "Providers",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
@ -271,96 +271,96 @@ namespace Kyoo.SqLite.Migrations
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Link<Collection, Show>",
|
||||
name: "LinkCollectionShow",
|
||||
columns: table => new
|
||||
{
|
||||
FirstID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
SecondID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
CollectionsID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
ShowsID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Link<Collection, Show>", x => new { x.FirstID, x.SecondID });
|
||||
table.PrimaryKey("PK_LinkCollectionShow", x => new { x.CollectionsID, x.ShowsID });
|
||||
table.ForeignKey(
|
||||
name: "FK_Link<Collection, Show>_Collections_FirstID",
|
||||
column: x => x.FirstID,
|
||||
name: "FK_LinkCollectionShow_Collections_CollectionsID",
|
||||
column: x => x.CollectionsID,
|
||||
principalTable: "Collections",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_Link<Collection, Show>_Shows_SecondID",
|
||||
column: x => x.SecondID,
|
||||
name: "FK_LinkCollectionShow_Shows_ShowsID",
|
||||
column: x => x.ShowsID,
|
||||
principalTable: "Shows",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Link<Library, Show>",
|
||||
name: "LinkLibraryShow",
|
||||
columns: table => new
|
||||
{
|
||||
FirstID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
SecondID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
LibrariesID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
ShowsID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Link<Library, Show>", x => new { x.FirstID, x.SecondID });
|
||||
table.PrimaryKey("PK_LinkLibraryShow", x => new { x.LibrariesID, x.ShowsID });
|
||||
table.ForeignKey(
|
||||
name: "FK_Link<Library, Show>_Libraries_FirstID",
|
||||
column: x => x.FirstID,
|
||||
name: "FK_LinkLibraryShow_Libraries_LibrariesID",
|
||||
column: x => x.LibrariesID,
|
||||
principalTable: "Libraries",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_Link<Library, Show>_Shows_SecondID",
|
||||
column: x => x.SecondID,
|
||||
name: "FK_LinkLibraryShow_Shows_ShowsID",
|
||||
column: x => x.ShowsID,
|
||||
principalTable: "Shows",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Link<Show, Genre>",
|
||||
name: "LinkShowGenre",
|
||||
columns: table => new
|
||||
{
|
||||
FirstID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
SecondID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
GenresID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
ShowsID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Link<Show, Genre>", x => new { x.FirstID, x.SecondID });
|
||||
table.PrimaryKey("PK_LinkShowGenre", x => new { x.GenresID, x.ShowsID });
|
||||
table.ForeignKey(
|
||||
name: "FK_Link<Show, Genre>_Genres_SecondID",
|
||||
column: x => x.SecondID,
|
||||
name: "FK_LinkShowGenre_Genres_GenresID",
|
||||
column: x => x.GenresID,
|
||||
principalTable: "Genres",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_Link<Show, Genre>_Shows_FirstID",
|
||||
column: x => x.FirstID,
|
||||
name: "FK_LinkShowGenre_Shows_ShowsID",
|
||||
column: x => x.ShowsID,
|
||||
principalTable: "Shows",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Link<User, Show>",
|
||||
name: "LinkUserShow",
|
||||
columns: table => new
|
||||
{
|
||||
FirstID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
SecondID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
UsersID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
WatchedID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Link<User, Show>", x => new { x.FirstID, x.SecondID });
|
||||
table.PrimaryKey("PK_LinkUserShow", x => new { x.UsersID, x.WatchedID });
|
||||
table.ForeignKey(
|
||||
name: "FK_Link<User, Show>_Shows_SecondID",
|
||||
column: x => x.SecondID,
|
||||
name: "FK_LinkUserShow_Shows_WatchedID",
|
||||
column: x => x.WatchedID,
|
||||
principalTable: "Shows",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_Link<User, Show>_Users_FirstID",
|
||||
column: x => x.FirstID,
|
||||
name: "FK_LinkUserShow_Users_UsersID",
|
||||
column: x => x.UsersID,
|
||||
principalTable: "Users",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
@ -566,22 +566,22 @@ namespace Kyoo.SqLite.Migrations
|
||||
name: "WatchedEpisodes",
|
||||
columns: table => new
|
||||
{
|
||||
FirstID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
SecondID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
UserID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
EpisodeID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
WatchedPercentage = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_WatchedEpisodes", x => new { x.FirstID, x.SecondID });
|
||||
table.PrimaryKey("PK_WatchedEpisodes", x => new { x.UserID, x.EpisodeID });
|
||||
table.ForeignKey(
|
||||
name: "FK_WatchedEpisodes_Episodes_SecondID",
|
||||
column: x => x.SecondID,
|
||||
name: "FK_WatchedEpisodes_Episodes_EpisodeID",
|
||||
column: x => x.EpisodeID,
|
||||
principalTable: "Episodes",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_WatchedEpisodes_Users_FirstID",
|
||||
column: x => x.FirstID,
|
||||
name: "FK_WatchedEpisodes_Users_UserID",
|
||||
column: x => x.UserID,
|
||||
principalTable: "Users",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
@ -633,34 +633,34 @@ namespace Kyoo.SqLite.Migrations
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Link<Collection, Show>_SecondID",
|
||||
table: "Link<Collection, Show>",
|
||||
column: "SecondID");
|
||||
name: "IX_LinkCollectionShow_ShowsID",
|
||||
table: "LinkCollectionShow",
|
||||
column: "ShowsID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Link<Library, Collection>_SecondID",
|
||||
table: "Link<Library, Collection>",
|
||||
column: "SecondID");
|
||||
name: "IX_LinkLibraryCollection_LibrariesID",
|
||||
table: "LinkLibraryCollection",
|
||||
column: "LibrariesID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Link<Library, Provider>_SecondID",
|
||||
table: "Link<Library, Provider>",
|
||||
column: "SecondID");
|
||||
name: "IX_LinkLibraryProvider_ProvidersID",
|
||||
table: "LinkLibraryProvider",
|
||||
column: "ProvidersID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Link<Library, Show>_SecondID",
|
||||
table: "Link<Library, Show>",
|
||||
column: "SecondID");
|
||||
name: "IX_LinkLibraryShow_ShowsID",
|
||||
table: "LinkLibraryShow",
|
||||
column: "ShowsID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Link<Show, Genre>_SecondID",
|
||||
table: "Link<Show, Genre>",
|
||||
column: "SecondID");
|
||||
name: "IX_LinkShowGenre_ShowsID",
|
||||
table: "LinkShowGenre",
|
||||
column: "ShowsID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Link<User, Show>_SecondID",
|
||||
table: "Link<User, Show>",
|
||||
column: "SecondID");
|
||||
name: "IX_LinkUserShow_WatchedID",
|
||||
table: "LinkUserShow",
|
||||
column: "WatchedID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_People_Slug",
|
||||
@ -752,9 +752,9 @@ namespace Kyoo.SqLite.Migrations
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WatchedEpisodes_SecondID",
|
||||
name: "IX_WatchedEpisodes_EpisodeID",
|
||||
table: "WatchedEpisodes",
|
||||
column: "SecondID");
|
||||
column: "EpisodeID");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
@ -766,22 +766,22 @@ namespace Kyoo.SqLite.Migrations
|
||||
name: "EpisodeMetadataID");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "Link<Collection, Show>");
|
||||
name: "LinkCollectionShow");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "Link<Library, Collection>");
|
||||
name: "LinkLibraryCollection");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "Link<Library, Provider>");
|
||||
name: "LinkLibraryProvider");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "Link<Library, Show>");
|
||||
name: "LinkLibraryShow");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "Link<Show, Genre>");
|
||||
name: "LinkShowGenre");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "Link<User, Show>");
|
||||
name: "LinkUserShow");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "PeopleMetadataID");
|
@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
namespace Kyoo.SqLite.Migrations
|
||||
{
|
||||
[DbContext(typeof(SqLiteContext))]
|
||||
[Migration("20210728135127_Triggers")]
|
||||
[Migration("20210730203746_Triggers")]
|
||||
partial class Triggers
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
@ -18,6 +18,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "5.0.8");
|
||||
|
||||
modelBuilder.Entity("CollectionLibrary", b =>
|
||||
{
|
||||
b.Property<int>("CollectionsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("CollectionsID", "LibrariesID");
|
||||
|
||||
b.HasIndex("LibrariesID");
|
||||
|
||||
b.ToTable("LinkLibraryCollection");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionMetadataID", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -39,6 +54,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToTable("CollectionMetadataID");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionShow", b =>
|
||||
{
|
||||
b.Property<int>("CollectionsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("CollectionsID", "ShowsID");
|
||||
|
||||
b.HasIndex("ShowsID");
|
||||
|
||||
b.ToTable("LinkCollectionShow");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("EpisodeMetadataID", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -60,6 +90,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToTable("EpisodeMetadataID");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GenreShow", b =>
|
||||
{
|
||||
b.Property<int>("GenresID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("GenresID", "ShowsID");
|
||||
|
||||
b.HasIndex("ShowsID");
|
||||
|
||||
b.ToTable("LinkShowGenre");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Collection", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
@ -220,96 +265,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToView("LibraryItems");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Collection, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Collection, Show>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Collection>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Library, Collection>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Provider>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Library, Provider>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Library, Show>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Show, Kyoo.Models.Genre>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Show, Genre>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.User, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<User, Show>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.People", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
@ -370,9 +325,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Property<string>("Images")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("LogoExtension")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
@ -564,6 +516,9 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Property<string>("ExtraData")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Images")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
@ -587,22 +542,52 @@ namespace Kyoo.SqLite.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
b.Property<int>("UserID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
b.Property<int>("EpisodeID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("WatchedPercentage")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
b.HasKey("UserID", "EpisodeID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
b.HasIndex("EpisodeID");
|
||||
|
||||
b.ToTable("WatchedEpisodes");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryProvider", b =>
|
||||
{
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ProvidersID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("LibrariesID", "ProvidersID");
|
||||
|
||||
b.HasIndex("ProvidersID");
|
||||
|
||||
b.ToTable("LinkLibraryProvider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryShow", b =>
|
||||
{
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("LibrariesID", "ShowsID");
|
||||
|
||||
b.HasIndex("ShowsID");
|
||||
|
||||
b.ToTable("LinkLibraryShow");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PeopleMetadataID", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -666,6 +651,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToTable("ShowMetadataID");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ShowUser", b =>
|
||||
{
|
||||
b.Property<int>("UsersID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("WatchedID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("UsersID", "WatchedID");
|
||||
|
||||
b.HasIndex("WatchedID");
|
||||
|
||||
b.ToTable("LinkUserShow");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("StudioMetadataID", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -687,6 +687,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToTable("StudioMetadataID");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionLibrary", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CollectionsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionMetadataID", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Provider", "Provider")
|
||||
@ -704,6 +719,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CollectionsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("EpisodeMetadataID", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Provider", "Provider")
|
||||
@ -721,6 +751,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GenreShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Genre", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("GenresID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Episode", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Season", "Season")
|
||||
@ -739,120 +784,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Collection, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany("CollectionLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Collection>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("CollectionLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Collection", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Provider>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("ProviderLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Provider", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Show, Kyoo.Models.Genre>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Show", "First")
|
||||
.WithMany("GenreLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Genre", "Second")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.User, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany()
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.PeopleRole", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.People", "People")
|
||||
@ -906,21 +837,49 @@ namespace Kyoo.SqLite.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", "First")
|
||||
.WithMany("CurrentlyWatching")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Episode", "Second")
|
||||
b.HasOne("Kyoo.Models.Episode", "Episode")
|
||||
.WithMany()
|
||||
.HasForeignKey("SecondID")
|
||||
.HasForeignKey("EpisodeID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
b.HasOne("Kyoo.Models.User", null)
|
||||
.WithMany("CurrentlyWatching")
|
||||
.HasForeignKey("UserID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Second");
|
||||
b.Navigation("Episode");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryProvider", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Provider", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ProvidersID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PeopleMetadataID", b =>
|
||||
@ -974,6 +933,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ShowUser", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UsersID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("WatchedID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("StudioMetadataID", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Provider", "Provider")
|
||||
@ -994,10 +968,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
modelBuilder.Entity("Kyoo.Models.Collection", b =>
|
||||
{
|
||||
b.Navigation("ExternalIDs");
|
||||
|
||||
b.Navigation("LibraryLinks");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Episode", b =>
|
||||
@ -1007,20 +977,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Tracks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Genre", b =>
|
||||
{
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Library", b =>
|
||||
{
|
||||
b.Navigation("CollectionLinks");
|
||||
|
||||
b.Navigation("ProviderLinks");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.People", b =>
|
||||
{
|
||||
b.Navigation("ExternalIDs");
|
||||
@ -1028,11 +984,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Roles");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Provider", b =>
|
||||
{
|
||||
b.Navigation("LibraryLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Season", b =>
|
||||
{
|
||||
b.Navigation("Episodes");
|
||||
@ -1042,16 +993,10 @@ namespace Kyoo.SqLite.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Show", b =>
|
||||
{
|
||||
b.Navigation("CollectionLinks");
|
||||
|
||||
b.Navigation("Episodes");
|
||||
|
||||
b.Navigation("ExternalIDs");
|
||||
|
||||
b.Navigation("GenreLinks");
|
||||
|
||||
b.Navigation("LibraryLinks");
|
||||
|
||||
b.Navigation("People");
|
||||
|
||||
b.Navigation("Seasons");
|
||||
@ -1067,8 +1012,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
modelBuilder.Entity("Kyoo.Models.User", b =>
|
||||
{
|
||||
b.Navigation("CurrentlyWatching");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
@ -161,9 +161,9 @@ namespace Kyoo.SqLite.Migrations
|
||||
FROM Shows AS s
|
||||
WHERE NOT (EXISTS (
|
||||
SELECT 1
|
||||
FROM 'Link<Collection, Show>' AS l
|
||||
INNER JOIN Collections AS c ON l.FirstID = c.ID
|
||||
WHERE s.ID = l.SecondID))
|
||||
FROM LinkCollectionShow AS l
|
||||
INNER JOIN Collections AS c ON l.CollectionsID = c.ID
|
||||
WHERE s.ID = l.ShowsID))
|
||||
UNION ALL
|
||||
SELECT -c0.ID, c0.Slug, c0.Name AS Title, c0.Overview, 0 AS Status,
|
||||
NULL AS StartAir, NULL AS EndAir, c0.Images, 2 AS Type
|
@ -16,6 +16,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "5.0.8");
|
||||
|
||||
modelBuilder.Entity("CollectionLibrary", b =>
|
||||
{
|
||||
b.Property<int>("CollectionsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("CollectionsID", "LibrariesID");
|
||||
|
||||
b.HasIndex("LibrariesID");
|
||||
|
||||
b.ToTable("LinkLibraryCollection");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionMetadataID", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -37,6 +52,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToTable("CollectionMetadataID");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionShow", b =>
|
||||
{
|
||||
b.Property<int>("CollectionsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("CollectionsID", "ShowsID");
|
||||
|
||||
b.HasIndex("ShowsID");
|
||||
|
||||
b.ToTable("LinkCollectionShow");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("EpisodeMetadataID", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -58,6 +88,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToTable("EpisodeMetadataID");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GenreShow", b =>
|
||||
{
|
||||
b.Property<int>("GenresID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("GenresID", "ShowsID");
|
||||
|
||||
b.HasIndex("ShowsID");
|
||||
|
||||
b.ToTable("LinkShowGenre");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Collection", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
@ -218,96 +263,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToView("LibraryItems");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Collection, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Collection, Show>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Collection>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Library, Collection>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Provider>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Library, Provider>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Library, Show>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Show, Kyoo.Models.Genre>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<Show, Genre>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.User, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
|
||||
b.ToTable("Link<User, Show>");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.People", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
@ -368,9 +323,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Property<string>("Images")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("LogoExtension")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
@ -562,6 +514,9 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Property<string>("ExtraData")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Images")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
@ -585,22 +540,52 @@ namespace Kyoo.SqLite.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b =>
|
||||
{
|
||||
b.Property<int>("FirstID")
|
||||
b.Property<int>("UserID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SecondID")
|
||||
b.Property<int>("EpisodeID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("WatchedPercentage")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("FirstID", "SecondID");
|
||||
b.HasKey("UserID", "EpisodeID");
|
||||
|
||||
b.HasIndex("SecondID");
|
||||
b.HasIndex("EpisodeID");
|
||||
|
||||
b.ToTable("WatchedEpisodes");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryProvider", b =>
|
||||
{
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ProvidersID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("LibrariesID", "ProvidersID");
|
||||
|
||||
b.HasIndex("ProvidersID");
|
||||
|
||||
b.ToTable("LinkLibraryProvider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryShow", b =>
|
||||
{
|
||||
b.Property<int>("LibrariesID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ShowsID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("LibrariesID", "ShowsID");
|
||||
|
||||
b.HasIndex("ShowsID");
|
||||
|
||||
b.ToTable("LinkLibraryShow");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PeopleMetadataID", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -664,6 +649,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToTable("ShowMetadataID");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ShowUser", b =>
|
||||
{
|
||||
b.Property<int>("UsersID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("WatchedID")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("UsersID", "WatchedID");
|
||||
|
||||
b.HasIndex("WatchedID");
|
||||
|
||||
b.ToTable("LinkUserShow");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("StudioMetadataID", b =>
|
||||
{
|
||||
b.Property<int>("ResourceID")
|
||||
@ -685,6 +685,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.ToTable("StudioMetadataID");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionLibrary", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CollectionsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionMetadataID", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Provider", "Provider")
|
||||
@ -702,6 +717,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("CollectionShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("CollectionsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("EpisodeMetadataID", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Provider", "Provider")
|
||||
@ -719,6 +749,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GenreShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Genre", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("GenresID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Episode", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Season", "Season")
|
||||
@ -737,120 +782,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Show");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Collection, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Collection", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany("CollectionLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Collection>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("CollectionLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Collection", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Provider>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("ProviderLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Provider", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Library, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany("LibraryLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.Show, Kyoo.Models.Genre>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Show", "First")
|
||||
.WithMany("GenreLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Genre", "Second")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Link<Kyoo.Models.User, Kyoo.Models.Show>", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", "First")
|
||||
.WithMany("ShowLinks")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", "Second")
|
||||
.WithMany()
|
||||
.HasForeignKey("SecondID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
|
||||
b.Navigation("Second");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.PeopleRole", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.People", "People")
|
||||
@ -904,21 +835,49 @@ namespace Kyoo.SqLite.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", "First")
|
||||
.WithMany("CurrentlyWatching")
|
||||
.HasForeignKey("FirstID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Episode", "Second")
|
||||
b.HasOne("Kyoo.Models.Episode", "Episode")
|
||||
.WithMany()
|
||||
.HasForeignKey("SecondID")
|
||||
.HasForeignKey("EpisodeID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("First");
|
||||
b.HasOne("Kyoo.Models.User", null)
|
||||
.WithMany("CurrentlyWatching")
|
||||
.HasForeignKey("UserID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Second");
|
||||
b.Navigation("Episode");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryProvider", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Provider", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ProvidersID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("LibraryShow", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Library", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("LibrariesID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ShowsID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PeopleMetadataID", b =>
|
||||
@ -972,6 +931,21 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Provider");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ShowUser", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.User", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UsersID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Kyoo.Models.Show", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("WatchedID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("StudioMetadataID", b =>
|
||||
{
|
||||
b.HasOne("Kyoo.Models.Provider", "Provider")
|
||||
@ -992,10 +966,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
modelBuilder.Entity("Kyoo.Models.Collection", b =>
|
||||
{
|
||||
b.Navigation("ExternalIDs");
|
||||
|
||||
b.Navigation("LibraryLinks");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Episode", b =>
|
||||
@ -1005,20 +975,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Tracks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Genre", b =>
|
||||
{
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Library", b =>
|
||||
{
|
||||
b.Navigation("CollectionLinks");
|
||||
|
||||
b.Navigation("ProviderLinks");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.People", b =>
|
||||
{
|
||||
b.Navigation("ExternalIDs");
|
||||
@ -1026,11 +982,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
b.Navigation("Roles");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Provider", b =>
|
||||
{
|
||||
b.Navigation("LibraryLinks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Season", b =>
|
||||
{
|
||||
b.Navigation("Episodes");
|
||||
@ -1040,16 +991,10 @@ namespace Kyoo.SqLite.Migrations
|
||||
|
||||
modelBuilder.Entity("Kyoo.Models.Show", b =>
|
||||
{
|
||||
b.Navigation("CollectionLinks");
|
||||
|
||||
b.Navigation("Episodes");
|
||||
|
||||
b.Navigation("ExternalIDs");
|
||||
|
||||
b.Navigation("GenreLinks");
|
||||
|
||||
b.Navigation("LibraryLinks");
|
||||
|
||||
b.Navigation("People");
|
||||
|
||||
b.Navigation("Seasons");
|
||||
@ -1065,8 +1010,6 @@ namespace Kyoo.SqLite.Migrations
|
||||
modelBuilder.Entity("Kyoo.Models.User", b =>
|
||||
{
|
||||
b.Navigation("CurrentlyWatching");
|
||||
|
||||
b.Navigation("ShowLinks");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
|
@ -133,6 +133,9 @@ namespace Kyoo.SqLite
|
||||
modelBuilder.Entity<Provider>()
|
||||
.Property(x => x.Images)
|
||||
.HasConversion(jsonConvertor);
|
||||
modelBuilder.Entity<User>()
|
||||
.Property(x => x.Images)
|
||||
.HasConversion(jsonConvertor);
|
||||
|
||||
|
||||
modelBuilder.Entity<LibraryItem>()
|
||||
@ -146,6 +149,12 @@ namespace Kyoo.SqLite
|
||||
{
|
||||
return typeof(T).Name + nameof(MetadataID);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override string LinkName<T, T2>()
|
||||
{
|
||||
return "Link" + typeof(T).Name + typeof(T2).Name;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override bool IsDuplicateException(Exception ex)
|
||||
|
@ -66,7 +66,7 @@ namespace Kyoo.SqLite
|
||||
x.UseSqlite(_configuration.GetDatabaseConnection("sqlite"));
|
||||
if (_environment.IsDevelopment())
|
||||
x.EnableDetailedErrors().EnableSensitiveDataLogging();
|
||||
});
|
||||
}, ServiceLifetime.Transient);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Kyoo.Controllers;
|
||||
using Xunit.Abstractions;
|
||||
@ -11,29 +12,28 @@ namespace Kyoo.Tests
|
||||
public ILibraryManager LibraryManager { get; }
|
||||
|
||||
|
||||
private readonly DatabaseContext _database;
|
||||
private readonly List<DatabaseContext> _databases = new();
|
||||
|
||||
public RepositoryActivator(ITestOutputHelper output, PostgresFixture postgres = null)
|
||||
{
|
||||
Context = postgres == null
|
||||
? new SqLiteTestContext(output)
|
||||
: new PostgresTestContext(postgres, output);
|
||||
_database = Context.New();
|
||||
|
||||
ProviderRepository provider = new(_database);
|
||||
LibraryRepository library = new(_database, provider);
|
||||
CollectionRepository collection = new(_database, provider);
|
||||
GenreRepository genre = new(_database);
|
||||
StudioRepository studio = new(_database, provider);
|
||||
PeopleRepository people = new(_database, provider,
|
||||
|
||||
ProviderRepository provider = new(_NewContext());
|
||||
LibraryRepository library = new(_NewContext(), provider);
|
||||
CollectionRepository collection = new(_NewContext(), provider);
|
||||
GenreRepository genre = new(_NewContext());
|
||||
StudioRepository studio = new(_NewContext(), provider);
|
||||
PeopleRepository people = new(_NewContext(), provider,
|
||||
new Lazy<IShowRepository>(() => LibraryManager.ShowRepository));
|
||||
ShowRepository show = new(_database, studio, people, genre, provider);
|
||||
SeasonRepository season = new(_database, provider);
|
||||
LibraryItemRepository libraryItem = new(_database,
|
||||
ShowRepository show = new(_NewContext(), studio, people, genre, provider);
|
||||
SeasonRepository season = new(_NewContext(), provider);
|
||||
LibraryItemRepository libraryItem = new(_NewContext(),
|
||||
new Lazy<ILibraryRepository>(() => LibraryManager.LibraryRepository));
|
||||
TrackRepository track = new(_database);
|
||||
EpisodeRepository episode = new(_database, provider, track);
|
||||
UserRepository user = new(_database);
|
||||
TrackRepository track = new(_NewContext());
|
||||
EpisodeRepository episode = new(_NewContext(), provider, track);
|
||||
UserRepository user = new(_NewContext());
|
||||
|
||||
LibraryManager = new LibraryManager(new IBaseRepository[] {
|
||||
provider,
|
||||
@ -51,16 +51,25 @@ namespace Kyoo.Tests
|
||||
});
|
||||
}
|
||||
|
||||
private DatabaseContext _NewContext()
|
||||
{
|
||||
DatabaseContext context = Context.New();
|
||||
_databases.Add(context);
|
||||
return context;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_database.Dispose();
|
||||
foreach (DatabaseContext context in _databases)
|
||||
context.Dispose();
|
||||
Context.Dispose();
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
public async ValueTask DisposeAsync()
|
||||
{
|
||||
await _database.DisposeAsync();
|
||||
foreach (DatabaseContext context in _databases)
|
||||
await context.DisposeAsync();
|
||||
await Context.DisposeAsync();
|
||||
}
|
||||
}
|
||||
|
@ -16,13 +16,6 @@ namespace Kyoo.Tests.Database
|
||||
_repositories = new RepositoryActivator(output);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[SuppressMessage("ReSharper", "EqualExpressionComparison")]
|
||||
public void SampleTest()
|
||||
{
|
||||
Assert.False(ReferenceEquals(TestSample.Get<Show>(), TestSample.Get<Show>()));
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_repositories.Dispose();
|
||||
@ -33,5 +26,12 @@ namespace Kyoo.Tests.Database
|
||||
{
|
||||
return _repositories.DisposeAsync();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[SuppressMessage("ReSharper", "EqualExpressionComparison")]
|
||||
public void SampleTest()
|
||||
{
|
||||
Assert.False(ReferenceEquals(TestSample.Get<Show>(), TestSample.Get<Show>()));
|
||||
}
|
||||
}
|
||||
}
|
@ -85,11 +85,11 @@ namespace Kyoo.Tests.Database
|
||||
|
||||
await using DatabaseContext database = Repositories.Context.New();
|
||||
Show show = await database.Shows
|
||||
.Include(x => x.Genres)
|
||||
.Include(x => x.Studio)
|
||||
.FirstAsync();
|
||||
|
||||
Assert.Equal(value.Slug, show.Slug);
|
||||
Assert.Equal("studio", edited.Studio.Slug);
|
||||
Assert.Equal("studio", show.Studio.Slug);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -106,7 +106,7 @@ namespace Kyoo.Tests.Database
|
||||
Show show = await database.Shows.FirstAsync();
|
||||
|
||||
Assert.Equal(value.Slug, show.Slug);
|
||||
Assert.Equal(value.Aliases, edited.Aliases);
|
||||
Assert.Equal(value.Aliases, show.Aliases);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -135,12 +135,13 @@ namespace Kyoo.Tests.Database
|
||||
await using DatabaseContext database = Repositories.Context.New();
|
||||
Show show = await database.Shows
|
||||
.Include(x => x.People)
|
||||
.ThenInclude(x => x.People)
|
||||
.FirstAsync();
|
||||
|
||||
Assert.Equal(value.Slug, show.Slug);
|
||||
Assert.Equal(
|
||||
value.People.Select(x => new{x.Role, x.Slug, x.People.Name}),
|
||||
edited.People.Select(x => new{x.Role, x.Slug, x.People.Name}));
|
||||
show.People.Select(x => new{x.Role, x.Slug, x.People.Name}));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -235,9 +236,11 @@ namespace Kyoo.Tests.Database
|
||||
expected.Studio = new Studio("studio");
|
||||
Show created = await _repository.Create(expected);
|
||||
KAssert.DeepEqual(expected, created);
|
||||
|
||||
await using DatabaseContext context = Repositories.Context.New();
|
||||
Show retrieved = await context.Shows
|
||||
.Include(x => x.ExternalIDs)
|
||||
.ThenInclude(x => x.Provider)
|
||||
.Include(x => x.Genres)
|
||||
.Include(x => x.People)
|
||||
.Include(x => x.Studio)
|
||||
@ -264,6 +267,7 @@ namespace Kyoo.Tests.Database
|
||||
await using DatabaseContext context = Repositories.Context.New();
|
||||
Show retrieved = await context.Shows
|
||||
.Include(x => x.ExternalIDs)
|
||||
.ThenInclude(x => x.Provider)
|
||||
.FirstAsync(x => x.ID == created.ID);
|
||||
KAssert.DeepEqual(expected, retrieved);
|
||||
Assert.Equal(1, retrieved.ExternalIDs.Count);
|
||||
|
@ -17,6 +17,27 @@ namespace Kyoo.Tests
|
||||
Name = "New Library",
|
||||
Paths = new [] {"/a/random/path"}
|
||||
}
|
||||
},
|
||||
{
|
||||
typeof(Show),
|
||||
() => new Show
|
||||
{
|
||||
ID = 2,
|
||||
Slug = "new-show",
|
||||
Title = "New Show",
|
||||
Overview = "overview",
|
||||
Status = Status.Planned,
|
||||
StartAir = new DateTime(2011, 1, 1),
|
||||
EndAir = new DateTime(2011, 1, 1),
|
||||
Images = new Dictionary<int, string>
|
||||
{
|
||||
[Thumbnails.Poster] = "Poster",
|
||||
[Thumbnails.Logo] = "Logo",
|
||||
[Thumbnails.Thumbnail] = "Thumbnail"
|
||||
},
|
||||
IsMovie = false,
|
||||
Studio = null
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -64,6 +85,7 @@ namespace Kyoo.Tests
|
||||
"In time, however, these childhood friends drifted apart, and when they became high " +
|
||||
"school students, they had long ceased to think of each other as friends.",
|
||||
Status = Status.Finished,
|
||||
StudioID = 1,
|
||||
StartAir = new DateTime(2011, 1, 1),
|
||||
EndAir = new DateTime(2011, 1, 1),
|
||||
Images = new Dictionary<int, string>
|
||||
@ -182,8 +204,7 @@ namespace Kyoo.Tests
|
||||
[Thumbnails.Poster] = "Poster",
|
||||
[Thumbnails.Logo] = "path/tvdb.svg",
|
||||
[Thumbnails.Thumbnail] = "Thumbnail"
|
||||
},
|
||||
LogoExtension = "svg"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -218,6 +239,7 @@ namespace Kyoo.Tests
|
||||
|
||||
Show show = Get<Show>();
|
||||
show.ID = 0;
|
||||
show.StudioID = 0;
|
||||
context.Shows.Add(show);
|
||||
|
||||
Season season = Get<Season>();
|
||||
|
@ -1,8 +1,5 @@
|
||||
using System.Collections;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using FluentAssertions;
|
||||
using JetBrains.Annotations;
|
||||
using Xunit;
|
||||
using Xunit.Sdk;
|
||||
|
||||
namespace Kyoo.Tests
|
||||
@ -21,11 +18,7 @@ namespace Kyoo.Tests
|
||||
[AssertionMethod]
|
||||
public static void DeepEqual<T>(T expected, T value)
|
||||
{
|
||||
PropertyInfo[] properties = typeof(T).GetProperties(BindingFlags.Instance | BindingFlags.Public);
|
||||
foreach (PropertyInfo property in properties)
|
||||
Assert.Equal(property.GetValue(expected), property.GetValue(value));
|
||||
if (!properties.Any())
|
||||
Assert.Equal(expected, value);
|
||||
value.Should().BeEquivalentTo(expected);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -15,6 +15,7 @@
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Divergic.Logging.Xunit" Version="3.6.0" />
|
||||
<PackageReference Include="FluentAssertions" Version="5.10.3" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
|
||||
<PackageReference Include="Moq" Version="4.16.1" />
|
||||
|
@ -33,7 +33,6 @@ namespace Kyoo.TheMovieDb
|
||||
{
|
||||
Slug = "the-moviedb",
|
||||
Name = "TheMovieDB",
|
||||
LogoExtension = "svg",
|
||||
Images = new Dictionary<int, string>
|
||||
{
|
||||
[Thumbnails.Logo] = "https://www.themoviedb.org/assets/2/v4/logos/v2/" +
|
||||
|
@ -32,7 +32,6 @@ namespace Kyoo.TheTvdb
|
||||
{
|
||||
Slug = "the-tvdb",
|
||||
Name = "TheTVDB",
|
||||
LogoExtension = "png",
|
||||
Images = new Dictionary<int, string>
|
||||
{
|
||||
[Thumbnails.Logo] = "https://www.thetvdb.com/images/logo.png"
|
||||
|
@ -53,6 +53,7 @@ namespace Kyoo.Controllers
|
||||
{
|
||||
await base.Create(obj);
|
||||
_database.Entry(obj).State = EntityState.Added;
|
||||
obj.ExternalIDs.ForEach(x => _database.MetadataIds<Collection>().Attach(x));
|
||||
await _database.SaveChangesAsync($"Trying to insert a duplicated collection (slug {obj.Slug} already exists).");
|
||||
return obj;
|
||||
}
|
||||
|
@ -111,6 +111,7 @@ namespace Kyoo.Controllers
|
||||
{
|
||||
await base.Create(obj);
|
||||
_database.Entry(obj).State = EntityState.Added;
|
||||
obj.ExternalIDs.ForEach(x => _database.MetadataIds<Episode>().Attach(x));
|
||||
await _database.SaveChangesAsync($"Trying to insert a duplicated episode (slug {obj.Slug} already exists).");
|
||||
return await ValidateTracks(obj);
|
||||
}
|
||||
|
@ -54,7 +54,8 @@ namespace Kyoo.Controllers
|
||||
{
|
||||
await base.Create(obj);
|
||||
_database.Entry(obj).State = EntityState.Added;
|
||||
obj.ProviderLinks.ForEach(x => _database.Entry(x).State = EntityState.Added);
|
||||
if (obj.Providers != null)
|
||||
_database.AttachRange(obj.Providers);
|
||||
await _database.SaveChangesAsync($"Trying to insert a duplicated library (slug {obj.Slug} already exists).");
|
||||
return obj;
|
||||
}
|
||||
@ -63,15 +64,12 @@ namespace Kyoo.Controllers
|
||||
protected override async Task Validate(Library resource)
|
||||
{
|
||||
await base.Validate(resource);
|
||||
resource.ProviderLinks = resource.Providers?
|
||||
.Select(x => Link.Create(resource, x))
|
||||
.ToList();
|
||||
await resource.ProviderLinks.ForEachAsync(async id =>
|
||||
if (resource.Providers != null)
|
||||
{
|
||||
id.Second = await _providers.CreateIfNotExists(id.Second);
|
||||
id.SecondID = id.Second.ID;
|
||||
_database.Entry(id.Second).State = EntityState.Detached;
|
||||
});
|
||||
resource.Providers = await resource.Providers
|
||||
.SelectAsync(x => _providers.CreateIfNotExists(x))
|
||||
.ToListAsync();
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
@ -62,6 +62,7 @@ namespace Kyoo.Controllers
|
||||
{
|
||||
await base.Create(obj);
|
||||
_database.Entry(obj).State = EntityState.Added;
|
||||
obj.ExternalIDs.ForEach(x => _database.MetadataIds<People>().Attach(x));
|
||||
await _database.SaveChangesAsync($"Trying to insert a duplicated people (slug {obj.Slug} already exists).");
|
||||
return obj;
|
||||
}
|
||||
|
@ -87,6 +87,7 @@ namespace Kyoo.Controllers
|
||||
{
|
||||
await base.Create(obj);
|
||||
_database.Entry(obj).State = EntityState.Added;
|
||||
obj.ExternalIDs.ForEach(x => _database.MetadataIds<Season>().Attach(x));
|
||||
await _database.SaveChangesAsync($"Trying to insert a duplicated season (slug {obj.Slug} already exists).");
|
||||
return obj;
|
||||
}
|
||||
|
@ -76,8 +76,10 @@ namespace Kyoo.Controllers
|
||||
{
|
||||
await base.Create(obj);
|
||||
_database.Entry(obj).State = EntityState.Added;
|
||||
obj.GenreLinks.ForEach(x => _database.Entry(x).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).");
|
||||
return obj;
|
||||
}
|
||||
@ -89,15 +91,13 @@ namespace Kyoo.Controllers
|
||||
if (resource.Studio != null)
|
||||
resource.Studio = await _studios.CreateIfNotExists(resource.Studio);
|
||||
|
||||
resource.GenreLinks = resource.Genres?
|
||||
.Select(x => Link.Create(resource, x))
|
||||
.ToList();
|
||||
await resource.GenreLinks.ForEachAsync(async id =>
|
||||
if (resource.Genres != null)
|
||||
{
|
||||
id.Second = await _genres.CreateIfNotExists(id.Second);
|
||||
id.SecondID = id.Second.ID;
|
||||
_database.Entry(id.Second).State = EntityState.Detached;
|
||||
});
|
||||
resource.Genres = await resource.Genres
|
||||
.SelectAsync(x => _genres.CreateIfNotExists(x))
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
await resource.ExternalIDs.ForEachAsync(async id =>
|
||||
{
|
||||
id.Provider = await _providers.CreateIfNotExists(id.Provider);
|
||||
|
@ -54,6 +54,7 @@ namespace Kyoo.Controllers
|
||||
{
|
||||
await base.Create(obj);
|
||||
_database.Entry(obj).State = EntityState.Added;
|
||||
obj.ExternalIDs.ForEach(x => _database.MetadataIds<Studio>().Attach(x));
|
||||
await _database.SaveChangesAsync($"Trying to insert a duplicated studio (slug {obj.Slug} already exists).");
|
||||
return obj;
|
||||
}
|
||||
|
@ -110,6 +110,7 @@ namespace Kyoo.Controllers
|
||||
{
|
||||
if (item == null)
|
||||
throw new ArgumentNullException(nameof(item));
|
||||
// TODO handle extensions
|
||||
string imageName = imageID switch
|
||||
{
|
||||
Thumbnails.Poster => "poster.jpg",
|
||||
@ -142,9 +143,7 @@ namespace Kyoo.Controllers
|
||||
return _files.Combine(_options.CurrentValue.PeoplePath, $"{actor.Slug}-{imageName}");
|
||||
|
||||
case Provider provider:
|
||||
return _files.Combine(
|
||||
_options.CurrentValue.ProviderPath,
|
||||
$"{provider.Slug}-{imageName[..^4]}{provider.LogoExtension}");
|
||||
return _files.Combine(_options.CurrentValue.ProviderPath, $"{provider.Slug}-{imageName}");
|
||||
|
||||
default:
|
||||
throw new NotSupportedException($"The type {typeof(T).Name} is not supported.");
|
||||
|
@ -40,7 +40,7 @@
|
||||
<PackageReference Include="Autofac.Extras.AttributeMetadata" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.7" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.8" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="3.1.17" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="5.0.0-preview.8.20414.8" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="5.0.8" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
</ItemGroup>
|
||||
|
Loading…
x
Reference in New Issue
Block a user