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