diff --git a/back/src/Kyoo.Postgresql/MigrationHelper.cs b/back/src/Kyoo.Postgresql/MigrationHelper.cs deleted file mode 100644 index f52dd2bd..00000000 --- a/back/src/Kyoo.Postgresql/MigrationHelper.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Kyoo - A portable and vast media library solution. -// Copyright (c) Kyoo. -// -// See AUTHORS.md and LICENSE file in the project root for full license information. -// -// Kyoo is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// Kyoo is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Kyoo. If not, see . - -using Microsoft.EntityFrameworkCore.Migrations; - -namespace Kyoo.Postgresql -{ - public static class MigrationHelper - { - public static void CreateLibraryItemsView(MigrationBuilder migrationBuilder) - { - // language=PostgreSQL - migrationBuilder.Sql(@" - CREATE VIEW library_items AS - SELECT s.id, s.slug, s.title, s.overview, s.status, s.start_air, s.end_air, s.images, CASE - WHEN s.is_movie THEN 'movie'::item_type - ELSE 'show'::item_type - END AS type - FROM shows AS s - WHERE NOT (EXISTS ( - SELECT 1 - FROM link_collection_show AS l - INNER JOIN collections AS c ON l.collection_id = c.id - WHERE s.id = l.show_id)) - UNION ALL - SELECT -c0.id, c0.slug, c0.name AS title, c0.overview, 'unknown'::status AS status, - NULL AS start_air, NULL AS end_air, c0.images, 'collection'::item_type AS type - FROM collections AS c0"); - } - - public static void DropLibraryItemsView(MigrationBuilder migrationBuilder) - { - // language=PostgreSQL - migrationBuilder.Sql(@"DROP VIEW library_items"); - } - } -} diff --git a/back/src/Kyoo.Postgresql/Migrations/20230806025737_initial.Designer.cs b/back/src/Kyoo.Postgresql/Migrations/20230806025737_initial.Designer.cs deleted file mode 100644 index 78e47d38..00000000 --- a/back/src/Kyoo.Postgresql/Migrations/20230806025737_initial.Designer.cs +++ /dev/null @@ -1,1502 +0,0 @@ -// -using System; -using Kyoo.Abstractions.Models; -using Kyoo.Postgresql; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace Kyoo.Postgresql.Migrations -{ - [DbContext(typeof(PostgresContext))] - [Migration("20230806025737_initial")] - partial class Initial - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.9") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "genre", new[] { "action", "adventure", "animation", "comedy", "crime", "documentary", "drama", "family", "fantasy", "history", "horror", "music", "mystery", "romance", "science_fiction", "thriller", "war", "western" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_kind", new[] { "show", "movie", "collection" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "status", new[] { "unknown", "finished", "airing", "planned" }); - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_collections"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_collections_slug"); - - b.ToTable("collections", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AbsoluteNumber") - .HasColumnType("integer") - .HasColumnName("absolute_number"); - - b.Property("EpisodeNumber") - .HasColumnType("integer") - .HasColumnName("episode_number"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("ReleaseDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("release_date"); - - b.Property("SeasonID") - .HasColumnType("integer") - .HasColumnName("season_id"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("ShowID") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_episodes"); - - b.HasIndex("SeasonID") - .HasDatabaseName("ix_episodes_season_id"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_episodes_slug"); - - b.HasIndex("ShowID", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber") - .IsUnique() - .HasDatabaseName("ix_episodes_show_id_season_number_episode_number_absolute_numb"); - - b.ToTable("episodes", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.LibraryItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EndAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_air"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_air"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_library_items"); - - b.ToTable("library_items", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("StudioID") - .HasColumnType("integer") - .HasColumnName("studio_id"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_movies"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_movies_slug"); - - b.HasIndex("StudioID") - .HasDatabaseName("ix_movies_studio_id"); - - b.ToTable("movies", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_people"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_people_slug"); - - b.ToTable("people", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("MovieID") - .HasColumnType("integer") - .HasColumnName("movie_id"); - - b.Property("PeopleID") - .HasColumnType("integer") - .HasColumnName("people_id"); - - b.Property("Role") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role"); - - b.Property("ShowID") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Type") - .IsRequired() - .HasColumnType("text") - .HasColumnName("type"); - - b.HasKey("Id") - .HasName("pk_people_roles"); - - b.HasIndex("MovieID") - .HasDatabaseName("ix_people_roles_movie_id"); - - b.HasIndex("PeopleID") - .HasDatabaseName("ix_people_roles_people_id"); - - b.HasIndex("ShowID") - .HasDatabaseName("ix_people_roles_show_id"); - - b.ToTable("people_roles", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("EndDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_date"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("ShowID") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("pk_seasons"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_seasons_slug"); - - b.HasIndex("ShowID", "SeasonNumber") - .IsUnique() - .HasDatabaseName("ix_seasons_show_id_season_number"); - - b.ToTable("seasons", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EndAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_air"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_air"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("StudioID") - .HasColumnType("integer") - .HasColumnName("studio_id"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_shows"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_shows_slug"); - - b.HasIndex("StudioID") - .HasDatabaseName("ix_shows_studio_id"); - - b.ToTable("shows", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_studios"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_studios_slug"); - - b.ToTable("studios", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Email") - .IsRequired() - .HasColumnType("text") - .HasColumnName("email"); - - b.Property("Password") - .IsRequired() - .HasColumnType("text") - .HasColumnName("password"); - - b.Property("Permissions") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("permissions"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Username") - .IsRequired() - .HasColumnType("text") - .HasColumnName("username"); - - b.HasKey("Id") - .HasName("pk_users"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_users_slug"); - - b.ToTable("users", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b => - { - b.Property("UserID") - .HasColumnType("integer") - .HasColumnName("user_id"); - - b.Property("EpisodeID") - .HasColumnType("integer") - .HasColumnName("episode_id"); - - b.Property("WatchedPercentage") - .HasColumnType("integer") - .HasColumnName("watched_percentage"); - - b.HasKey("UserID", "EpisodeID") - .HasName("pk_watched_episode"); - - b.HasIndex("EpisodeID") - .HasDatabaseName("ix_watched_episode_episode_id"); - - b.ToTable("watched_episode", (string)null); - }); - - modelBuilder.Entity("ShowUser", b => - { - b.Property("UsersId") - .HasColumnType("integer") - .HasColumnName("users_id"); - - b.Property("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", (string)null); - }); - - modelBuilder.Entity("link_collection_movie", b => - { - b.Property("collection_id") - .HasColumnType("integer") - .HasColumnName("collection_id"); - - b.Property("movie_id") - .HasColumnType("integer") - .HasColumnName("movie_id"); - - b.HasKey("collection_id", "movie_id") - .HasName("pk_link_collection_movie"); - - b.HasIndex("movie_id") - .HasDatabaseName("ix_link_collection_movie_movie_id"); - - b.ToTable("link_collection_movie", (string)null); - }); - - modelBuilder.Entity("link_collection_show", b => - { - b.Property("collection_id") - .HasColumnType("integer") - .HasColumnName("collection_id"); - - b.Property("show_id") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.HasKey("collection_id", "show_id") - .HasName("pk_link_collection_show"); - - b.HasIndex("show_id") - .HasDatabaseName("ix_link_collection_show_show_id"); - - b.ToTable("link_collection_show", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b => - { - b.HasOne("Kyoo.Abstractions.Models.Season", "Season") - .WithMany("Episodes") - .HasForeignKey("SeasonID") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_episodes_seasons_season_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("Episodes") - .HasForeignKey("ShowID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_episodes_shows_show_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Season"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.LibraryItem", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.HasOne("Kyoo.Abstractions.Models.Studio", "Studio") - .WithMany("Movies") - .HasForeignKey("StudioID") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_movies_studios_studio_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Studio"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b => - { - b.HasOne("Kyoo.Abstractions.Models.Movie", "Movie") - .WithMany("People") - .HasForeignKey("MovieID") - .HasConstraintName("fk_people_roles_movies_movie_id"); - - b.HasOne("Kyoo.Abstractions.Models.People", "People") - .WithMany("Roles") - .HasForeignKey("PeopleID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_people_roles_people_people_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("People") - .HasForeignKey("ShowID") - .HasConstraintName("fk_people_roles_shows_show_id"); - - b.Navigation("Movie"); - - b.Navigation("People"); - - b.Navigation("Show"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("Seasons") - .HasForeignKey("ShowID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_seasons_shows_show_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.HasOne("Kyoo.Abstractions.Models.Studio", "Studio") - .WithMany("Shows") - .HasForeignKey("StudioID") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_shows_studios_studio_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Studio"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("UserId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("UserId"); - - b1.ToTable("users"); - - b1.WithOwner() - .HasForeignKey("UserId") - .HasConstraintName("fk_users_users_id"); - }); - - b.Navigation("Logo"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b => - { - b.HasOne("Kyoo.Abstractions.Models.Episode", "Episode") - .WithMany() - .HasForeignKey("EpisodeID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_watched_episode_episodes_episode_id"); - - b.HasOne("Kyoo.Abstractions.Models.User", null) - .WithMany("CurrentlyWatching") - .HasForeignKey("UserID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_watched_episode_users_user_id"); - - b.Navigation("Episode"); - }); - - modelBuilder.Entity("ShowUser", b => - { - b.HasOne("Kyoo.Abstractions.Models.User", null) - .WithMany() - .HasForeignKey("UsersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_user_show_users_users_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", null) - .WithMany() - .HasForeignKey("WatchedId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_user_show_shows_watched_id"); - }); - - modelBuilder.Entity("link_collection_movie", b => - { - b.HasOne("Kyoo.Abstractions.Models.Collection", null) - .WithMany() - .HasForeignKey("collection_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_movie_collections_collection_id"); - - b.HasOne("Kyoo.Abstractions.Models.Movie", null) - .WithMany() - .HasForeignKey("movie_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_movie_movies_movie_id"); - }); - - modelBuilder.Entity("link_collection_show", b => - { - b.HasOne("Kyoo.Abstractions.Models.Collection", null) - .WithMany() - .HasForeignKey("collection_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_show_collections_collection_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", null) - .WithMany() - .HasForeignKey("show_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_show_shows_show_id"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.Navigation("People"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.Navigation("Roles"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.Navigation("Episodes"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.Navigation("Episodes"); - - b.Navigation("People"); - - b.Navigation("Seasons"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b => - { - b.Navigation("Movies"); - - b.Navigation("Shows"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.Navigation("CurrentlyWatching"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/back/src/Kyoo.Postgresql/Migrations/20230806025737_initial.cs b/back/src/Kyoo.Postgresql/Migrations/20230806025737_initial.cs deleted file mode 100644 index 2cf9c227..00000000 --- a/back/src/Kyoo.Postgresql/Migrations/20230806025737_initial.cs +++ /dev/null @@ -1,547 +0,0 @@ -// Kyoo - A portable and vast media library solution. -// Copyright (c) Kyoo. -// -// See AUTHORS.md and LICENSE file in the project root for full license information. -// -// Kyoo is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// Kyoo is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Kyoo. If not, see . - -using System; -using Kyoo.Abstractions.Models; -using Microsoft.EntityFrameworkCore.Migrations; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace Kyoo.Postgresql.Migrations -{ - /// - public partial class Initial : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterDatabase() - .Annotation("Npgsql:Enum:genre", "action,adventure,animation,comedy,crime,documentary,drama,family,fantasy,history,horror,music,mystery,romance,science_fiction,thriller,war,western") - .Annotation("Npgsql:Enum:item_kind", "show,movie,collection") - .Annotation("Npgsql:Enum:status", "unknown,finished,airing,planned"); - - migrationBuilder.CreateTable( - name: "collections", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - slug = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - name = table.Column(type: "text", nullable: false), - overview = table.Column(type: "text", nullable: true), - poster_source = table.Column(type: "text", nullable: true), - poster_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - thumbnail_source = table.Column(type: "text", nullable: true), - thumbnail_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - logo_source = table.Column(type: "text", nullable: true), - logo_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - external_id = table.Column(type: "json", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_collections", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "people", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - slug = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - name = table.Column(type: "text", nullable: false), - poster_source = table.Column(type: "text", nullable: true), - poster_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - thumbnail_source = table.Column(type: "text", nullable: true), - thumbnail_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - logo_source = table.Column(type: "text", nullable: true), - logo_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - external_id = table.Column(type: "json", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_people", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "studios", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - slug = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - name = table.Column(type: "text", nullable: false), - external_id = table.Column(type: "json", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_studios", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "users", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - slug = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - username = table.Column(type: "text", nullable: false), - email = table.Column(type: "text", nullable: false), - password = table.Column(type: "text", nullable: false), - permissions = table.Column(type: "text[]", nullable: false), - logo_source = table.Column(type: "text", nullable: true), - logo_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_users", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "movies", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - slug = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - name = table.Column(type: "text", nullable: false), - tagline = table.Column(type: "text", nullable: true), - aliases = table.Column(type: "text[]", nullable: false), - path = table.Column(type: "text", nullable: false), - overview = table.Column(type: "text", nullable: true), - tags = table.Column(type: "text[]", nullable: false), - genres = table.Column(type: "genre[]", nullable: false), - status = table.Column(type: "status", nullable: false), - air_date = table.Column(type: "timestamp with time zone", nullable: true), - poster_source = table.Column(type: "text", nullable: true), - poster_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - thumbnail_source = table.Column(type: "text", nullable: true), - thumbnail_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - logo_source = table.Column(type: "text", nullable: true), - logo_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - trailer = table.Column(type: "text", nullable: true), - external_id = table.Column(type: "json", nullable: false), - studio_id = table.Column(type: "integer", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_movies", x => x.id); - table.ForeignKey( - name: "fk_movies_studios_studio_id", - column: x => x.studio_id, - principalTable: "studios", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - }); - - migrationBuilder.CreateTable( - name: "shows", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - slug = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - name = table.Column(type: "text", nullable: false), - tagline = table.Column(type: "text", nullable: true), - aliases = table.Column(type: "text[]", nullable: false), - overview = table.Column(type: "text", nullable: true), - tags = table.Column(type: "text[]", nullable: false), - genres = table.Column(type: "genre[]", nullable: false), - status = table.Column(type: "status", nullable: false), - start_air = table.Column(type: "timestamp with time zone", nullable: true), - end_air = table.Column(type: "timestamp with time zone", nullable: true), - poster_source = table.Column(type: "text", nullable: true), - poster_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - thumbnail_source = table.Column(type: "text", nullable: true), - thumbnail_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - logo_source = table.Column(type: "text", nullable: true), - logo_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - trailer = table.Column(type: "text", nullable: true), - external_id = table.Column(type: "json", nullable: false), - studio_id = table.Column(type: "integer", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_shows", x => x.id); - table.ForeignKey( - name: "fk_shows_studios_studio_id", - column: x => x.studio_id, - principalTable: "studios", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - }); - - migrationBuilder.CreateTable( - name: "link_collection_movie", - columns: table => new - { - collection_id = table.Column(type: "integer", nullable: false), - movie_id = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_link_collection_movie", x => new { x.collection_id, x.movie_id }); - table.ForeignKey( - name: "fk_link_collection_movie_collections_collection_id", - column: x => x.collection_id, - principalTable: "collections", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_link_collection_movie_movies_movie_id", - column: x => x.movie_id, - principalTable: "movies", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "link_collection_show", - columns: table => new - { - collection_id = table.Column(type: "integer", nullable: false), - show_id = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_link_collection_show", x => new { x.collection_id, x.show_id }); - table.ForeignKey( - name: "fk_link_collection_show_collections_collection_id", - column: x => x.collection_id, - principalTable: "collections", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_link_collection_show_shows_show_id", - column: x => x.show_id, - principalTable: "shows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "link_user_show", - columns: table => new - { - users_id = table.Column(type: "integer", nullable: false), - watched_id = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_link_user_show", x => new { x.users_id, x.watched_id }); - table.ForeignKey( - name: "fk_link_user_show_shows_watched_id", - column: x => x.watched_id, - principalTable: "shows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_link_user_show_users_users_id", - column: x => x.users_id, - principalTable: "users", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "people_roles", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - people_id = table.Column(type: "integer", nullable: false), - show_id = table.Column(type: "integer", nullable: true), - movie_id = table.Column(type: "integer", nullable: true), - type = table.Column(type: "text", nullable: false), - role = table.Column(type: "text", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_people_roles", x => x.id); - table.ForeignKey( - name: "fk_people_roles_movies_movie_id", - column: x => x.movie_id, - principalTable: "movies", - principalColumn: "id"); - table.ForeignKey( - name: "fk_people_roles_people_people_id", - column: x => x.people_id, - principalTable: "people", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_people_roles_shows_show_id", - column: x => x.show_id, - principalTable: "shows", - principalColumn: "id"); - }); - - migrationBuilder.CreateTable( - name: "seasons", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - slug = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - show_id = table.Column(type: "integer", nullable: false), - season_number = table.Column(type: "integer", nullable: false), - name = table.Column(type: "text", nullable: true), - overview = table.Column(type: "text", nullable: true), - start_date = table.Column(type: "timestamp with time zone", nullable: true), - end_date = table.Column(type: "timestamp with time zone", nullable: true), - poster_source = table.Column(type: "text", nullable: true), - poster_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - thumbnail_source = table.Column(type: "text", nullable: true), - thumbnail_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - logo_source = table.Column(type: "text", nullable: true), - logo_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - external_id = table.Column(type: "json", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_seasons", x => x.id); - table.ForeignKey( - name: "fk_seasons_shows_show_id", - column: x => x.show_id, - principalTable: "shows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "episodes", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - slug = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - show_id = table.Column(type: "integer", nullable: false), - season_id = table.Column(type: "integer", nullable: true), - season_number = table.Column(type: "integer", nullable: true), - episode_number = table.Column(type: "integer", nullable: true), - absolute_number = table.Column(type: "integer", nullable: true), - path = table.Column(type: "text", nullable: false), - name = table.Column(type: "text", nullable: true), - overview = table.Column(type: "text", nullable: true), - release_date = table.Column(type: "timestamp with time zone", nullable: true), - poster_source = table.Column(type: "text", nullable: true), - poster_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - thumbnail_source = table.Column(type: "text", nullable: true), - thumbnail_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - logo_source = table.Column(type: "text", nullable: true), - logo_blurhash = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), - external_id = table.Column(type: "json", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_episodes", x => x.id); - table.ForeignKey( - name: "fk_episodes_seasons_season_id", - column: x => x.season_id, - principalTable: "seasons", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_episodes_shows_show_id", - column: x => x.show_id, - principalTable: "shows", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "watched_episode", - columns: table => new - { - user_id = table.Column(type: "integer", nullable: false), - episode_id = table.Column(type: "integer", nullable: false), - watched_percentage = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_watched_episode", x => new { x.user_id, x.episode_id }); - table.ForeignKey( - name: "fk_watched_episode_episodes_episode_id", - column: x => x.episode_id, - principalTable: "episodes", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_watched_episode_users_user_id", - column: x => x.user_id, - principalTable: "users", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "ix_collections_slug", - table: "collections", - column: "slug", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_episodes_season_id", - table: "episodes", - column: "season_id"); - - migrationBuilder.CreateIndex( - name: "ix_episodes_show_id_season_number_episode_number_absolute_numb", - table: "episodes", - columns: new[] { "show_id", "season_number", "episode_number", "absolute_number" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_episodes_slug", - table: "episodes", - column: "slug", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_link_collection_movie_movie_id", - table: "link_collection_movie", - column: "movie_id"); - - migrationBuilder.CreateIndex( - name: "ix_link_collection_show_show_id", - table: "link_collection_show", - column: "show_id"); - - migrationBuilder.CreateIndex( - name: "ix_link_user_show_watched_id", - table: "link_user_show", - column: "watched_id"); - - migrationBuilder.CreateIndex( - name: "ix_movies_slug", - table: "movies", - column: "slug", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_movies_studio_id", - table: "movies", - column: "studio_id"); - - migrationBuilder.CreateIndex( - name: "ix_people_slug", - table: "people", - column: "slug", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_people_roles_movie_id", - table: "people_roles", - column: "movie_id"); - - migrationBuilder.CreateIndex( - name: "ix_people_roles_people_id", - table: "people_roles", - column: "people_id"); - - migrationBuilder.CreateIndex( - name: "ix_people_roles_show_id", - table: "people_roles", - column: "show_id"); - - migrationBuilder.CreateIndex( - name: "ix_seasons_show_id_season_number", - table: "seasons", - columns: new[] { "show_id", "season_number" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_seasons_slug", - table: "seasons", - column: "slug", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_shows_slug", - table: "shows", - column: "slug", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_shows_studio_id", - table: "shows", - column: "studio_id"); - - migrationBuilder.CreateIndex( - name: "ix_studios_slug", - table: "studios", - column: "slug", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_users_slug", - table: "users", - column: "slug", - unique: true); - - migrationBuilder.CreateIndex( - name: "ix_watched_episode_episode_id", - table: "watched_episode", - column: "episode_id"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "link_collection_movie"); - - migrationBuilder.DropTable( - name: "link_collection_show"); - - migrationBuilder.DropTable( - name: "link_user_show"); - - migrationBuilder.DropTable( - name: "people_roles"); - - migrationBuilder.DropTable( - name: "watched_episode"); - - migrationBuilder.DropTable( - name: "collections"); - - migrationBuilder.DropTable( - name: "movies"); - - migrationBuilder.DropTable( - name: "people"); - - migrationBuilder.DropTable( - name: "episodes"); - - migrationBuilder.DropTable( - name: "users"); - - migrationBuilder.DropTable( - name: "seasons"); - - migrationBuilder.DropTable( - name: "shows"); - - migrationBuilder.DropTable( - name: "studios"); - } - } -} diff --git a/back/src/Kyoo.Postgresql/Migrations/20230806025743_items.Designer.cs b/back/src/Kyoo.Postgresql/Migrations/20230806025743_items.Designer.cs deleted file mode 100644 index 8fff4c47..00000000 --- a/back/src/Kyoo.Postgresql/Migrations/20230806025743_items.Designer.cs +++ /dev/null @@ -1,1502 +0,0 @@ -// -using System; -using Kyoo.Abstractions.Models; -using Kyoo.Postgresql; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace Kyoo.Postgresql.Migrations -{ - [DbContext(typeof(PostgresContext))] - [Migration("20230806025743_items")] - partial class Items - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.9") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "genre", new[] { "action", "adventure", "animation", "comedy", "crime", "documentary", "drama", "family", "fantasy", "history", "horror", "music", "mystery", "romance", "science_fiction", "thriller", "war", "western" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_kind", new[] { "show", "movie", "collection" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "status", new[] { "unknown", "finished", "airing", "planned" }); - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_collections"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_collections_slug"); - - b.ToTable("collections", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AbsoluteNumber") - .HasColumnType("integer") - .HasColumnName("absolute_number"); - - b.Property("EpisodeNumber") - .HasColumnType("integer") - .HasColumnName("episode_number"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("ReleaseDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("release_date"); - - b.Property("SeasonID") - .HasColumnType("integer") - .HasColumnName("season_id"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("ShowID") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_episodes"); - - b.HasIndex("SeasonID") - .HasDatabaseName("ix_episodes_season_id"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_episodes_slug"); - - b.HasIndex("ShowID", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber") - .IsUnique() - .HasDatabaseName("ix_episodes_show_id_season_number_episode_number_absolute_numb"); - - b.ToTable("episodes", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.LibraryItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EndAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_air"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_air"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_library_items"); - - b.ToTable("library_items", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("StudioID") - .HasColumnType("integer") - .HasColumnName("studio_id"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_movies"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_movies_slug"); - - b.HasIndex("StudioID") - .HasDatabaseName("ix_movies_studio_id"); - - b.ToTable("movies", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_people"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_people_slug"); - - b.ToTable("people", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("MovieID") - .HasColumnType("integer") - .HasColumnName("movie_id"); - - b.Property("PeopleID") - .HasColumnType("integer") - .HasColumnName("people_id"); - - b.Property("Role") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role"); - - b.Property("ShowID") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Type") - .IsRequired() - .HasColumnType("text") - .HasColumnName("type"); - - b.HasKey("Id") - .HasName("pk_people_roles"); - - b.HasIndex("MovieID") - .HasDatabaseName("ix_people_roles_movie_id"); - - b.HasIndex("PeopleID") - .HasDatabaseName("ix_people_roles_people_id"); - - b.HasIndex("ShowID") - .HasDatabaseName("ix_people_roles_show_id"); - - b.ToTable("people_roles", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("EndDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_date"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("ShowID") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("pk_seasons"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_seasons_slug"); - - b.HasIndex("ShowID", "SeasonNumber") - .IsUnique() - .HasDatabaseName("ix_seasons_show_id_season_number"); - - b.ToTable("seasons", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EndAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_air"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_air"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("StudioID") - .HasColumnType("integer") - .HasColumnName("studio_id"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_shows"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_shows_slug"); - - b.HasIndex("StudioID") - .HasDatabaseName("ix_shows_studio_id"); - - b.ToTable("shows", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_studios"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_studios_slug"); - - b.ToTable("studios", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Email") - .IsRequired() - .HasColumnType("text") - .HasColumnName("email"); - - b.Property("Password") - .IsRequired() - .HasColumnType("text") - .HasColumnName("password"); - - b.Property("Permissions") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("permissions"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Username") - .IsRequired() - .HasColumnType("text") - .HasColumnName("username"); - - b.HasKey("Id") - .HasName("pk_users"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_users_slug"); - - b.ToTable("users", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b => - { - b.Property("UserID") - .HasColumnType("integer") - .HasColumnName("user_id"); - - b.Property("EpisodeID") - .HasColumnType("integer") - .HasColumnName("episode_id"); - - b.Property("WatchedPercentage") - .HasColumnType("integer") - .HasColumnName("watched_percentage"); - - b.HasKey("UserID", "EpisodeID") - .HasName("pk_watched_episode"); - - b.HasIndex("EpisodeID") - .HasDatabaseName("ix_watched_episode_episode_id"); - - b.ToTable("watched_episode", (string)null); - }); - - modelBuilder.Entity("ShowUser", b => - { - b.Property("UsersId") - .HasColumnType("integer") - .HasColumnName("users_id"); - - b.Property("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", (string)null); - }); - - modelBuilder.Entity("link_collection_movie", b => - { - b.Property("collection_id") - .HasColumnType("integer") - .HasColumnName("collection_id"); - - b.Property("movie_id") - .HasColumnType("integer") - .HasColumnName("movie_id"); - - b.HasKey("collection_id", "movie_id") - .HasName("pk_link_collection_movie"); - - b.HasIndex("movie_id") - .HasDatabaseName("ix_link_collection_movie_movie_id"); - - b.ToTable("link_collection_movie", (string)null); - }); - - modelBuilder.Entity("link_collection_show", b => - { - b.Property("collection_id") - .HasColumnType("integer") - .HasColumnName("collection_id"); - - b.Property("show_id") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.HasKey("collection_id", "show_id") - .HasName("pk_link_collection_show"); - - b.HasIndex("show_id") - .HasDatabaseName("ix_link_collection_show_show_id"); - - b.ToTable("link_collection_show", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b => - { - b.HasOne("Kyoo.Abstractions.Models.Season", "Season") - .WithMany("Episodes") - .HasForeignKey("SeasonID") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_episodes_seasons_season_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("Episodes") - .HasForeignKey("ShowID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_episodes_shows_show_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Season"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.LibraryItem", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.HasOne("Kyoo.Abstractions.Models.Studio", "Studio") - .WithMany("Movies") - .HasForeignKey("StudioID") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_movies_studios_studio_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Studio"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b => - { - b.HasOne("Kyoo.Abstractions.Models.Movie", "Movie") - .WithMany("People") - .HasForeignKey("MovieID") - .HasConstraintName("fk_people_roles_movies_movie_id"); - - b.HasOne("Kyoo.Abstractions.Models.People", "People") - .WithMany("Roles") - .HasForeignKey("PeopleID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_people_roles_people_people_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("People") - .HasForeignKey("ShowID") - .HasConstraintName("fk_people_roles_shows_show_id"); - - b.Navigation("Movie"); - - b.Navigation("People"); - - b.Navigation("Show"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("Seasons") - .HasForeignKey("ShowID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_seasons_shows_show_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.HasOne("Kyoo.Abstractions.Models.Studio", "Studio") - .WithMany("Shows") - .HasForeignKey("StudioID") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_shows_studios_studio_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Studio"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("UserId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("UserId"); - - b1.ToTable("users"); - - b1.WithOwner() - .HasForeignKey("UserId") - .HasConstraintName("fk_users_users_id"); - }); - - b.Navigation("Logo"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b => - { - b.HasOne("Kyoo.Abstractions.Models.Episode", "Episode") - .WithMany() - .HasForeignKey("EpisodeID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_watched_episode_episodes_episode_id"); - - b.HasOne("Kyoo.Abstractions.Models.User", null) - .WithMany("CurrentlyWatching") - .HasForeignKey("UserID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_watched_episode_users_user_id"); - - b.Navigation("Episode"); - }); - - modelBuilder.Entity("ShowUser", b => - { - b.HasOne("Kyoo.Abstractions.Models.User", null) - .WithMany() - .HasForeignKey("UsersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_user_show_users_users_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", null) - .WithMany() - .HasForeignKey("WatchedId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_user_show_shows_watched_id"); - }); - - modelBuilder.Entity("link_collection_movie", b => - { - b.HasOne("Kyoo.Abstractions.Models.Collection", null) - .WithMany() - .HasForeignKey("collection_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_movie_collections_collection_id"); - - b.HasOne("Kyoo.Abstractions.Models.Movie", null) - .WithMany() - .HasForeignKey("movie_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_movie_movies_movie_id"); - }); - - modelBuilder.Entity("link_collection_show", b => - { - b.HasOne("Kyoo.Abstractions.Models.Collection", null) - .WithMany() - .HasForeignKey("collection_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_show_collections_collection_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", null) - .WithMany() - .HasForeignKey("show_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_show_shows_show_id"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.Navigation("People"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.Navigation("Roles"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.Navigation("Episodes"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.Navigation("Episodes"); - - b.Navigation("People"); - - b.Navigation("Seasons"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b => - { - b.Navigation("Movies"); - - b.Navigation("Shows"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.Navigation("CurrentlyWatching"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/back/src/Kyoo.Postgresql/Migrations/20230806025743_items.cs b/back/src/Kyoo.Postgresql/Migrations/20230806025743_items.cs deleted file mode 100644 index 9a85bbde..00000000 --- a/back/src/Kyoo.Postgresql/Migrations/20230806025743_items.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Kyoo - A portable and vast media library solution. -// Copyright (c) Kyoo. -// -// See AUTHORS.md and LICENSE file in the project root for full license information. -// -// Kyoo is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// Kyoo is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Kyoo. If not, see . - -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Kyoo.Postgresql.Migrations -{ - /// - public partial class Items : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - // language=PostgreSQL - migrationBuilder.Sql(@" - CREATE VIEW library_items AS - SELECT - s.id, s.slug, s.name, s.tagline, s.aliases, s.overview, s.tags, s.genres, s.status, - s.start_air, s.end_air, s.poster_source, s.poster_blurhash, s.thumbnail_source, s.thumbnail_blurhash, - s.logo_source, s.logo_blurhash, s.trailer, s.external_id, s.start_air AS air_date, NULL as path, - 'show'::item_kind AS kind - FROM shows AS s - UNION ALL - SELECT - -m.id, m.slug, m.name, m.tagline, m.aliases, m.overview, m.tags, m.genres, m.status, - m.air_date as start_air, m.air_date as end_air, m.poster_source, m.poster_blurhash, m.thumbnail_source, - m.thumbnail_blurhash, m.logo_source, m.logo_blurhash, m.trailer, m.external_id, m.air_date, m.path, - 'movie'::item_kind AS kind - FROM movies AS m - UNION ALL - SELECT - c.id + 10000 AS id, c.slug, c.name, NULL as tagline, NULL as alises, c.overview, NULL AS tags, NULL AS genres, 'unknown'::status AS status, - NULL AS start_air, NULL AS end_air, c.poster_source, c.poster_blurhash, c.thumbnail_source, - c.thumbnail_blurhash, c.logo_source, c.logo_blurhash, NULL as trailer, c.external_id, NULL AS air_date, NULL as path, - 'collection'::item_kind AS kind - FROM collections AS c - "); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - // language=PostgreSQL - migrationBuilder.Sql(@"DROP VIEW library_items"); - } - } -} diff --git a/back/src/Kyoo.Postgresql/Migrations/20230907201814_added_date.Designer.cs b/back/src/Kyoo.Postgresql/Migrations/20230907201814_added_date.Designer.cs deleted file mode 100644 index 484baa3b..00000000 --- a/back/src/Kyoo.Postgresql/Migrations/20230907201814_added_date.Designer.cs +++ /dev/null @@ -1,1544 +0,0 @@ -// -using System; -using System.Collections.Generic; -using Kyoo.Abstractions.Models; -using Kyoo.Postgresql; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace Kyoo.Postgresql.Migrations -{ - [DbContext(typeof(PostgresContext))] - [Migration("20230907201814_added_date")] - partial class AddedDate - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.9") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "genre", new[] { "action", "adventure", "animation", "comedy", "crime", "documentary", "drama", "family", "fantasy", "history", "horror", "music", "mystery", "romance", "science_fiction", "thriller", "war", "western" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_kind", new[] { "show", "movie", "collection" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "status", new[] { "unknown", "finished", "airing", "planned" }); - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_collections"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_collections_slug"); - - b.ToTable("collections", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AbsoluteNumber") - .HasColumnType("integer") - .HasColumnName("absolute_number"); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("EpisodeNumber") - .HasColumnType("integer") - .HasColumnName("episode_number"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("ReleaseDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("release_date"); - - b.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("season_id"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_episodes"); - - b.HasIndex("SeasonId") - .HasDatabaseName("ix_episodes_season_id"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_episodes_slug"); - - b.HasIndex("ShowId", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber") - .IsUnique() - .HasDatabaseName("ix_episodes_show_id_season_number_episode_number_absolute_numb"); - - b.ToTable("episodes", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.LibraryItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EndAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_air"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_air"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_library_items"); - - b.ToTable("library_items", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("StudioID") - .HasColumnType("integer") - .HasColumnName("studio_id"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_movies"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_movies_slug"); - - b.HasIndex("StudioID") - .HasDatabaseName("ix_movies_studio_id"); - - b.ToTable("movies", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_people"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_people_slug"); - - b.ToTable("people", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("MovieID") - .HasColumnType("integer") - .HasColumnName("movie_id"); - - b.Property("PeopleID") - .HasColumnType("integer") - .HasColumnName("people_id"); - - b.Property("Role") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role"); - - b.Property("ShowID") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Type") - .IsRequired() - .HasColumnType("text") - .HasColumnName("type"); - - b.HasKey("Id") - .HasName("pk_people_roles"); - - b.HasIndex("MovieID") - .HasDatabaseName("ix_people_roles_movie_id"); - - b.HasIndex("PeopleID") - .HasDatabaseName("ix_people_roles_people_id"); - - b.HasIndex("ShowID") - .HasDatabaseName("ix_people_roles_show_id"); - - b.ToTable("people_roles", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("EndDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_date"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("pk_seasons"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_seasons_slug"); - - b.HasIndex("ShowId", "SeasonNumber") - .IsUnique() - .HasDatabaseName("ix_seasons_show_id_season_number"); - - b.ToTable("seasons", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property>("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EndAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_air"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property>("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_air"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("StudioId") - .HasColumnType("integer") - .HasColumnName("studio_id"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property>("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_shows"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_shows_slug"); - - b.HasIndex("StudioId") - .HasDatabaseName("ix_shows_studio_id"); - - b.ToTable("shows", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_studios"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_studios_slug"); - - b.ToTable("studios", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("Email") - .IsRequired() - .HasColumnType("text") - .HasColumnName("email"); - - b.Property("Password") - .IsRequired() - .HasColumnType("text") - .HasColumnName("password"); - - b.Property("Permissions") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("permissions"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Username") - .IsRequired() - .HasColumnType("text") - .HasColumnName("username"); - - b.HasKey("Id") - .HasName("pk_users"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_users_slug"); - - b.ToTable("users", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b => - { - b.Property("UserID") - .HasColumnType("integer") - .HasColumnName("user_id"); - - b.Property("EpisodeID") - .HasColumnType("integer") - .HasColumnName("episode_id"); - - b.Property("WatchedPercentage") - .HasColumnType("integer") - .HasColumnName("watched_percentage"); - - b.HasKey("UserID", "EpisodeID") - .HasName("pk_watched_episode"); - - b.HasIndex("EpisodeID") - .HasDatabaseName("ix_watched_episode_episode_id"); - - b.ToTable("watched_episode", (string)null); - }); - - modelBuilder.Entity("ShowUser", b => - { - b.Property("UsersId") - .HasColumnType("integer") - .HasColumnName("users_id"); - - b.Property("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", (string)null); - }); - - modelBuilder.Entity("link_collection_movie", b => - { - b.Property("collection_id") - .HasColumnType("integer") - .HasColumnName("collection_id"); - - b.Property("movie_id") - .HasColumnType("integer") - .HasColumnName("movie_id"); - - b.HasKey("collection_id", "movie_id") - .HasName("pk_link_collection_movie"); - - b.HasIndex("movie_id") - .HasDatabaseName("ix_link_collection_movie_movie_id"); - - b.ToTable("link_collection_movie", (string)null); - }); - - modelBuilder.Entity("link_collection_show", b => - { - b.Property("collection_id") - .HasColumnType("integer") - .HasColumnName("collection_id"); - - b.Property("show_id") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.HasKey("collection_id", "show_id") - .HasName("pk_link_collection_show"); - - b.HasIndex("show_id") - .HasDatabaseName("ix_link_collection_show_show_id"); - - b.ToTable("link_collection_show", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b => - { - b.HasOne("Kyoo.Abstractions.Models.Season", "Season") - .WithMany("Episodes") - .HasForeignKey("SeasonId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_episodes_seasons_season_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("Episodes") - .HasForeignKey("ShowId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_episodes_shows_show_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Season"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.LibraryItem", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.HasOne("Kyoo.Abstractions.Models.Studio", "Studio") - .WithMany("Movies") - .HasForeignKey("StudioID") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_movies_studios_studio_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Studio"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b => - { - b.HasOne("Kyoo.Abstractions.Models.Movie", "Movie") - .WithMany("People") - .HasForeignKey("MovieID") - .HasConstraintName("fk_people_roles_movies_movie_id"); - - b.HasOne("Kyoo.Abstractions.Models.People", "People") - .WithMany("Roles") - .HasForeignKey("PeopleID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_people_roles_people_people_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("People") - .HasForeignKey("ShowID") - .HasConstraintName("fk_people_roles_shows_show_id"); - - b.Navigation("Movie"); - - b.Navigation("People"); - - b.Navigation("Show"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("Seasons") - .HasForeignKey("ShowId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_seasons_shows_show_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.HasOne("Kyoo.Abstractions.Models.Studio", "Studio") - .WithMany("Shows") - .HasForeignKey("StudioId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_shows_studios_studio_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Studio"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("UserId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("UserId"); - - b1.ToTable("users"); - - b1.WithOwner() - .HasForeignKey("UserId") - .HasConstraintName("fk_users_users_id"); - }); - - b.Navigation("Logo"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b => - { - b.HasOne("Kyoo.Abstractions.Models.Episode", "Episode") - .WithMany() - .HasForeignKey("EpisodeID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_watched_episode_episodes_episode_id"); - - b.HasOne("Kyoo.Abstractions.Models.User", null) - .WithMany("CurrentlyWatching") - .HasForeignKey("UserID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_watched_episode_users_user_id"); - - b.Navigation("Episode"); - }); - - modelBuilder.Entity("ShowUser", b => - { - b.HasOne("Kyoo.Abstractions.Models.User", null) - .WithMany() - .HasForeignKey("UsersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_user_show_users_users_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", null) - .WithMany() - .HasForeignKey("WatchedId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_user_show_shows_watched_id"); - }); - - modelBuilder.Entity("link_collection_movie", b => - { - b.HasOne("Kyoo.Abstractions.Models.Collection", null) - .WithMany() - .HasForeignKey("collection_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_movie_collections_collection_id"); - - b.HasOne("Kyoo.Abstractions.Models.Movie", null) - .WithMany() - .HasForeignKey("movie_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_movie_movies_movie_id"); - }); - - modelBuilder.Entity("link_collection_show", b => - { - b.HasOne("Kyoo.Abstractions.Models.Collection", null) - .WithMany() - .HasForeignKey("collection_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_show_collections_collection_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", null) - .WithMany() - .HasForeignKey("show_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_show_shows_show_id"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.Navigation("People"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.Navigation("Roles"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.Navigation("Episodes"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.Navigation("Episodes"); - - b.Navigation("People"); - - b.Navigation("Seasons"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b => - { - b.Navigation("Movies"); - - b.Navigation("Shows"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.Navigation("CurrentlyWatching"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/back/src/Kyoo.Postgresql/Migrations/20230907201814_added_date.cs b/back/src/Kyoo.Postgresql/Migrations/20230907201814_added_date.cs deleted file mode 100644 index 2834ef4a..00000000 --- a/back/src/Kyoo.Postgresql/Migrations/20230907201814_added_date.cs +++ /dev/null @@ -1,139 +0,0 @@ -// Kyoo - A portable and vast media library solution. -// Copyright (c) Kyoo. -// -// See AUTHORS.md and LICENSE file in the project root for full license information. -// -// Kyoo is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// Kyoo is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Kyoo. If not, see . - -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Kyoo.Postgresql.Migrations -{ - /// - public partial class AddedDate : Items - { - public static void CreateItemView(MigrationBuilder migrationBuilder) - { - // language=PostgreSQL - migrationBuilder.Sql(@" - CREATE VIEW library_items AS - SELECT - s.id, s.slug, s.name, s.tagline, s.aliases, s.overview, s.tags, s.genres, s.status, - s.start_air, s.end_air, s.poster_source, s.poster_blurhash, s.thumbnail_source, s.thumbnail_blurhash, - s.logo_source, s.logo_blurhash, s.trailer, s.external_id, s.start_air AS air_date, NULL as path, - 'show'::item_kind AS kind, added_date - FROM shows AS s - UNION ALL - SELECT - -m.id, m.slug, m.name, m.tagline, m.aliases, m.overview, m.tags, m.genres, m.status, - m.air_date as start_air, m.air_date as end_air, m.poster_source, m.poster_blurhash, m.thumbnail_source, - m.thumbnail_blurhash, m.logo_source, m.logo_blurhash, m.trailer, m.external_id, m.air_date, m.path, - 'movie'::item_kind AS kind, added_date - FROM movies AS m - UNION ALL - SELECT - c.id + 10000 AS id, c.slug, c.name, NULL as tagline, NULL as alises, c.overview, NULL AS tags, NULL AS genres, 'unknown'::status AS status, - NULL AS start_air, NULL AS end_air, c.poster_source, c.poster_blurhash, c.thumbnail_source, - c.thumbnail_blurhash, c.logo_source, c.logo_blurhash, NULL as trailer, c.external_id, NULL AS air_date, NULL as path, - 'collection'::item_kind AS kind, added_date - FROM collections AS c - "); - } - - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - base.Down(migrationBuilder); - - migrationBuilder.AddColumn( - name: "added_date", - table: "users", - type: "timestamp with time zone", - nullable: false, - defaultValueSql: "now() at time zone 'utc'"); - - migrationBuilder.AddColumn( - name: "added_date", - table: "shows", - type: "timestamp with time zone", - nullable: false, - defaultValueSql: "now() at time zone 'utc'"); - - migrationBuilder.AddColumn( - name: "added_date", - table: "seasons", - type: "timestamp with time zone", - nullable: false, - defaultValueSql: "now() at time zone 'utc'"); - - migrationBuilder.AddColumn( - name: "added_date", - table: "movies", - type: "timestamp with time zone", - nullable: false, - defaultValueSql: "now() at time zone 'utc'"); - - migrationBuilder.AddColumn( - name: "added_date", - table: "episodes", - type: "timestamp with time zone", - nullable: false, - defaultValueSql: "now() at time zone 'utc'"); - - migrationBuilder.AddColumn( - name: "added_date", - table: "collections", - type: "timestamp with time zone", - nullable: false, - defaultValueSql: "now() at time zone 'utc'"); - - CreateItemView(migrationBuilder); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - base.Down(migrationBuilder); - - migrationBuilder.DropColumn( - name: "added_date", - table: "users"); - - migrationBuilder.DropColumn( - name: "added_date", - table: "shows"); - - migrationBuilder.DropColumn( - name: "added_date", - table: "seasons"); - - migrationBuilder.DropColumn( - name: "added_date", - table: "movies"); - - migrationBuilder.DropColumn( - name: "added_date", - table: "episodes"); - - migrationBuilder.DropColumn( - name: "added_date", - table: "collections"); - - base.Up(migrationBuilder); - } - } -} diff --git a/back/src/Kyoo.Postgresql/Migrations/20231029233109_news.Designer.cs b/back/src/Kyoo.Postgresql/Migrations/20231029233109_news.Designer.cs deleted file mode 100644 index 125330b6..00000000 --- a/back/src/Kyoo.Postgresql/Migrations/20231029233109_news.Designer.cs +++ /dev/null @@ -1,1835 +0,0 @@ -// -using System; -using System.Collections.Generic; -using Kyoo.Abstractions.Models; -using Kyoo.Postgresql; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace Kyoo.Postgresql.Migrations -{ - [DbContext(typeof(PostgresContext))] - [Migration("20231029233109_news")] - partial class News - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.12") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "genre", new[] { "action", "adventure", "animation", "comedy", "crime", "documentary", "drama", "family", "fantasy", "history", "horror", "music", "mystery", "romance", "science_fiction", "thriller", "war", "western" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_kind", new[] { "show", "movie", "collection" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "news_kind", new[] { "episode", "movie" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "status", new[] { "unknown", "finished", "airing", "planned" }); - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_collections"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_collections_slug"); - - b.ToTable("collections", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AbsoluteNumber") - .HasColumnType("integer") - .HasColumnName("absolute_number"); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("EpisodeNumber") - .HasColumnType("integer") - .HasColumnName("episode_number"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("ReleaseDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("release_date"); - - b.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("season_id"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_episodes"); - - b.HasIndex("SeasonId") - .HasDatabaseName("ix_episodes_season_id"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_episodes_slug"); - - b.HasIndex("ShowId", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber") - .IsUnique() - .HasDatabaseName("ix_episodes_show_id_season_number_episode_number_absolute_numb"); - - b.ToTable("episodes", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.LibraryItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EndAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_air"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_air"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_library_items"); - - b.ToTable("library_items", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("StudioID") - .HasColumnType("integer") - .HasColumnName("studio_id"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_movies"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_movies_slug"); - - b.HasIndex("StudioID") - .HasDatabaseName("ix_movies_studio_id"); - - b.ToTable("movies", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.News", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AbsoluteNumber") - .HasColumnType("integer") - .HasColumnName("absolute_number"); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EpisodeNumber") - .HasColumnType("integer") - .HasColumnName("episode_number"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_news"); - - b.ToTable("news", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_people"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_people_slug"); - - b.ToTable("people", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("MovieID") - .HasColumnType("integer") - .HasColumnName("movie_id"); - - b.Property("PeopleID") - .HasColumnType("integer") - .HasColumnName("people_id"); - - b.Property("Role") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role"); - - b.Property("ShowID") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Type") - .IsRequired() - .HasColumnType("text") - .HasColumnName("type"); - - b.HasKey("Id") - .HasName("pk_people_roles"); - - b.HasIndex("MovieID") - .HasDatabaseName("ix_people_roles_movie_id"); - - b.HasIndex("PeopleID") - .HasDatabaseName("ix_people_roles_people_id"); - - b.HasIndex("ShowID") - .HasDatabaseName("ix_people_roles_show_id"); - - b.ToTable("people_roles", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("EndDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_date"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("pk_seasons"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_seasons_slug"); - - b.HasIndex("ShowId", "SeasonNumber") - .IsUnique() - .HasDatabaseName("ix_seasons_show_id_season_number"); - - b.ToTable("seasons", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property>("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EndAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_air"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property>("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_air"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("StudioId") - .HasColumnType("integer") - .HasColumnName("studio_id"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property>("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_shows"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_shows_slug"); - - b.HasIndex("StudioId") - .HasDatabaseName("ix_shows_studio_id"); - - b.ToTable("shows", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_studios"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_studios_slug"); - - b.ToTable("studios", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("Email") - .IsRequired() - .HasColumnType("text") - .HasColumnName("email"); - - b.Property("Password") - .IsRequired() - .HasColumnType("text") - .HasColumnName("password"); - - b.Property("Permissions") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("permissions"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Username") - .IsRequired() - .HasColumnType("text") - .HasColumnName("username"); - - b.HasKey("Id") - .HasName("pk_users"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_users_slug"); - - b.ToTable("users", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b => - { - b.Property("UserID") - .HasColumnType("integer") - .HasColumnName("user_id"); - - b.Property("EpisodeID") - .HasColumnType("integer") - .HasColumnName("episode_id"); - - b.Property("WatchedPercentage") - .HasColumnType("integer") - .HasColumnName("watched_percentage"); - - b.HasKey("UserID", "EpisodeID") - .HasName("pk_watched_episode"); - - b.HasIndex("EpisodeID") - .HasDatabaseName("ix_watched_episode_episode_id"); - - b.ToTable("watched_episode", (string)null); - }); - - modelBuilder.Entity("ShowUser", b => - { - b.Property("UsersId") - .HasColumnType("integer") - .HasColumnName("users_id"); - - b.Property("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", (string)null); - }); - - modelBuilder.Entity("link_collection_movie", b => - { - b.Property("collection_id") - .HasColumnType("integer") - .HasColumnName("collection_id"); - - b.Property("movie_id") - .HasColumnType("integer") - .HasColumnName("movie_id"); - - b.HasKey("collection_id", "movie_id") - .HasName("pk_link_collection_movie"); - - b.HasIndex("movie_id") - .HasDatabaseName("ix_link_collection_movie_movie_id"); - - b.ToTable("link_collection_movie", (string)null); - }); - - modelBuilder.Entity("link_collection_show", b => - { - b.Property("collection_id") - .HasColumnType("integer") - .HasColumnName("collection_id"); - - b.Property("show_id") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.HasKey("collection_id", "show_id") - .HasName("pk_link_collection_show"); - - b.HasIndex("show_id") - .HasDatabaseName("ix_link_collection_show_show_id"); - - b.ToTable("link_collection_show", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b => - { - b.HasOne("Kyoo.Abstractions.Models.Season", "Season") - .WithMany("Episodes") - .HasForeignKey("SeasonId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_episodes_seasons_season_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("Episodes") - .HasForeignKey("ShowId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_episodes_shows_show_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Season"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.LibraryItem", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.HasOne("Kyoo.Abstractions.Models.Studio", "Studio") - .WithMany("Movies") - .HasForeignKey("StudioID") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_movies_studios_studio_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Studio"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.News", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.News+ShowInfo", "Show", b1 => - { - b1.Property("NewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Id") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b1.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_name"); - - b1.Property("Slug") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_slug"); - - b1.HasKey("NewsId"); - - b1.ToTable("news"); - - b1.WithOwner() - .HasForeignKey("NewsId") - .HasConstraintName("fk_news_news_id"); - - b1.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b2 => - { - b2.Property("ShowInfoNewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b2.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("show_logo_blurhash"); - - b2.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_logo_source"); - - b2.HasKey("ShowInfoNewsId"); - - b2.ToTable("news"); - - b2.WithOwner() - .HasForeignKey("ShowInfoNewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b1.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b2 => - { - b2.Property("ShowInfoNewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b2.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("show_poster_blurhash"); - - b2.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_poster_source"); - - b2.HasKey("ShowInfoNewsId"); - - b2.ToTable("news"); - - b2.WithOwner() - .HasForeignKey("ShowInfoNewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b1.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b2 => - { - b2.Property("ShowInfoNewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b2.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("show_thumbnail_blurhash"); - - b2.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_thumbnail_source"); - - b2.HasKey("ShowInfoNewsId"); - - b2.ToTable("news"); - - b2.WithOwner() - .HasForeignKey("ShowInfoNewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b1.Navigation("Logo"); - - b1.Navigation("Poster"); - - b1.Navigation("Thumbnail"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("NewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("NewsId"); - - b1.ToTable("news"); - - b1.WithOwner() - .HasForeignKey("NewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("NewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("NewsId"); - - b1.ToTable("news"); - - b1.WithOwner() - .HasForeignKey("NewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("NewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("NewsId"); - - b1.ToTable("news"); - - b1.WithOwner() - .HasForeignKey("NewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b => - { - b.HasOne("Kyoo.Abstractions.Models.Movie", "Movie") - .WithMany("People") - .HasForeignKey("MovieID") - .HasConstraintName("fk_people_roles_movies_movie_id"); - - b.HasOne("Kyoo.Abstractions.Models.People", "People") - .WithMany("Roles") - .HasForeignKey("PeopleID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_people_roles_people_people_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("People") - .HasForeignKey("ShowID") - .HasConstraintName("fk_people_roles_shows_show_id"); - - b.Navigation("Movie"); - - b.Navigation("People"); - - b.Navigation("Show"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("Seasons") - .HasForeignKey("ShowId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_seasons_shows_show_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.HasOne("Kyoo.Abstractions.Models.Studio", "Studio") - .WithMany("Shows") - .HasForeignKey("StudioId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_shows_studios_studio_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Studio"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("UserId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("UserId"); - - b1.ToTable("users"); - - b1.WithOwner() - .HasForeignKey("UserId") - .HasConstraintName("fk_users_users_id"); - }); - - b.Navigation("Logo"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b => - { - b.HasOne("Kyoo.Abstractions.Models.Episode", "Episode") - .WithMany() - .HasForeignKey("EpisodeID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_watched_episode_episodes_episode_id"); - - b.HasOne("Kyoo.Abstractions.Models.User", null) - .WithMany("CurrentlyWatching") - .HasForeignKey("UserID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_watched_episode_users_user_id"); - - b.Navigation("Episode"); - }); - - modelBuilder.Entity("ShowUser", b => - { - b.HasOne("Kyoo.Abstractions.Models.User", null) - .WithMany() - .HasForeignKey("UsersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_user_show_users_users_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", null) - .WithMany() - .HasForeignKey("WatchedId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_user_show_shows_watched_id"); - }); - - modelBuilder.Entity("link_collection_movie", b => - { - b.HasOne("Kyoo.Abstractions.Models.Collection", null) - .WithMany() - .HasForeignKey("collection_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_movie_collections_collection_id"); - - b.HasOne("Kyoo.Abstractions.Models.Movie", null) - .WithMany() - .HasForeignKey("movie_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_movie_movies_movie_id"); - }); - - modelBuilder.Entity("link_collection_show", b => - { - b.HasOne("Kyoo.Abstractions.Models.Collection", null) - .WithMany() - .HasForeignKey("collection_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_show_collections_collection_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", null) - .WithMany() - .HasForeignKey("show_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_show_shows_show_id"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.Navigation("People"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.Navigation("Roles"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.Navigation("Episodes"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.Navigation("Episodes"); - - b.Navigation("People"); - - b.Navigation("Seasons"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b => - { - b.Navigation("Movies"); - - b.Navigation("Shows"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.Navigation("CurrentlyWatching"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/back/src/Kyoo.Postgresql/Migrations/20231029233109_news.cs b/back/src/Kyoo.Postgresql/Migrations/20231029233109_news.cs deleted file mode 100644 index 1c07f9c1..00000000 --- a/back/src/Kyoo.Postgresql/Migrations/20231029233109_news.cs +++ /dev/null @@ -1,65 +0,0 @@ -// Kyoo - A portable and vast media library solution. -// Copyright (c) Kyoo. -// -// See AUTHORS.md and LICENSE file in the project root for full license information. -// -// Kyoo is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// Kyoo is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Kyoo. If not, see . - -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Kyoo.Postgresql.Migrations -{ - /// - public partial class News : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterDatabase() - .Annotation("Npgsql:Enum:news_kind", "episode,movie"); - - // language=PostgreSQL - migrationBuilder.Sql(@" - CREATE VIEW news AS - SELECT - e.id, e.slug, e.name, NULL AS tagline, '{}' AS aliases, e.path, e.overview, '{}' AS tags, '{}' AS genres, - NULL AS status, e.release_date AS air_date, e.poster_source, e.poster_blurhash, e.thumbnail_source, e.thumbnail_blurhash, - e.logo_source,e.logo_blurhash, NULL AS trailer, e.external_id, e.season_number, e.episode_number, e.absolute_number, - 'episode'::news_kind AS kind, e.added_date, s.id AS show_id, s.slug AS show_slug, s.name AS show_name, - s.poster_source AS show_poster_source, s.poster_blurhash AS show_poster_blurhash, s.thumbnail_source AS show_thumbnail_source, - s.thumbnail_blurhash AS show_thumbnail_blurhash, s.logo_source AS show_logo_source, s.logo_blurhash AS show_logo_blurhash - FROM episodes AS e - LEFT JOIN shows AS s ON e.show_id = s.id - UNION ALL - SELECT - -m.id, m.slug, m.name, m.tagline, m.aliases, m.path, m.overview, m.tags, m.genres, - m.status, m.air_date, m.poster_source, m.poster_blurhash, m.thumbnail_source, m.thumbnail_blurhash, - m.logo_source, m.logo_blurhash, m.trailer, m.external_id, NULL AS season_number, NULL AS episode_number, NULL as absolute_number, - 'movie'::news_kind AS kind, m.added_date, NULL AS show_id, NULL AS show_slug, NULL AS show_name, - NULL AS show_poster_source, NULL AS show_poster_blurhash, NULL AS show_thumbnail_source, NULL AS show_thumbnail_blurhash, - NULL AS show_logo_source, NULL AS show_logo_blurhash - FROM movies AS m - "); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - // language=PostgreSQL - migrationBuilder.Sql(@"DROP VIEW news"); - } - } -} diff --git a/back/src/Kyoo.Postgresql/Migrations/20231031212819_rating.Designer.cs b/back/src/Kyoo.Postgresql/Migrations/20231031212819_rating.Designer.cs deleted file mode 100644 index 0fa05ad7..00000000 --- a/back/src/Kyoo.Postgresql/Migrations/20231031212819_rating.Designer.cs +++ /dev/null @@ -1,1867 +0,0 @@ -// -using System; -using System.Collections.Generic; -using Kyoo.Abstractions.Models; -using Kyoo.Postgresql; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace Kyoo.Postgresql.Migrations -{ - [DbContext(typeof(PostgresContext))] - [Migration("20231031212819_rating")] - partial class Rating - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.12") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "genre", new[] { "action", "adventure", "animation", "comedy", "crime", "documentary", "drama", "family", "fantasy", "history", "horror", "music", "mystery", "romance", "science_fiction", "thriller", "war", "western" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_kind", new[] { "show", "movie", "collection" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "news_kind", new[] { "episode", "movie" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "status", new[] { "unknown", "finished", "airing", "planned" }); - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_collections"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_collections_slug"); - - b.ToTable("collections", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AbsoluteNumber") - .HasColumnType("integer") - .HasColumnName("absolute_number"); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("EpisodeNumber") - .HasColumnType("integer") - .HasColumnName("episode_number"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("ReleaseDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("release_date"); - - b.Property("Runtime") - .HasColumnType("integer") - .HasColumnName("runtime"); - - b.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("season_id"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_episodes"); - - b.HasIndex("SeasonId") - .HasDatabaseName("ix_episodes_season_id"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_episodes_slug"); - - b.HasIndex("ShowId", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber") - .IsUnique() - .HasDatabaseName("ix_episodes_show_id_season_number_episode_number_absolute_numb"); - - b.ToTable("episodes", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.LibraryItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EndAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_air"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Rating") - .HasColumnType("integer") - .HasColumnName("rating"); - - b.Property("Runtime") - .HasColumnType("integer") - .HasColumnName("runtime"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_air"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_library_items"); - - b.ToTable("library_items", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Rating") - .HasColumnType("integer") - .HasColumnName("rating"); - - b.Property("Runtime") - .HasColumnType("integer") - .HasColumnName("runtime"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("StudioID") - .HasColumnType("integer") - .HasColumnName("studio_id"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_movies"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_movies_slug"); - - b.HasIndex("StudioID") - .HasDatabaseName("ix_movies_studio_id"); - - b.ToTable("movies", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.News", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AbsoluteNumber") - .HasColumnType("integer") - .HasColumnName("absolute_number"); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EpisodeNumber") - .HasColumnType("integer") - .HasColumnName("episode_number"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Rating") - .HasColumnType("integer") - .HasColumnName("rating"); - - b.Property("Runtime") - .HasColumnType("integer") - .HasColumnName("runtime"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_news"); - - b.ToTable("news", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_people"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_people_slug"); - - b.ToTable("people", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("MovieID") - .HasColumnType("integer") - .HasColumnName("movie_id"); - - b.Property("PeopleID") - .HasColumnType("integer") - .HasColumnName("people_id"); - - b.Property("Role") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role"); - - b.Property("ShowID") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Type") - .IsRequired() - .HasColumnType("text") - .HasColumnName("type"); - - b.HasKey("Id") - .HasName("pk_people_roles"); - - b.HasIndex("MovieID") - .HasDatabaseName("ix_people_roles_movie_id"); - - b.HasIndex("PeopleID") - .HasDatabaseName("ix_people_roles_people_id"); - - b.HasIndex("ShowID") - .HasDatabaseName("ix_people_roles_show_id"); - - b.ToTable("people_roles", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("EndDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_date"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("pk_seasons"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_seasons_slug"); - - b.HasIndex("ShowId", "SeasonNumber") - .IsUnique() - .HasDatabaseName("ix_seasons_show_id_season_number"); - - b.ToTable("seasons", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property>("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EndAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_air"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property>("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Rating") - .HasColumnType("integer") - .HasColumnName("rating"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_air"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("StudioId") - .HasColumnType("integer") - .HasColumnName("studio_id"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property>("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_shows"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_shows_slug"); - - b.HasIndex("StudioId") - .HasDatabaseName("ix_shows_studio_id"); - - b.ToTable("shows", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_studios"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_studios_slug"); - - b.ToTable("studios", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("Email") - .IsRequired() - .HasColumnType("text") - .HasColumnName("email"); - - b.Property("Password") - .IsRequired() - .HasColumnType("text") - .HasColumnName("password"); - - b.Property("Permissions") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("permissions"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Username") - .IsRequired() - .HasColumnType("text") - .HasColumnName("username"); - - b.HasKey("Id") - .HasName("pk_users"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_users_slug"); - - b.ToTable("users", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b => - { - b.Property("UserID") - .HasColumnType("integer") - .HasColumnName("user_id"); - - b.Property("EpisodeID") - .HasColumnType("integer") - .HasColumnName("episode_id"); - - b.Property("WatchedPercentage") - .HasColumnType("integer") - .HasColumnName("watched_percentage"); - - b.HasKey("UserID", "EpisodeID") - .HasName("pk_watched_episode"); - - b.HasIndex("EpisodeID") - .HasDatabaseName("ix_watched_episode_episode_id"); - - b.ToTable("watched_episode", (string)null); - }); - - modelBuilder.Entity("ShowUser", b => - { - b.Property("UsersId") - .HasColumnType("integer") - .HasColumnName("users_id"); - - b.Property("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", (string)null); - }); - - modelBuilder.Entity("link_collection_movie", b => - { - b.Property("collection_id") - .HasColumnType("integer") - .HasColumnName("collection_id"); - - b.Property("movie_id") - .HasColumnType("integer") - .HasColumnName("movie_id"); - - b.HasKey("collection_id", "movie_id") - .HasName("pk_link_collection_movie"); - - b.HasIndex("movie_id") - .HasDatabaseName("ix_link_collection_movie_movie_id"); - - b.ToTable("link_collection_movie", (string)null); - }); - - modelBuilder.Entity("link_collection_show", b => - { - b.Property("collection_id") - .HasColumnType("integer") - .HasColumnName("collection_id"); - - b.Property("show_id") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.HasKey("collection_id", "show_id") - .HasName("pk_link_collection_show"); - - b.HasIndex("show_id") - .HasDatabaseName("ix_link_collection_show_show_id"); - - b.ToTable("link_collection_show", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b => - { - b.HasOne("Kyoo.Abstractions.Models.Season", "Season") - .WithMany("Episodes") - .HasForeignKey("SeasonId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_episodes_seasons_season_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("Episodes") - .HasForeignKey("ShowId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_episodes_shows_show_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Season"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.LibraryItem", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.HasOne("Kyoo.Abstractions.Models.Studio", "Studio") - .WithMany("Movies") - .HasForeignKey("StudioID") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_movies_studios_studio_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Studio"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.News", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.News+ShowInfo", "Show", b1 => - { - b1.Property("NewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Id") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b1.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_name"); - - b1.Property("Slug") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_slug"); - - b1.HasKey("NewsId"); - - b1.ToTable("news"); - - b1.WithOwner() - .HasForeignKey("NewsId") - .HasConstraintName("fk_news_news_id"); - - b1.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b2 => - { - b2.Property("ShowInfoNewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b2.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("show_logo_blurhash"); - - b2.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_logo_source"); - - b2.HasKey("ShowInfoNewsId"); - - b2.ToTable("news"); - - b2.WithOwner() - .HasForeignKey("ShowInfoNewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b1.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b2 => - { - b2.Property("ShowInfoNewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b2.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("show_poster_blurhash"); - - b2.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_poster_source"); - - b2.HasKey("ShowInfoNewsId"); - - b2.ToTable("news"); - - b2.WithOwner() - .HasForeignKey("ShowInfoNewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b1.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b2 => - { - b2.Property("ShowInfoNewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b2.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("show_thumbnail_blurhash"); - - b2.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_thumbnail_source"); - - b2.HasKey("ShowInfoNewsId"); - - b2.ToTable("news"); - - b2.WithOwner() - .HasForeignKey("ShowInfoNewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b1.Navigation("Logo"); - - b1.Navigation("Poster"); - - b1.Navigation("Thumbnail"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("NewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("NewsId"); - - b1.ToTable("news"); - - b1.WithOwner() - .HasForeignKey("NewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("NewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("NewsId"); - - b1.ToTable("news"); - - b1.WithOwner() - .HasForeignKey("NewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("NewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("NewsId"); - - b1.ToTable("news"); - - b1.WithOwner() - .HasForeignKey("NewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b => - { - b.HasOne("Kyoo.Abstractions.Models.Movie", "Movie") - .WithMany("People") - .HasForeignKey("MovieID") - .HasConstraintName("fk_people_roles_movies_movie_id"); - - b.HasOne("Kyoo.Abstractions.Models.People", "People") - .WithMany("Roles") - .HasForeignKey("PeopleID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_people_roles_people_people_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("People") - .HasForeignKey("ShowID") - .HasConstraintName("fk_people_roles_shows_show_id"); - - b.Navigation("Movie"); - - b.Navigation("People"); - - b.Navigation("Show"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("Seasons") - .HasForeignKey("ShowId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_seasons_shows_show_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.HasOne("Kyoo.Abstractions.Models.Studio", "Studio") - .WithMany("Shows") - .HasForeignKey("StudioId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_shows_studios_studio_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Studio"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("UserId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("UserId"); - - b1.ToTable("users"); - - b1.WithOwner() - .HasForeignKey("UserId") - .HasConstraintName("fk_users_users_id"); - }); - - b.Navigation("Logo"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b => - { - b.HasOne("Kyoo.Abstractions.Models.Episode", "Episode") - .WithMany() - .HasForeignKey("EpisodeID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_watched_episode_episodes_episode_id"); - - b.HasOne("Kyoo.Abstractions.Models.User", null) - .WithMany("CurrentlyWatching") - .HasForeignKey("UserID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_watched_episode_users_user_id"); - - b.Navigation("Episode"); - }); - - modelBuilder.Entity("ShowUser", b => - { - b.HasOne("Kyoo.Abstractions.Models.User", null) - .WithMany() - .HasForeignKey("UsersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_user_show_users_users_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", null) - .WithMany() - .HasForeignKey("WatchedId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_user_show_shows_watched_id"); - }); - - modelBuilder.Entity("link_collection_movie", b => - { - b.HasOne("Kyoo.Abstractions.Models.Collection", null) - .WithMany() - .HasForeignKey("collection_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_movie_collections_collection_id"); - - b.HasOne("Kyoo.Abstractions.Models.Movie", null) - .WithMany() - .HasForeignKey("movie_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_movie_movies_movie_id"); - }); - - modelBuilder.Entity("link_collection_show", b => - { - b.HasOne("Kyoo.Abstractions.Models.Collection", null) - .WithMany() - .HasForeignKey("collection_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_show_collections_collection_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", null) - .WithMany() - .HasForeignKey("show_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_show_shows_show_id"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.Navigation("People"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.Navigation("Roles"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.Navigation("Episodes"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.Navigation("Episodes"); - - b.Navigation("People"); - - b.Navigation("Seasons"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b => - { - b.Navigation("Movies"); - - b.Navigation("Shows"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.Navigation("CurrentlyWatching"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/back/src/Kyoo.Postgresql/Migrations/20231031212819_rating.cs b/back/src/Kyoo.Postgresql/Migrations/20231031212819_rating.cs deleted file mode 100644 index 258ad25b..00000000 --- a/back/src/Kyoo.Postgresql/Migrations/20231031212819_rating.cs +++ /dev/null @@ -1,144 +0,0 @@ -// Kyoo - A portable and vast media library solution. -// Copyright (c) Kyoo. -// -// See AUTHORS.md and LICENSE file in the project root for full license information. -// -// Kyoo is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// Kyoo is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Kyoo. If not, see . - -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Kyoo.Postgresql.Migrations -{ - /// - public partial class Rating : Items - { - public static void CreateItemView(MigrationBuilder migrationBuilder) - { - // language=PostgreSQL - migrationBuilder.Sql(@" - CREATE VIEW library_items AS - SELECT - s.id, s.slug, s.name, s.tagline, s.aliases, s.overview, s.tags, s.genres, s.status, - s.start_air, s.end_air, s.poster_source, s.poster_blurhash, s.thumbnail_source, s.thumbnail_blurhash, - s.logo_source, s.logo_blurhash, s.trailer, s.external_id, s.start_air AS air_date, NULL as path, - 'show'::item_kind AS kind, s.added_date, s.rating, NULL AS runtime - FROM shows AS s - UNION ALL - SELECT - -m.id, m.slug, m.name, m.tagline, m.aliases, m.overview, m.tags, m.genres, m.status, - m.air_date as start_air, m.air_date as end_air, m.poster_source, m.poster_blurhash, m.thumbnail_source, - m.thumbnail_blurhash, m.logo_source, m.logo_blurhash, m.trailer, m.external_id, m.air_date, m.path, - 'movie'::item_kind AS kind, m.added_date, m.rating, m.runtime - FROM movies AS m - UNION ALL - SELECT - c.id + 10000 AS id, c.slug, c.name, NULL as tagline, '{}' as alises, c.overview, '{}' AS tags, '{}' AS genres, 'unknown'::status AS status, - NULL AS start_air, NULL AS end_air, c.poster_source, c.poster_blurhash, c.thumbnail_source, - c.thumbnail_blurhash, c.logo_source, c.logo_blurhash, NULL as trailer, c.external_id, NULL AS air_date, NULL as path, - 'collection'::item_kind AS kind, c.added_date, 0 AS rating, NULL AS runtime - FROM collections AS c - "); - - // language=PostgreSQL - migrationBuilder.Sql(@" - CREATE VIEW news AS - SELECT - e.id, e.slug, e.name, NULL AS tagline, '{}' AS aliases, e.path, e.overview, '{}' AS tags, '{}' AS genres, - NULL AS status, e.release_date AS air_date, e.poster_source, e.poster_blurhash, e.thumbnail_source, e.thumbnail_blurhash, - e.logo_source,e.logo_blurhash, NULL AS trailer, e.external_id, e.season_number, e.episode_number, e.absolute_number, - 'episode'::news_kind AS kind, e.added_date, s.id AS show_id, s.slug AS show_slug, s.name AS show_name, - s.poster_source AS show_poster_source, s.poster_blurhash AS show_poster_blurhash, s.thumbnail_source AS show_thumbnail_source, - s.thumbnail_blurhash AS show_thumbnail_blurhash, s.logo_source AS show_logo_source, s.logo_blurhash AS show_logo_blurhash, - NULL as rating, e.runtime - FROM episodes AS e - LEFT JOIN shows AS s ON e.show_id = s.id - UNION ALL - SELECT - -m.id, m.slug, m.name, m.tagline, m.aliases, m.path, m.overview, m.tags, m.genres, - m.status, m.air_date, m.poster_source, m.poster_blurhash, m.thumbnail_source, m.thumbnail_blurhash, - m.logo_source, m.logo_blurhash, m.trailer, m.external_id, NULL AS season_number, NULL AS episode_number, NULL as absolute_number, - 'movie'::news_kind AS kind, m.added_date, NULL AS show_id, NULL AS show_slug, NULL AS show_name, - NULL AS show_poster_source, NULL AS show_poster_blurhash, NULL AS show_thumbnail_source, NULL AS show_thumbnail_blurhash, - NULL AS show_logo_source, NULL AS show_logo_blurhash, m.rating, m.runtime - FROM movies AS m - "); - } - - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - base.Down(migrationBuilder); - // language=PostgreSQL - migrationBuilder.Sql(@"DROP VIEW news"); - - migrationBuilder.AddColumn( - name: "rating", - table: "shows", - type: "integer", - defaultValue: 0, - nullable: false); - - migrationBuilder.AddColumn( - name: "rating", - table: "movies", - type: "integer", - defaultValue: 0, - nullable: false); - - migrationBuilder.AddColumn( - name: "runtime", - table: "movies", - type: "integer", - nullable: false, - defaultValue: 0); - - migrationBuilder.AddColumn( - name: "runtime", - table: "episodes", - type: "integer", - nullable: false, - defaultValue: 0); - - CreateItemView(migrationBuilder); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - base.Down(migrationBuilder); - // language=PostgreSQL - migrationBuilder.Sql(@"DROP VIEW news"); - - migrationBuilder.DropColumn( - name: "rating", - table: "shows"); - - migrationBuilder.DropColumn( - name: "rating", - table: "movies"); - - migrationBuilder.DropColumn( - name: "runtime", - table: "movies"); - - migrationBuilder.DropColumn( - name: "runtime", - table: "episodes"); - - AddedDate.CreateItemView(migrationBuilder); - } - } -} diff --git a/back/src/Kyoo.Postgresql/Migrations/PostgresContextModelSnapshot.cs b/back/src/Kyoo.Postgresql/Migrations/PostgresContextModelSnapshot.cs deleted file mode 100644 index 7d79701c..00000000 --- a/back/src/Kyoo.Postgresql/Migrations/PostgresContextModelSnapshot.cs +++ /dev/null @@ -1,1864 +0,0 @@ -// -using System; -using System.Collections.Generic; -using Kyoo.Abstractions.Models; -using Kyoo.Postgresql; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace Kyoo.Postgresql.Migrations -{ - [DbContext(typeof(PostgresContext))] - partial class PostgresContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.12") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "genre", new[] { "action", "adventure", "animation", "comedy", "crime", "documentary", "drama", "family", "fantasy", "history", "horror", "music", "mystery", "romance", "science_fiction", "thriller", "war", "western" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_kind", new[] { "show", "movie", "collection" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "news_kind", new[] { "episode", "movie" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "status", new[] { "unknown", "finished", "airing", "planned" }); - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_collections"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_collections_slug"); - - b.ToTable("collections", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AbsoluteNumber") - .HasColumnType("integer") - .HasColumnName("absolute_number"); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("EpisodeNumber") - .HasColumnType("integer") - .HasColumnName("episode_number"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("ReleaseDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("release_date"); - - b.Property("Runtime") - .HasColumnType("integer") - .HasColumnName("runtime"); - - b.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("season_id"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_episodes"); - - b.HasIndex("SeasonId") - .HasDatabaseName("ix_episodes_season_id"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_episodes_slug"); - - b.HasIndex("ShowId", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber") - .IsUnique() - .HasDatabaseName("ix_episodes_show_id_season_number_episode_number_absolute_numb"); - - b.ToTable("episodes", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.LibraryItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EndAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_air"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Rating") - .HasColumnType("integer") - .HasColumnName("rating"); - - b.Property("Runtime") - .HasColumnType("integer") - .HasColumnName("runtime"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_air"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_library_items"); - - b.ToTable("library_items", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Rating") - .HasColumnType("integer") - .HasColumnName("rating"); - - b.Property("Runtime") - .HasColumnType("integer") - .HasColumnName("runtime"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("StudioId") - .HasColumnType("integer") - .HasColumnName("studio_id"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_movies"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_movies_slug"); - - b.HasIndex("StudioId") - .HasDatabaseName("ix_movies_studio_id"); - - b.ToTable("movies", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.News", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AbsoluteNumber") - .HasColumnType("integer") - .HasColumnName("absolute_number"); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("AirDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("air_date"); - - b.Property("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EpisodeNumber") - .HasColumnType("integer") - .HasColumnName("episode_number"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("Rating") - .HasColumnType("integer") - .HasColumnName("rating"); - - b.Property("Runtime") - .HasColumnType("integer") - .HasColumnName("runtime"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_news"); - - b.ToTable("news", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_people"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_people_slug"); - - b.ToTable("people", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("MovieID") - .HasColumnType("integer") - .HasColumnName("movie_id"); - - b.Property("PeopleID") - .HasColumnType("integer") - .HasColumnName("people_id"); - - b.Property("Role") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role"); - - b.Property("ShowID") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Type") - .IsRequired() - .HasColumnType("text") - .HasColumnName("type"); - - b.HasKey("Id") - .HasName("pk_people_roles"); - - b.HasIndex("MovieID") - .HasDatabaseName("ix_people_roles_movie_id"); - - b.HasIndex("PeopleID") - .HasDatabaseName("ix_people_roles_people_id"); - - b.HasIndex("ShowID") - .HasDatabaseName("ix_people_roles_show_id"); - - b.ToTable("people_roles", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("EndDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_date"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("SeasonNumber") - .HasColumnType("integer") - .HasColumnName("season_number"); - - b.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("pk_seasons"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_seasons_slug"); - - b.HasIndex("ShowId", "SeasonNumber") - .IsUnique() - .HasDatabaseName("ix_seasons_show_id_season_number"); - - b.ToTable("seasons", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property>("Aliases") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("aliases"); - - b.Property("EndAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("end_air"); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property>("Genres") - .IsRequired() - .HasColumnType("genre[]") - .HasColumnName("genres"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Overview") - .HasColumnType("text") - .HasColumnName("overview"); - - b.Property("Rating") - .HasColumnType("integer") - .HasColumnName("rating"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("StartAir") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_air"); - - b.Property("Status") - .HasColumnType("status") - .HasColumnName("status"); - - b.Property("StudioId") - .HasColumnType("integer") - .HasColumnName("studio_id"); - - b.Property("Tagline") - .HasColumnType("text") - .HasColumnName("tagline"); - - b.Property>("Tags") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("tags"); - - b.Property("Trailer") - .HasColumnType("text") - .HasColumnName("trailer"); - - b.HasKey("Id") - .HasName("pk_shows"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_shows_slug"); - - b.HasIndex("StudioId") - .HasDatabaseName("ix_shows_studio_id"); - - b.ToTable("shows", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ExternalId") - .IsRequired() - .HasColumnType("json") - .HasColumnName("external_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.HasKey("Id") - .HasName("pk_studios"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_studios_slug"); - - b.ToTable("studios", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AddedDate") - .ValueGeneratedOnAdd() - .HasColumnType("timestamp with time zone") - .HasColumnName("added_date") - .HasDefaultValueSql("now() at time zone 'utc'"); - - b.Property("Email") - .IsRequired() - .HasColumnType("text") - .HasColumnName("email"); - - b.Property("Password") - .IsRequired() - .HasColumnType("text") - .HasColumnName("password"); - - b.Property("Permissions") - .IsRequired() - .HasColumnType("text[]") - .HasColumnName("permissions"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)") - .HasColumnName("slug"); - - b.Property("Username") - .IsRequired() - .HasColumnType("text") - .HasColumnName("username"); - - b.HasKey("Id") - .HasName("pk_users"); - - b.HasIndex("Slug") - .IsUnique() - .HasDatabaseName("ix_users_slug"); - - b.ToTable("users", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b => - { - b.Property("UserID") - .HasColumnType("integer") - .HasColumnName("user_id"); - - b.Property("EpisodeID") - .HasColumnType("integer") - .HasColumnName("episode_id"); - - b.Property("WatchedPercentage") - .HasColumnType("integer") - .HasColumnName("watched_percentage"); - - b.HasKey("UserID", "EpisodeID") - .HasName("pk_watched_episode"); - - b.HasIndex("EpisodeID") - .HasDatabaseName("ix_watched_episode_episode_id"); - - b.ToTable("watched_episode", (string)null); - }); - - modelBuilder.Entity("ShowUser", b => - { - b.Property("UsersId") - .HasColumnType("integer") - .HasColumnName("users_id"); - - b.Property("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", (string)null); - }); - - modelBuilder.Entity("link_collection_movie", b => - { - b.Property("collection_id") - .HasColumnType("integer") - .HasColumnName("collection_id"); - - b.Property("movie_id") - .HasColumnType("integer") - .HasColumnName("movie_id"); - - b.HasKey("collection_id", "movie_id") - .HasName("pk_link_collection_movie"); - - b.HasIndex("movie_id") - .HasDatabaseName("ix_link_collection_movie_movie_id"); - - b.ToTable("link_collection_movie", (string)null); - }); - - modelBuilder.Entity("link_collection_show", b => - { - b.Property("collection_id") - .HasColumnType("integer") - .HasColumnName("collection_id"); - - b.Property("show_id") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b.HasKey("collection_id", "show_id") - .HasName("pk_link_collection_show"); - - b.HasIndex("show_id") - .HasDatabaseName("ix_link_collection_show_show_id"); - - b.ToTable("link_collection_show", (string)null); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("CollectionId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("CollectionId"); - - b1.ToTable("collections"); - - b1.WithOwner() - .HasForeignKey("CollectionId") - .HasConstraintName("fk_collections_collections_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b => - { - b.HasOne("Kyoo.Abstractions.Models.Season", "Season") - .WithMany("Episodes") - .HasForeignKey("SeasonId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_episodes_seasons_season_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("Episodes") - .HasForeignKey("ShowId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_episodes_shows_show_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("EpisodeId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("EpisodeId"); - - b1.ToTable("episodes"); - - b1.WithOwner() - .HasForeignKey("EpisodeId") - .HasConstraintName("fk_episodes_episodes_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Season"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.LibraryItem", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("LibraryItemId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("LibraryItemId"); - - b1.ToTable("library_items"); - - b1.WithOwner() - .HasForeignKey("LibraryItemId") - .HasConstraintName("fk_library_items_library_items_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.HasOne("Kyoo.Abstractions.Models.Studio", "Studio") - .WithMany("Movies") - .HasForeignKey("StudioId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_movies_studios_studio_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("MovieId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("MovieId"); - - b1.ToTable("movies"); - - b1.WithOwner() - .HasForeignKey("MovieId") - .HasConstraintName("fk_movies_movies_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Studio"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.News", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.News+ShowInfo", "Show", b1 => - { - b1.Property("NewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Id") - .HasColumnType("integer") - .HasColumnName("show_id"); - - b1.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_name"); - - b1.Property("Slug") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_slug"); - - b1.HasKey("NewsId"); - - b1.ToTable("news"); - - b1.WithOwner() - .HasForeignKey("NewsId") - .HasConstraintName("fk_news_news_id"); - - b1.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b2 => - { - b2.Property("ShowInfoNewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b2.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("show_logo_blurhash"); - - b2.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_logo_source"); - - b2.HasKey("ShowInfoNewsId"); - - b2.ToTable("news"); - - b2.WithOwner() - .HasForeignKey("ShowInfoNewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b1.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b2 => - { - b2.Property("ShowInfoNewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b2.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("show_poster_blurhash"); - - b2.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_poster_source"); - - b2.HasKey("ShowInfoNewsId"); - - b2.ToTable("news"); - - b2.WithOwner() - .HasForeignKey("ShowInfoNewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b1.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b2 => - { - b2.Property("ShowInfoNewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b2.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("show_thumbnail_blurhash"); - - b2.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("show_thumbnail_source"); - - b2.HasKey("ShowInfoNewsId"); - - b2.ToTable("news"); - - b2.WithOwner() - .HasForeignKey("ShowInfoNewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b1.Navigation("Logo"); - - b1.Navigation("Poster"); - - b1.Navigation("Thumbnail"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("NewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("NewsId"); - - b1.ToTable("news"); - - b1.WithOwner() - .HasForeignKey("NewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("NewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("NewsId"); - - b1.ToTable("news"); - - b1.WithOwner() - .HasForeignKey("NewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("NewsId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("NewsId"); - - b1.ToTable("news"); - - b1.WithOwner() - .HasForeignKey("NewsId") - .HasConstraintName("fk_news_news_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("PeopleId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("PeopleId"); - - b1.ToTable("people"); - - b1.WithOwner() - .HasForeignKey("PeopleId") - .HasConstraintName("fk_people_people_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b => - { - b.HasOne("Kyoo.Abstractions.Models.Movie", "Movie") - .WithMany("People") - .HasForeignKey("MovieID") - .HasConstraintName("fk_people_roles_movies_movie_id"); - - b.HasOne("Kyoo.Abstractions.Models.People", "People") - .WithMany("Roles") - .HasForeignKey("PeopleID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_people_roles_people_people_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("People") - .HasForeignKey("ShowID") - .HasConstraintName("fk_people_roles_shows_show_id"); - - b.Navigation("Movie"); - - b.Navigation("People"); - - b.Navigation("Show"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.HasOne("Kyoo.Abstractions.Models.Show", "Show") - .WithMany("Seasons") - .HasForeignKey("ShowId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_seasons_shows_show_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("SeasonId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("SeasonId"); - - b1.ToTable("seasons"); - - b1.WithOwner() - .HasForeignKey("SeasonId") - .HasConstraintName("fk_seasons_seasons_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Show"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.HasOne("Kyoo.Abstractions.Models.Studio", "Studio") - .WithMany("Shows") - .HasForeignKey("StudioId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_shows_studios_studio_id"); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("poster_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("poster_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 => - { - b1.Property("ShowId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("thumbnail_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("thumbnail_source"); - - b1.HasKey("ShowId"); - - b1.ToTable("shows"); - - b1.WithOwner() - .HasForeignKey("ShowId") - .HasConstraintName("fk_shows_shows_id"); - }); - - b.Navigation("Logo"); - - b.Navigation("Poster"); - - b.Navigation("Studio"); - - b.Navigation("Thumbnail"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 => - { - b1.Property("UserId") - .HasColumnType("integer") - .HasColumnName("id"); - - b1.Property("Blurhash") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("logo_blurhash"); - - b1.Property("Source") - .IsRequired() - .HasColumnType("text") - .HasColumnName("logo_source"); - - b1.HasKey("UserId"); - - b1.ToTable("users"); - - b1.WithOwner() - .HasForeignKey("UserId") - .HasConstraintName("fk_users_users_id"); - }); - - b.Navigation("Logo"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b => - { - b.HasOne("Kyoo.Abstractions.Models.Episode", "Episode") - .WithMany() - .HasForeignKey("EpisodeID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_watched_episode_episodes_episode_id"); - - b.HasOne("Kyoo.Abstractions.Models.User", null) - .WithMany("CurrentlyWatching") - .HasForeignKey("UserID") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_watched_episode_users_user_id"); - - b.Navigation("Episode"); - }); - - modelBuilder.Entity("ShowUser", b => - { - b.HasOne("Kyoo.Abstractions.Models.User", null) - .WithMany() - .HasForeignKey("UsersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_user_show_users_users_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", null) - .WithMany() - .HasForeignKey("WatchedId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_user_show_shows_watched_id"); - }); - - modelBuilder.Entity("link_collection_movie", b => - { - b.HasOne("Kyoo.Abstractions.Models.Collection", null) - .WithMany() - .HasForeignKey("collection_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_movie_collections_collection_id"); - - b.HasOne("Kyoo.Abstractions.Models.Movie", null) - .WithMany() - .HasForeignKey("movie_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_movie_movies_movie_id"); - }); - - modelBuilder.Entity("link_collection_show", b => - { - b.HasOne("Kyoo.Abstractions.Models.Collection", null) - .WithMany() - .HasForeignKey("collection_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_show_collections_collection_id"); - - b.HasOne("Kyoo.Abstractions.Models.Show", null) - .WithMany() - .HasForeignKey("show_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_link_collection_show_shows_show_id"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Movie", b => - { - b.Navigation("People"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.People", b => - { - b.Navigation("Roles"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b => - { - b.Navigation("Episodes"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b => - { - b.Navigation("Episodes"); - - b.Navigation("People"); - - b.Navigation("Seasons"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b => - { - b.Navigation("Movies"); - - b.Navigation("Shows"); - }); - - modelBuilder.Entity("Kyoo.Abstractions.Models.User", b => - { - b.Navigation("CurrentlyWatching"); - }); -#pragma warning restore 612, 618 - } - } -}