Remove database triggers

This commit is contained in:
Zoe Roux 2023-06-21 16:52:10 +09:00
parent 58b799edb4
commit db41c55230
6 changed files with 1403 additions and 63 deletions

View File

@ -0,0 +1,12 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-ef": {
"version": "7.0.7",
"commands": [
"dotnet-ef"
]
}
}
}

View File

@ -61,9 +61,11 @@ namespace Kyoo.Core.Controllers
/// Create a new <see cref="EpisodeRepository"/>. /// Create a new <see cref="EpisodeRepository"/>.
/// </summary> /// </summary>
/// <param name="database">The database handle to use.</param> /// <param name="database">The database handle to use.</param>
/// <param name="shows">A show repository</param>
/// <param name="providers">A provider repository</param> /// <param name="providers">A provider repository</param>
/// <param name="tracks">A track repository</param> /// <param name="tracks">A track repository</param>
public EpisodeRepository(DatabaseContext database, public EpisodeRepository(DatabaseContext database,
IShowRepository shows,
IProviderRepository providers, IProviderRepository providers,
ITrackRepository tracks) ITrackRepository tracks)
: base(database) : base(database)
@ -71,6 +73,14 @@ namespace Kyoo.Core.Controllers
_database = database; _database = database;
_providers = providers; _providers = providers;
_tracks = tracks; _tracks = tracks;
// Edit episode slugs when the show's slug changes.
shows.OnEdited += async (show) =>
{
foreach (Episode ep in _database.Episodes.Where(x => x.ShowID == show.ID))
ep.ShowSlug = show.Slug;
await _database.SaveChangesAsync();
};
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@ -50,13 +50,23 @@ namespace Kyoo.Core.Controllers
/// Create a new <see cref="SeasonRepository"/>. /// Create a new <see cref="SeasonRepository"/>.
/// </summary> /// </summary>
/// <param name="database">The database handle that will be used</param> /// <param name="database">The database handle that will be used</param>
/// <param name="shows">A shows repository</param>
/// <param name="providers">A provider repository</param> /// <param name="providers">A provider repository</param>
public SeasonRepository(DatabaseContext database, public SeasonRepository(DatabaseContext database,
IShowRepository shows,
IProviderRepository providers) IProviderRepository providers)
: base(database) : base(database)
{ {
_database = database; _database = database;
_providers = providers; _providers = providers;
// Edit seasons slugs when the show's slug changes.
shows.OnEdited += async (show) =>
{
foreach (Season season in _database.Seasons.Where(x => x.ShowID == show.ID))
season.ShowSlug = show.Slug;
await _database.SaveChangesAsync();
};
} }
/// <inheritdoc/> /// <inheritdoc/>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,50 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace Kyoo.Postgresql.Migrations
{
public partial class RemoveTrigers : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterDatabase()
.Annotation("Npgsql:Enum:item_type", "show,movie,collection")
.Annotation("Npgsql:Enum:status", "unknown,finished,airing,planned")
.Annotation("Npgsql:Enum:stream_type", "unknown,video,audio,subtitle")
.OldAnnotation("Npgsql:Enum:item_type", "show,movie,collection")
.OldAnnotation("Npgsql:Enum:status", "unknown,finished,airing,planned")
.OldAnnotation("Npgsql:Enum:stream_type", "unknown,video,audio,subtitle,attachment");
// language=PostgreSQL
migrationBuilder.Sql("DROP TRIGGER show_slug_trigger ON shows;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION show_slug_update;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP TRIGGER season_slug_trigger ON seasons;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION season_slug_update;");
// language=PostgreSQL
migrationBuilder.Sql("DROP TRIGGER episode_slug_trigger ON episodes;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION episode_slug_update;");
// language=PostgreSQL
migrationBuilder.Sql("DROP TRIGGER track_slug_trigger ON tracks;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION track_slug_update;");
// language=PostgreSQL
migrationBuilder.Sql("DROP TRIGGER episode_track_slug_trigger ON episodes;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION episode_update_tracks_slug;");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterDatabase()
.Annotation("Npgsql:Enum:item_type", "show,movie,collection")
.Annotation("Npgsql:Enum:status", "unknown,finished,airing,planned")
.Annotation("Npgsql:Enum:stream_type", "unknown,video,audio,subtitle,attachment")
.OldAnnotation("Npgsql:Enum:item_type", "show,movie,collection")
.OldAnnotation("Npgsql:Enum:status", "unknown,finished,airing,planned")
.OldAnnotation("Npgsql:Enum:stream_type", "unknown,video,audio,subtitle");
}
}
}

View File

@ -1,4 +1,4 @@
// <auto-generated /> // <auto-generated />
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Kyoo.Abstractions.Models; using Kyoo.Abstractions.Models;
@ -19,12 +19,12 @@ namespace Kyoo.Postgresql.Migrations
modelBuilder modelBuilder
.HasPostgresEnum(null, "item_type", new[] { "show", "movie", "collection" }) .HasPostgresEnum(null, "item_type", new[] { "show", "movie", "collection" })
.HasPostgresEnum(null, "status", new[] { "unknown", "finished", "airing", "planned" }) .HasPostgresEnum(null, "status", new[] { "unknown", "finished", "airing", "planned" })
.HasPostgresEnum(null, "stream_type", new[] { "unknown", "video", "audio", "subtitle", "attachment" }) .HasPostgresEnum(null, "stream_type", new[] { "unknown", "video", "audio", "subtitle" })
.HasAnnotation("Relational:MaxIdentifierLength", 63) .HasAnnotation("Relational:MaxIdentifierLength", 63)
.HasAnnotation("ProductVersion", "5.0.8") .HasAnnotation("ProductVersion", "5.0.7")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
modelBuilder.Entity("Kyoo.Models.Collection", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b =>
{ {
b.Property<int>("ID") b.Property<int>("ID")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -59,7 +59,7 @@ namespace Kyoo.Postgresql.Migrations
b.ToTable("collections"); b.ToTable("collections");
}); });
modelBuilder.Entity("Kyoo.Models.Episode", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b =>
{ {
b.Property<int>("ID") b.Property<int>("ID")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -129,7 +129,7 @@ namespace Kyoo.Postgresql.Migrations
b.ToTable("episodes"); b.ToTable("episodes");
}); });
modelBuilder.Entity("Kyoo.Models.Genre", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Genre", b =>
{ {
b.Property<int>("ID") b.Property<int>("ID")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -156,7 +156,7 @@ namespace Kyoo.Postgresql.Migrations
b.ToTable("genres"); b.ToTable("genres");
}); });
modelBuilder.Entity("Kyoo.Models.Library", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Library", b =>
{ {
b.Property<int>("ID") b.Property<int>("ID")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -187,7 +187,7 @@ namespace Kyoo.Postgresql.Migrations
b.ToTable("libraries"); b.ToTable("libraries");
}); });
modelBuilder.Entity("Kyoo.Models.LibraryItem", b => modelBuilder.Entity("Kyoo.Abstractions.Models.LibraryItem", b =>
{ {
b.Property<int>("ID") b.Property<int>("ID")
.HasColumnType("integer") .HasColumnType("integer")
@ -232,7 +232,7 @@ namespace Kyoo.Postgresql.Migrations
b.ToView("library_items"); b.ToView("library_items");
}); });
modelBuilder.Entity("Kyoo.Models.People", b => modelBuilder.Entity("Kyoo.Abstractions.Models.People", b =>
{ {
b.Property<int>("ID") b.Property<int>("ID")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -263,7 +263,7 @@ namespace Kyoo.Postgresql.Migrations
b.ToTable("people"); b.ToTable("people");
}); });
modelBuilder.Entity("Kyoo.Models.PeopleRole", b => modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b =>
{ {
b.Property<int>("ID") b.Property<int>("ID")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -299,7 +299,7 @@ namespace Kyoo.Postgresql.Migrations
b.ToTable("people_roles"); b.ToTable("people_roles");
}); });
modelBuilder.Entity("Kyoo.Models.Provider", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Provider", b =>
{ {
b.Property<int>("ID") b.Property<int>("ID")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -330,7 +330,7 @@ namespace Kyoo.Postgresql.Migrations
b.ToTable("providers"); b.ToTable("providers");
}); });
modelBuilder.Entity("Kyoo.Models.Season", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b =>
{ {
b.Property<int>("ID") b.Property<int>("ID")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -385,7 +385,7 @@ namespace Kyoo.Postgresql.Migrations
b.ToTable("seasons"); b.ToTable("seasons");
}); });
modelBuilder.Entity("Kyoo.Models.Show", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b =>
{ {
b.Property<int>("ID") b.Property<int>("ID")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -451,7 +451,7 @@ namespace Kyoo.Postgresql.Migrations
b.ToTable("shows"); b.ToTable("shows");
}); });
modelBuilder.Entity("Kyoo.Models.Studio", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b =>
{ {
b.Property<int>("ID") b.Property<int>("ID")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -478,7 +478,7 @@ namespace Kyoo.Postgresql.Migrations
b.ToTable("studios"); b.ToTable("studios");
}); });
modelBuilder.Entity("Kyoo.Models.Track", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Track", b =>
{ {
b.Property<int>("ID") b.Property<int>("ID")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -545,7 +545,7 @@ namespace Kyoo.Postgresql.Migrations
b.ToTable("tracks"); b.ToTable("tracks");
}); });
modelBuilder.Entity("Kyoo.Models.User", b => modelBuilder.Entity("Kyoo.Abstractions.Models.User", b =>
{ {
b.Property<int>("ID") b.Property<int>("ID")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -592,7 +592,7 @@ namespace Kyoo.Postgresql.Migrations
b.ToTable("users"); b.ToTable("users");
}); });
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b => modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b =>
{ {
b.Property<int>("UserID") b.Property<int>("UserID")
.HasColumnType("integer") .HasColumnType("integer")
@ -891,15 +891,15 @@ namespace Kyoo.Postgresql.Migrations
b.ToTable("studio_metadata_id"); b.ToTable("studio_metadata_id");
}); });
modelBuilder.Entity("Kyoo.Models.Episode", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b =>
{ {
b.HasOne("Kyoo.Models.Season", "Season") b.HasOne("Kyoo.Abstractions.Models.Season", "Season")
.WithMany("Episodes") .WithMany("Episodes")
.HasForeignKey("SeasonID") .HasForeignKey("SeasonID")
.HasConstraintName("fk_episodes_seasons_season_id") .HasConstraintName("fk_episodes_seasons_season_id")
.OnDelete(DeleteBehavior.Cascade); .OnDelete(DeleteBehavior.Cascade);
b.HasOne("Kyoo.Models.Show", "Show") b.HasOne("Kyoo.Abstractions.Models.Show", "Show")
.WithMany("Episodes") .WithMany("Episodes")
.HasForeignKey("ShowID") .HasForeignKey("ShowID")
.HasConstraintName("fk_episodes_shows_show_id") .HasConstraintName("fk_episodes_shows_show_id")
@ -911,16 +911,16 @@ namespace Kyoo.Postgresql.Migrations
b.Navigation("Show"); b.Navigation("Show");
}); });
modelBuilder.Entity("Kyoo.Models.PeopleRole", b => modelBuilder.Entity("Kyoo.Abstractions.Models.PeopleRole", b =>
{ {
b.HasOne("Kyoo.Models.People", "People") b.HasOne("Kyoo.Abstractions.Models.People", "People")
.WithMany("Roles") .WithMany("Roles")
.HasForeignKey("PeopleID") .HasForeignKey("PeopleID")
.HasConstraintName("fk_people_roles_people_people_id") .HasConstraintName("fk_people_roles_people_people_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.Show", "Show") b.HasOne("Kyoo.Abstractions.Models.Show", "Show")
.WithMany("People") .WithMany("People")
.HasForeignKey("ShowID") .HasForeignKey("ShowID")
.HasConstraintName("fk_people_roles_shows_show_id") .HasConstraintName("fk_people_roles_shows_show_id")
@ -932,9 +932,9 @@ namespace Kyoo.Postgresql.Migrations
b.Navigation("Show"); b.Navigation("Show");
}); });
modelBuilder.Entity("Kyoo.Models.Season", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b =>
{ {
b.HasOne("Kyoo.Models.Show", "Show") b.HasOne("Kyoo.Abstractions.Models.Show", "Show")
.WithMany("Seasons") .WithMany("Seasons")
.HasForeignKey("ShowID") .HasForeignKey("ShowID")
.HasConstraintName("fk_seasons_shows_show_id") .HasConstraintName("fk_seasons_shows_show_id")
@ -944,9 +944,9 @@ namespace Kyoo.Postgresql.Migrations
b.Navigation("Show"); b.Navigation("Show");
}); });
modelBuilder.Entity("Kyoo.Models.Show", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b =>
{ {
b.HasOne("Kyoo.Models.Studio", "Studio") b.HasOne("Kyoo.Abstractions.Models.Studio", "Studio")
.WithMany("Shows") .WithMany("Shows")
.HasForeignKey("StudioID") .HasForeignKey("StudioID")
.HasConstraintName("fk_shows_studios_studio_id") .HasConstraintName("fk_shows_studios_studio_id")
@ -955,9 +955,9 @@ namespace Kyoo.Postgresql.Migrations
b.Navigation("Studio"); b.Navigation("Studio");
}); });
modelBuilder.Entity("Kyoo.Models.Track", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Track", b =>
{ {
b.HasOne("Kyoo.Models.Episode", "Episode") b.HasOne("Kyoo.Abstractions.Models.Episode", "Episode")
.WithMany("Tracks") .WithMany("Tracks")
.HasForeignKey("EpisodeID") .HasForeignKey("EpisodeID")
.HasConstraintName("fk_tracks_episodes_episode_id") .HasConstraintName("fk_tracks_episodes_episode_id")
@ -967,16 +967,16 @@ namespace Kyoo.Postgresql.Migrations
b.Navigation("Episode"); b.Navigation("Episode");
}); });
modelBuilder.Entity("Kyoo.Models.WatchedEpisode", b => modelBuilder.Entity("Kyoo.Abstractions.Models.WatchedEpisode", b =>
{ {
b.HasOne("Kyoo.Models.Episode", "Episode") b.HasOne("Kyoo.Abstractions.Models.Episode", "Episode")
.WithMany() .WithMany()
.HasForeignKey("EpisodeID") .HasForeignKey("EpisodeID")
.HasConstraintName("fk_watched_episodes_episodes_episode_id") .HasConstraintName("fk_watched_episodes_episodes_episode_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.User", null) b.HasOne("Kyoo.Abstractions.Models.User", null)
.WithMany("CurrentlyWatching") .WithMany("CurrentlyWatching")
.HasForeignKey("UserID") .HasForeignKey("UserID")
.HasConstraintName("fk_watched_episodes_users_user_id") .HasConstraintName("fk_watched_episodes_users_user_id")
@ -988,14 +988,14 @@ namespace Kyoo.Postgresql.Migrations
modelBuilder.Entity("ShowUser", b => modelBuilder.Entity("ShowUser", b =>
{ {
b.HasOne("Kyoo.Models.User", null) b.HasOne("Kyoo.Abstractions.Models.User", null)
.WithMany() .WithMany()
.HasForeignKey("UsersID") .HasForeignKey("UsersID")
.HasConstraintName("fk_link_user_show_users_users_id") .HasConstraintName("fk_link_user_show_users_users_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.Show", null) b.HasOne("Kyoo.Abstractions.Models.Show", null)
.WithMany() .WithMany()
.HasForeignKey("WatchedID") .HasForeignKey("WatchedID")
.HasConstraintName("fk_link_user_show_shows_watched_id") .HasConstraintName("fk_link_user_show_shows_watched_id")
@ -1005,14 +1005,14 @@ namespace Kyoo.Postgresql.Migrations
modelBuilder.Entity("collection_metadata_id", b => modelBuilder.Entity("collection_metadata_id", b =>
{ {
b.HasOne("Kyoo.Models.Provider", "Provider") b.HasOne("Kyoo.Abstractions.Models.Provider", "Provider")
.WithMany() .WithMany()
.HasForeignKey("ProviderID") .HasForeignKey("ProviderID")
.HasConstraintName("fk_collection_metadata_id_providers_provider_id") .HasConstraintName("fk_collection_metadata_id_providers_provider_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.Collection", null) b.HasOne("Kyoo.Abstractions.Models.Collection", null)
.WithMany("ExternalIDs") .WithMany("ExternalIDs")
.HasForeignKey("ResourceID") .HasForeignKey("ResourceID")
.HasConstraintName("fk_collection_metadata_id_collections_collection_id") .HasConstraintName("fk_collection_metadata_id_collections_collection_id")
@ -1024,14 +1024,14 @@ namespace Kyoo.Postgresql.Migrations
modelBuilder.Entity("episode_metadata_id", b => modelBuilder.Entity("episode_metadata_id", b =>
{ {
b.HasOne("Kyoo.Models.Provider", "Provider") b.HasOne("Kyoo.Abstractions.Models.Provider", "Provider")
.WithMany() .WithMany()
.HasForeignKey("ProviderID") .HasForeignKey("ProviderID")
.HasConstraintName("fk_episode_metadata_id_providers_provider_id") .HasConstraintName("fk_episode_metadata_id_providers_provider_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.Episode", null) b.HasOne("Kyoo.Abstractions.Models.Episode", null)
.WithMany("ExternalIDs") .WithMany("ExternalIDs")
.HasForeignKey("ResourceID") .HasForeignKey("ResourceID")
.HasConstraintName("fk_episode_metadata_id_episodes_episode_id") .HasConstraintName("fk_episode_metadata_id_episodes_episode_id")
@ -1043,14 +1043,14 @@ namespace Kyoo.Postgresql.Migrations
modelBuilder.Entity("link_collection_show", b => modelBuilder.Entity("link_collection_show", b =>
{ {
b.HasOne("Kyoo.Models.Collection", null) b.HasOne("Kyoo.Abstractions.Models.Collection", null)
.WithMany() .WithMany()
.HasForeignKey("collection_id") .HasForeignKey("collection_id")
.HasConstraintName("fk_link_collection_show_collections_collection_id") .HasConstraintName("fk_link_collection_show_collections_collection_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.Show", null) b.HasOne("Kyoo.Abstractions.Models.Show", null)
.WithMany() .WithMany()
.HasForeignKey("show_id") .HasForeignKey("show_id")
.HasConstraintName("fk_link_collection_show_shows_show_id") .HasConstraintName("fk_link_collection_show_shows_show_id")
@ -1060,14 +1060,14 @@ namespace Kyoo.Postgresql.Migrations
modelBuilder.Entity("link_library_collection", b => modelBuilder.Entity("link_library_collection", b =>
{ {
b.HasOne("Kyoo.Models.Collection", null) b.HasOne("Kyoo.Abstractions.Models.Collection", null)
.WithMany() .WithMany()
.HasForeignKey("collection_id") .HasForeignKey("collection_id")
.HasConstraintName("fk_link_library_collection_collections_collection_id") .HasConstraintName("fk_link_library_collection_collections_collection_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.Library", null) b.HasOne("Kyoo.Abstractions.Models.Library", null)
.WithMany() .WithMany()
.HasForeignKey("library_id") .HasForeignKey("library_id")
.HasConstraintName("fk_link_library_collection_libraries_library_id") .HasConstraintName("fk_link_library_collection_libraries_library_id")
@ -1077,14 +1077,14 @@ namespace Kyoo.Postgresql.Migrations
modelBuilder.Entity("link_library_provider", b => modelBuilder.Entity("link_library_provider", b =>
{ {
b.HasOne("Kyoo.Models.Library", null) b.HasOne("Kyoo.Abstractions.Models.Library", null)
.WithMany() .WithMany()
.HasForeignKey("library_id") .HasForeignKey("library_id")
.HasConstraintName("fk_link_library_provider_libraries_library_id") .HasConstraintName("fk_link_library_provider_libraries_library_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.Provider", null) b.HasOne("Kyoo.Abstractions.Models.Provider", null)
.WithMany() .WithMany()
.HasForeignKey("provider_id") .HasForeignKey("provider_id")
.HasConstraintName("fk_link_library_provider_providers_provider_id") .HasConstraintName("fk_link_library_provider_providers_provider_id")
@ -1094,14 +1094,14 @@ namespace Kyoo.Postgresql.Migrations
modelBuilder.Entity("link_library_show", b => modelBuilder.Entity("link_library_show", b =>
{ {
b.HasOne("Kyoo.Models.Library", null) b.HasOne("Kyoo.Abstractions.Models.Library", null)
.WithMany() .WithMany()
.HasForeignKey("library_id") .HasForeignKey("library_id")
.HasConstraintName("fk_link_library_show_libraries_library_id") .HasConstraintName("fk_link_library_show_libraries_library_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.Show", null) b.HasOne("Kyoo.Abstractions.Models.Show", null)
.WithMany() .WithMany()
.HasForeignKey("show_id") .HasForeignKey("show_id")
.HasConstraintName("fk_link_library_show_shows_show_id") .HasConstraintName("fk_link_library_show_shows_show_id")
@ -1111,14 +1111,14 @@ namespace Kyoo.Postgresql.Migrations
modelBuilder.Entity("link_show_genre", b => modelBuilder.Entity("link_show_genre", b =>
{ {
b.HasOne("Kyoo.Models.Genre", null) b.HasOne("Kyoo.Abstractions.Models.Genre", null)
.WithMany() .WithMany()
.HasForeignKey("genre_id") .HasForeignKey("genre_id")
.HasConstraintName("fk_link_show_genre_genres_genre_id") .HasConstraintName("fk_link_show_genre_genres_genre_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.Show", null) b.HasOne("Kyoo.Abstractions.Models.Show", null)
.WithMany() .WithMany()
.HasForeignKey("show_id") .HasForeignKey("show_id")
.HasConstraintName("fk_link_show_genre_shows_show_id") .HasConstraintName("fk_link_show_genre_shows_show_id")
@ -1128,14 +1128,14 @@ namespace Kyoo.Postgresql.Migrations
modelBuilder.Entity("people_metadata_id", b => modelBuilder.Entity("people_metadata_id", b =>
{ {
b.HasOne("Kyoo.Models.Provider", "Provider") b.HasOne("Kyoo.Abstractions.Models.Provider", "Provider")
.WithMany() .WithMany()
.HasForeignKey("ProviderID") .HasForeignKey("ProviderID")
.HasConstraintName("fk_people_metadata_id_providers_provider_id") .HasConstraintName("fk_people_metadata_id_providers_provider_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.People", null) b.HasOne("Kyoo.Abstractions.Models.People", null)
.WithMany("ExternalIDs") .WithMany("ExternalIDs")
.HasForeignKey("ResourceID") .HasForeignKey("ResourceID")
.HasConstraintName("fk_people_metadata_id_people_people_id") .HasConstraintName("fk_people_metadata_id_people_people_id")
@ -1147,14 +1147,14 @@ namespace Kyoo.Postgresql.Migrations
modelBuilder.Entity("season_metadata_id", b => modelBuilder.Entity("season_metadata_id", b =>
{ {
b.HasOne("Kyoo.Models.Provider", "Provider") b.HasOne("Kyoo.Abstractions.Models.Provider", "Provider")
.WithMany() .WithMany()
.HasForeignKey("ProviderID") .HasForeignKey("ProviderID")
.HasConstraintName("fk_season_metadata_id_providers_provider_id") .HasConstraintName("fk_season_metadata_id_providers_provider_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.Season", null) b.HasOne("Kyoo.Abstractions.Models.Season", null)
.WithMany("ExternalIDs") .WithMany("ExternalIDs")
.HasForeignKey("ResourceID") .HasForeignKey("ResourceID")
.HasConstraintName("fk_season_metadata_id_seasons_season_id") .HasConstraintName("fk_season_metadata_id_seasons_season_id")
@ -1166,14 +1166,14 @@ namespace Kyoo.Postgresql.Migrations
modelBuilder.Entity("show_metadata_id", b => modelBuilder.Entity("show_metadata_id", b =>
{ {
b.HasOne("Kyoo.Models.Provider", "Provider") b.HasOne("Kyoo.Abstractions.Models.Provider", "Provider")
.WithMany() .WithMany()
.HasForeignKey("ProviderID") .HasForeignKey("ProviderID")
.HasConstraintName("fk_show_metadata_id_providers_provider_id") .HasConstraintName("fk_show_metadata_id_providers_provider_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.Show", null) b.HasOne("Kyoo.Abstractions.Models.Show", null)
.WithMany("ExternalIDs") .WithMany("ExternalIDs")
.HasForeignKey("ResourceID") .HasForeignKey("ResourceID")
.HasConstraintName("fk_show_metadata_id_shows_show_id") .HasConstraintName("fk_show_metadata_id_shows_show_id")
@ -1185,14 +1185,14 @@ namespace Kyoo.Postgresql.Migrations
modelBuilder.Entity("studio_metadata_id", b => modelBuilder.Entity("studio_metadata_id", b =>
{ {
b.HasOne("Kyoo.Models.Provider", "Provider") b.HasOne("Kyoo.Abstractions.Models.Provider", "Provider")
.WithMany() .WithMany()
.HasForeignKey("ProviderID") .HasForeignKey("ProviderID")
.HasConstraintName("fk_studio_metadata_id_providers_provider_id") .HasConstraintName("fk_studio_metadata_id_providers_provider_id")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("Kyoo.Models.Studio", null) b.HasOne("Kyoo.Abstractions.Models.Studio", null)
.WithMany("ExternalIDs") .WithMany("ExternalIDs")
.HasForeignKey("ResourceID") .HasForeignKey("ResourceID")
.HasConstraintName("fk_studio_metadata_id_studios_studio_id") .HasConstraintName("fk_studio_metadata_id_studios_studio_id")
@ -1202,33 +1202,33 @@ namespace Kyoo.Postgresql.Migrations
b.Navigation("Provider"); b.Navigation("Provider");
}); });
modelBuilder.Entity("Kyoo.Models.Collection", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Collection", b =>
{ {
b.Navigation("ExternalIDs"); b.Navigation("ExternalIDs");
}); });
modelBuilder.Entity("Kyoo.Models.Episode", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Episode", b =>
{ {
b.Navigation("ExternalIDs"); b.Navigation("ExternalIDs");
b.Navigation("Tracks"); b.Navigation("Tracks");
}); });
modelBuilder.Entity("Kyoo.Models.People", b => modelBuilder.Entity("Kyoo.Abstractions.Models.People", b =>
{ {
b.Navigation("ExternalIDs"); b.Navigation("ExternalIDs");
b.Navigation("Roles"); b.Navigation("Roles");
}); });
modelBuilder.Entity("Kyoo.Models.Season", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Season", b =>
{ {
b.Navigation("Episodes"); b.Navigation("Episodes");
b.Navigation("ExternalIDs"); b.Navigation("ExternalIDs");
}); });
modelBuilder.Entity("Kyoo.Models.Show", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Show", b =>
{ {
b.Navigation("Episodes"); b.Navigation("Episodes");
@ -1239,14 +1239,14 @@ namespace Kyoo.Postgresql.Migrations
b.Navigation("Seasons"); b.Navigation("Seasons");
}); });
modelBuilder.Entity("Kyoo.Models.Studio", b => modelBuilder.Entity("Kyoo.Abstractions.Models.Studio", b =>
{ {
b.Navigation("ExternalIDs"); b.Navigation("ExternalIDs");
b.Navigation("Shows"); b.Navigation("Shows");
}); });
modelBuilder.Entity("Kyoo.Models.User", b => modelBuilder.Entity("Kyoo.Abstractions.Models.User", b =>
{ {
b.Navigation("CurrentlyWatching"); b.Navigation("CurrentlyWatching");
}); });