From da87e786ffb5e0370f84d9d699ee0021684f619e Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Sat, 13 Jun 2026 01:36:03 -0500 Subject: [PATCH] Regenerate PostgreSQL migrations --- ...0250217231022_InitialMigration.Designer.cs | 2788 ----------------- .../20260423000000_AddMediaSortOrder.cs | 29 - .../20260513000000_AddGameExternalIds.cs | 99 - ...260613063255_InitialMigration.Designer.cs} | 752 ++++- ....cs => 20260613063255_InitialMigration.cs} | 592 +++- .../DatabaseContextModelSnapshot.cs | 748 ++++- 6 files changed, 1748 insertions(+), 3260 deletions(-) delete mode 100644 LANCommander.Server.Data.PostgreSQL/Migrations/20250217231022_InitialMigration.Designer.cs delete mode 100644 LANCommander.Server.Data.PostgreSQL/Migrations/20260423000000_AddMediaSortOrder.cs delete mode 100644 LANCommander.Server.Data.PostgreSQL/Migrations/20260513000000_AddGameExternalIds.cs rename LANCommander.Server.Data.PostgreSQL/Migrations/{20260423000000_AddMediaSortOrder.Designer.cs => 20260613063255_InitialMigration.Designer.cs} (83%) rename LANCommander.Server.Data.PostgreSQL/Migrations/{20250217231022_InitialMigration.cs => 20260613063255_InitialMigration.cs} (84%) diff --git a/LANCommander.Server.Data.PostgreSQL/Migrations/20250217231022_InitialMigration.Designer.cs b/LANCommander.Server.Data.PostgreSQL/Migrations/20250217231022_InitialMigration.Designer.cs deleted file mode 100644 index 34183525..00000000 --- a/LANCommander.Server.Data.PostgreSQL/Migrations/20250217231022_InitialMigration.Designer.cs +++ /dev/null @@ -1,2788 +0,0 @@ -// -using System; -using LANCommander.Server.Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace LANCommander.Server.Data.PostgreSQL.Migrations -{ - [DbContext(typeof(DatabaseContext))] - [Migration("20250217231022_InitialMigration")] - partial class InitialMigration - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "9.0.2") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("CategoryGame", b => - { - b.Property("CategoriesId") - .HasColumnType("uuid"); - - b.Property("GamesId") - .HasColumnType("uuid"); - - b.HasKey("CategoriesId", "GamesId"); - - b.HasIndex("GamesId"); - - b.ToTable("CategoryGame"); - }); - - modelBuilder.Entity("CollectionGame", b => - { - b.Property("CollectionId") - .HasColumnType("uuid"); - - b.Property("GameId") - .HasColumnType("uuid"); - - b.HasKey("CollectionId", "GameId"); - - b.HasIndex("GameId"); - - b.ToTable("CollectionGame"); - }); - - modelBuilder.Entity("GameDeveloper", b => - { - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("DeveloperId") - .HasColumnType("uuid"); - - b.HasKey("GameId", "DeveloperId"); - - b.HasIndex("DeveloperId"); - - b.ToTable("GameDeveloper"); - }); - - modelBuilder.Entity("GameGenre", b => - { - b.Property("GamesId") - .HasColumnType("uuid"); - - b.Property("GenresId") - .HasColumnType("uuid"); - - b.HasKey("GamesId", "GenresId"); - - b.HasIndex("GenresId"); - - b.ToTable("GameGenre"); - }); - - modelBuilder.Entity("GamePlatform", b => - { - b.Property("GamesId") - .HasColumnType("uuid"); - - b.Property("PlatformsId") - .HasColumnType("uuid"); - - b.HasKey("GamesId", "PlatformsId"); - - b.HasIndex("PlatformsId"); - - b.ToTable("GamePlatform"); - }); - - modelBuilder.Entity("GamePublisher", b => - { - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("PublisherId") - .HasColumnType("uuid"); - - b.HasKey("GameId", "PublisherId"); - - b.HasIndex("PublisherId"); - - b.ToTable("GamePublisher"); - }); - - modelBuilder.Entity("GameRedistributable", b => - { - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("RedistributableId") - .HasColumnType("uuid"); - - b.HasKey("GameId", "RedistributableId"); - - b.HasIndex("RedistributableId"); - - b.ToTable("GameRedistributable"); - }); - - modelBuilder.Entity("GameTag", b => - { - b.Property("GamesId") - .HasColumnType("uuid"); - - b.Property("TagsId") - .HasColumnType("uuid"); - - b.HasKey("GamesId", "TagsId"); - - b.HasIndex("TagsId"); - - b.ToTable("GameTag"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Action", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Arguments") - .HasColumnType("text"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text"); - - b.Property("Path") - .HasColumnType("text"); - - b.Property("PrimaryAction") - .HasColumnType("boolean"); - - b.Property("ServerId") - .HasColumnType("uuid"); - - b.Property("SortOrder") - .HasColumnType("integer"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("WorkingDirectory") - .HasColumnType("text"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("GameId"); - - b.HasIndex("ServerId"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Actions"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Archive", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Changelog") - .HasColumnType("text"); - - b.Property("CompressedSize") - .HasColumnType("bigint"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("LastVersionId") - .HasColumnType("uuid"); - - b.Property("ObjectKey") - .IsRequired() - .HasColumnType("text"); - - b.Property("RedistributableId") - .HasColumnType("uuid"); - - b.Property("StorageLocationId") - .HasColumnType("uuid"); - - b.Property("UncompressedSize") - .HasColumnType("bigint"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Version") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("GameId"); - - b.HasIndex("LastVersionId"); - - b.HasIndex("RedistributableId"); - - b.HasIndex("StorageLocationId"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Archive"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Category", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text"); - - b.Property("ParentId") - .HasColumnType("uuid"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("ParentId"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Categories"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Collection", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Collections"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Company", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Companies"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Engine", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Engines"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Game", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("BaseGameId") - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Description") - .HasColumnType("text"); - - b.Property("DirectoryName") - .HasColumnType("text"); - - b.Property("EngineId") - .HasColumnType("uuid"); - - b.Property("IGDBId") - .HasColumnType("bigint"); - - b.Property("KeyAllocationMethod") - .HasColumnType("integer"); - - b.Property("Notes") - .HasColumnType("text"); - - b.Property("ReleasedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Singleplayer") - .HasColumnType("boolean"); - - b.Property("SortTitle") - .HasColumnType("text"); - - b.Property("Title") - .IsRequired() - .HasColumnType("text"); - - b.Property("Type") - .HasColumnType("integer"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("ValidKeyRegex") - .HasColumnType("text"); - - b.HasKey("Id"); - - b.HasIndex("BaseGameId"); - - b.HasIndex("CreatedById"); - - b.HasIndex("EngineId"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Games"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.GameCustomField", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("character varying(64)"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(1024) - .HasColumnType("character varying(1024)"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("GameId"); - - b.HasIndex("UpdatedById"); - - b.ToTable("GameCustomField"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.GameSave", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("Size") - .HasColumnType("bigint"); - - b.Property("StorageLocationId") - .HasColumnType("uuid"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("GameId"); - - b.HasIndex("StorageLocationId"); - - b.HasIndex("UpdatedById"); - - b.HasIndex("UserId"); - - b.ToTable("GameSaves"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Genre", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Genres"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Issue", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Description") - .IsRequired() - .HasColumnType("text"); - - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("ResolvedById") - .HasColumnType("uuid"); - - b.Property("ResolvedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("GameId"); - - b.HasIndex("ResolvedById"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Issues"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Key", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("AllocationMethod") - .HasColumnType("integer"); - - b.Property("ClaimedByComputerName") - .HasMaxLength(255) - .HasColumnType("character varying(255)"); - - b.Property("ClaimedByIpv4Address") - .HasMaxLength(15) - .HasColumnType("character varying(15)"); - - b.Property("ClaimedByMacAddress") - .HasMaxLength(17) - .HasColumnType("character varying(17)"); - - b.Property("ClaimedByUserId") - .HasColumnType("uuid"); - - b.Property("ClaimedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)"); - - b.HasKey("Id"); - - b.HasIndex("ClaimedByUserId"); - - b.HasIndex("CreatedById"); - - b.HasIndex("GameId"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Keys"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Library", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("UpdatedById"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Libraries"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Media", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Crc32") - .IsRequired() - .HasMaxLength(8) - .HasColumnType("character varying(8)"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("FileId") - .HasColumnType("uuid"); - - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("MimeType") - .HasMaxLength(255) - .HasColumnType("character varying(255)"); - - b.Property("Name") - .HasMaxLength(64) - .HasColumnType("character varying(64)"); - - b.Property("SourceUrl") - .HasMaxLength(2048) - .HasColumnType("character varying(2048)"); - - b.Property("StorageLocationId") - .HasColumnType("uuid"); - - b.Property("ThumbnailId") - .HasColumnType("uuid"); - - b.Property("Type") - .HasColumnType("integer"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("GameId"); - - b.HasIndex("StorageLocationId"); - - b.HasIndex("ThumbnailId") - .IsUnique(); - - b.HasIndex("UpdatedById"); - - b.HasIndex("UserId"); - - b.ToTable("Media"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.MultiplayerMode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Description") - .HasColumnType("text"); - - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("MaxPlayers") - .HasColumnType("integer"); - - b.Property("MinPlayers") - .HasColumnType("integer"); - - b.Property("NetworkProtocol") - .HasColumnType("integer"); - - b.Property("Spectators") - .HasColumnType("integer"); - - b.Property("Type") - .HasColumnType("integer"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("GameId"); - - b.HasIndex("UpdatedById"); - - b.ToTable("MultiplayerModes"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Page", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Contents") - .IsRequired() - .HasColumnType("text"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("ParentId") - .HasColumnType("uuid"); - - b.Property("Route") - .IsRequired() - .HasMaxLength(2048) - .HasColumnType("character varying(2048)"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("SortOrder") - .HasColumnType("integer"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("ParentId"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Pages"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Platform", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Platforms"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.PlaySession", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("End") - .HasColumnType("timestamp with time zone"); - - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("Start") - .HasColumnType("timestamp with time zone"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("GameId"); - - b.HasIndex("UpdatedById"); - - b.HasIndex("UserId"); - - b.ToTable("PlaySessions"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Redistributable", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Description") - .HasColumnType("text"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text"); - - b.Property("Notes") - .HasColumnType("text"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Redistributables"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Role", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasColumnType("text"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Name") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("NormalizedName") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasDatabaseName("RoleNameIndex"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Roles", (string)null); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.SavePath", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("IsRegex") - .HasColumnType("boolean"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text"); - - b.Property("Type") - .HasColumnType("integer"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("WorkingDirectory") - .HasColumnType("text"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("GameId"); - - b.HasIndex("UpdatedById"); - - b.ToTable("SavePaths"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Script", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Contents") - .IsRequired() - .HasColumnType("text"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Description") - .HasColumnType("text"); - - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text"); - - b.Property("RedistributableId") - .HasColumnType("uuid"); - - b.Property("RequiresAdmin") - .HasColumnType("boolean"); - - b.Property("ServerId") - .HasColumnType("uuid"); - - b.Property("Type") - .HasColumnType("integer"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("GameId"); - - b.HasIndex("RedistributableId"); - - b.HasIndex("ServerId"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Scripts"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Server", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Arguments") - .IsRequired() - .HasColumnType("text"); - - b.Property("Autostart") - .HasColumnType("boolean"); - - b.Property("AutostartDelay") - .HasColumnType("integer"); - - b.Property("AutostartMethod") - .HasColumnType("integer"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("Host") - .IsRequired() - .HasColumnType("text"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text"); - - b.Property("OnStartScriptPath") - .IsRequired() - .HasColumnType("text"); - - b.Property("OnStopScriptPath") - .IsRequired() - .HasColumnType("text"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text"); - - b.Property("Port") - .HasColumnType("integer"); - - b.Property("ProcessTerminationMethod") - .HasColumnType("integer"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("UseShellExecute") - .HasColumnType("boolean"); - - b.Property("WorkingDirectory") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("GameId"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Servers"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.ServerConsole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Host") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("character varying(64)"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("character varying(128)"); - - b.Property("Path") - .IsRequired() - .HasMaxLength(1024) - .HasColumnType("character varying(1024)"); - - b.Property("Port") - .HasColumnType("integer"); - - b.Property("ServerId") - .HasColumnType("uuid"); - - b.Property("Type") - .HasColumnType("integer"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("ServerId"); - - b.HasIndex("UpdatedById"); - - b.ToTable("ServerConsoles"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.ServerHttpPath", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("LocalPath") - .IsRequired() - .HasMaxLength(1024) - .HasColumnType("character varying(1024)"); - - b.Property("Path") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("ServerId") - .HasColumnType("uuid"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("ServerId"); - - b.HasIndex("UpdatedById"); - - b.ToTable("ServerHttpPath"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.StorageLocation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Default") - .HasColumnType("boolean"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text"); - - b.Property("Type") - .HasColumnType("integer"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("UpdatedById"); - - b.ToTable("StorageLocations"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Tag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("AccessFailedCount") - .HasColumnType("integer"); - - b.Property("Alias") - .HasColumnType("text"); - - b.Property("Approved") - .HasColumnType("boolean"); - - b.Property("ApprovedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasColumnType("text"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Email") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("EmailConfirmed") - .HasColumnType("boolean"); - - b.Property("LockoutEnabled") - .HasColumnType("boolean"); - - b.Property("LockoutEnd") - .HasColumnType("timestamp with time zone"); - - b.Property("NormalizedEmail") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("NormalizedUserName") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("PasswordHash") - .HasColumnType("text"); - - b.Property("PhoneNumber") - .HasColumnType("text"); - - b.Property("PhoneNumberConfirmed") - .HasColumnType("boolean"); - - b.Property("RefreshToken") - .HasColumnType("text"); - - b.Property("RefreshTokenExpiration") - .HasColumnType("timestamp with time zone"); - - b.Property("SecurityStamp") - .HasColumnType("text"); - - b.Property("TwoFactorEnabled") - .HasColumnType("boolean"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("UserName") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("NormalizedEmail") - .HasDatabaseName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasDatabaseName("UserNameIndex"); - - b.HasIndex("UpdatedById"); - - b.ToTable("Users", (string)null); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.UserCustomField", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("CreatedById") - .HasColumnType("uuid"); - - b.Property("CreatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("character varying(64)"); - - b.Property("UpdatedById") - .HasColumnType("uuid"); - - b.Property("UpdatedOn") - .HasColumnType("timestamp with time zone"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(1024) - .HasColumnType("character varying(1024)"); - - b.HasKey("Id"); - - b.HasIndex("CreatedById"); - - b.HasIndex("UpdatedById"); - - b.HasIndex("UserId"); - - b.ToTable("UserCustomField"); - }); - - modelBuilder.Entity("LibraryGame", b => - { - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("LibraryId") - .HasColumnType("uuid"); - - b.HasKey("GameId", "LibraryId"); - - b.HasIndex("LibraryId"); - - b.ToTable("LibraryGame"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClaimType") - .HasColumnType("text"); - - b.Property("ClaimValue") - .HasColumnType("text"); - - b.Property("RoleId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("RoleClaims", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClaimType") - .HasColumnType("text"); - - b.Property("ClaimValue") - .HasColumnType("text"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("UserClaims", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider") - .HasColumnType("text"); - - b.Property("ProviderKey") - .HasColumnType("text"); - - b.Property("ProviderDisplayName") - .HasColumnType("text"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("UserLogins", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId") - .HasColumnType("uuid"); - - b.Property("RoleId") - .HasColumnType("uuid"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("UserRoles", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId") - .HasColumnType("uuid"); - - b.Property("LoginProvider") - .HasColumnType("text"); - - b.Property("Name") - .HasColumnType("text"); - - b.Property("Value") - .HasColumnType("text"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("UserTokens", (string)null); - }); - - modelBuilder.Entity("PageGame", b => - { - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("PageId") - .HasColumnType("uuid"); - - b.HasKey("GameId", "PageId"); - - b.HasIndex("PageId"); - - b.ToTable("PageGame"); - }); - - modelBuilder.Entity("PageRedistributable", b => - { - b.Property("PageId") - .HasColumnType("uuid"); - - b.Property("RedistributableId") - .HasColumnType("uuid"); - - b.HasKey("PageId", "RedistributableId"); - - b.HasIndex("RedistributableId"); - - b.ToTable("PageRedistributable"); - }); - - modelBuilder.Entity("PageServer", b => - { - b.Property("PageId") - .HasColumnType("uuid"); - - b.Property("ServerId") - .HasColumnType("uuid"); - - b.HasKey("PageId", "ServerId"); - - b.HasIndex("ServerId"); - - b.ToTable("PageServer"); - }); - - modelBuilder.Entity("RoleCollection", b => - { - b.Property("CollectionId") - .HasColumnType("uuid"); - - b.Property("RoleId") - .HasColumnType("uuid"); - - b.HasKey("CollectionId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("RoleCollection"); - }); - - modelBuilder.Entity("CategoryGame", b => - { - b.HasOne("LANCommander.Server.Data.Models.Category", null) - .WithMany() - .HasForeignKey("CategoriesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Game", null) - .WithMany() - .HasForeignKey("GamesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("CollectionGame", b => - { - b.HasOne("LANCommander.Server.Data.Models.Collection", null) - .WithMany() - .HasForeignKey("CollectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Game", null) - .WithMany() - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("GameDeveloper", b => - { - b.HasOne("LANCommander.Server.Data.Models.Company", null) - .WithMany() - .HasForeignKey("DeveloperId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Game", null) - .WithMany() - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("GameGenre", b => - { - b.HasOne("LANCommander.Server.Data.Models.Game", null) - .WithMany() - .HasForeignKey("GamesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Genre", null) - .WithMany() - .HasForeignKey("GenresId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("GamePlatform", b => - { - b.HasOne("LANCommander.Server.Data.Models.Game", null) - .WithMany() - .HasForeignKey("GamesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Platform", null) - .WithMany() - .HasForeignKey("PlatformsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("GamePublisher", b => - { - b.HasOne("LANCommander.Server.Data.Models.Game", null) - .WithMany() - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Company", null) - .WithMany() - .HasForeignKey("PublisherId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("GameRedistributable", b => - { - b.HasOne("LANCommander.Server.Data.Models.Game", null) - .WithMany() - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Redistributable", null) - .WithMany() - .HasForeignKey("RedistributableId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("GameTag", b => - { - b.HasOne("LANCommander.Server.Data.Models.Game", null) - .WithMany() - .HasForeignKey("GamesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Tag", null) - .WithMany() - .HasForeignKey("TagsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Action", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Game", "Game") - .WithMany("Actions") - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("LANCommander.Server.Data.Models.Server", "Server") - .WithMany("Actions") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("Game"); - - b.Navigation("Server"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Archive", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Game", "Game") - .WithMany("Archives") - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("LANCommander.Server.Data.Models.Archive", "LastVersion") - .WithMany() - .HasForeignKey("LastVersionId"); - - b.HasOne("LANCommander.Server.Data.Models.Redistributable", "Redistributable") - .WithMany("Archives") - .HasForeignKey("RedistributableId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("LANCommander.Server.Data.Models.StorageLocation", "StorageLocation") - .WithMany("Archives") - .HasForeignKey("StorageLocationId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("Game"); - - b.Navigation("LastVersion"); - - b.Navigation("Redistributable"); - - b.Navigation("StorageLocation"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Category", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Category", "Parent") - .WithMany("Children") - .HasForeignKey("ParentId"); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("Parent"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Collection", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Company", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Engine", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById"); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById"); - - b.Navigation("CreatedBy"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Game", b => - { - b.HasOne("LANCommander.Server.Data.Models.Game", "BaseGame") - .WithMany("DependentGames") - .HasForeignKey("BaseGameId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Engine", "Engine") - .WithMany("Games") - .HasForeignKey("EngineId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("BaseGame"); - - b.Navigation("CreatedBy"); - - b.Navigation("Engine"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.GameCustomField", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById"); - - b.HasOne("LANCommander.Server.Data.Models.Game", "Game") - .WithMany("CustomFields") - .HasForeignKey("GameId"); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById"); - - b.Navigation("CreatedBy"); - - b.Navigation("Game"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.GameSave", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Game", "Game") - .WithMany("GameSaves") - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.StorageLocation", "StorageLocation") - .WithMany("GameSaves") - .HasForeignKey("StorageLocationId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "User") - .WithMany("GameSaves") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("CreatedBy"); - - b.Navigation("Game"); - - b.Navigation("StorageLocation"); - - b.Navigation("UpdatedBy"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Genre", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Issue", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Game", "Game") - .WithMany("Issues") - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.User", "ResolvedBy") - .WithMany() - .HasForeignKey("ResolvedById"); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("Game"); - - b.Navigation("ResolvedBy"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Key", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "ClaimedByUser") - .WithMany() - .HasForeignKey("ClaimedByUserId"); - - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Game", "Game") - .WithMany("Keys") - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("ClaimedByUser"); - - b.Navigation("CreatedBy"); - - b.Navigation("Game"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Library", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "User") - .WithOne("Library") - .HasForeignKey("LANCommander.Server.Data.Models.Library", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("CreatedBy"); - - b.Navigation("UpdatedBy"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Media", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Game", "Game") - .WithMany("Media") - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("LANCommander.Server.Data.Models.StorageLocation", "StorageLocation") - .WithMany("Media") - .HasForeignKey("StorageLocationId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Media", "Thumbnail") - .WithOne("Parent") - .HasForeignKey("LANCommander.Server.Data.Models.Media", "ThumbnailId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "User") - .WithMany("Media") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - - b.Navigation("CreatedBy"); - - b.Navigation("Game"); - - b.Navigation("StorageLocation"); - - b.Navigation("Thumbnail"); - - b.Navigation("UpdatedBy"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.MultiplayerMode", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Game", "Game") - .WithMany("MultiplayerModes") - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("Game"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Page", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Page", "Parent") - .WithMany("Children") - .HasForeignKey("ParentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("Parent"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Platform", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.PlaySession", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Game", "Game") - .WithMany("PlaySessions") - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "User") - .WithMany("PlaySessions") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("CreatedBy"); - - b.Navigation("Game"); - - b.Navigation("UpdatedBy"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Redistributable", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Role", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.SavePath", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Game", "Game") - .WithMany("SavePaths") - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("Game"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Script", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Game", "Game") - .WithMany("Scripts") - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("LANCommander.Server.Data.Models.Redistributable", "Redistributable") - .WithMany("Scripts") - .HasForeignKey("RedistributableId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("LANCommander.Server.Data.Models.Server", "Server") - .WithMany("Scripts") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("Game"); - - b.Navigation("Redistributable"); - - b.Navigation("Server"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Server", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Game", "Game") - .WithMany("Servers") - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("Game"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.ServerConsole", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Server", "Server") - .WithMany("ServerConsoles") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("Server"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.ServerHttpPath", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.Server", "Server") - .WithMany("HttpPaths") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("Server"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.StorageLocation", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById"); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById"); - - b.Navigation("CreatedBy"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Tag", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.User", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.Navigation("CreatedBy"); - - b.Navigation("UpdatedBy"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.UserCustomField", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") - .WithMany() - .HasForeignKey("CreatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") - .WithMany() - .HasForeignKey("UpdatedById") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("LANCommander.Server.Data.Models.User", "User") - .WithMany("CustomFields") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("CreatedBy"); - - b.Navigation("UpdatedBy"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("LibraryGame", b => - { - b.HasOne("LANCommander.Server.Data.Models.Game", null) - .WithMany() - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Library", null) - .WithMany() - .HasForeignKey("LibraryId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("LANCommander.Server.Data.Models.Role", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("LANCommander.Server.Data.Models.Role", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("PageGame", b => - { - b.HasOne("LANCommander.Server.Data.Models.Game", null) - .WithMany() - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Page", null) - .WithMany() - .HasForeignKey("PageId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("PageRedistributable", b => - { - b.HasOne("LANCommander.Server.Data.Models.Page", null) - .WithMany() - .HasForeignKey("PageId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Redistributable", null) - .WithMany() - .HasForeignKey("RedistributableId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("PageServer", b => - { - b.HasOne("LANCommander.Server.Data.Models.Page", null) - .WithMany() - .HasForeignKey("PageId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Server", null) - .WithMany() - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("RoleCollection", b => - { - b.HasOne("LANCommander.Server.Data.Models.Collection", null) - .WithMany() - .HasForeignKey("CollectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.Role", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Category", b => - { - b.Navigation("Children"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Engine", b => - { - b.Navigation("Games"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Game", b => - { - b.Navigation("Actions"); - - b.Navigation("Archives"); - - b.Navigation("CustomFields"); - - b.Navigation("DependentGames"); - - b.Navigation("GameSaves"); - - b.Navigation("Issues"); - - b.Navigation("Keys"); - - b.Navigation("Media"); - - b.Navigation("MultiplayerModes"); - - b.Navigation("PlaySessions"); - - b.Navigation("SavePaths"); - - b.Navigation("Scripts"); - - b.Navigation("Servers"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Media", b => - { - b.Navigation("Parent"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Page", b => - { - b.Navigation("Children"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Redistributable", b => - { - b.Navigation("Archives"); - - b.Navigation("Scripts"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.Server", b => - { - b.Navigation("Actions"); - - b.Navigation("HttpPaths"); - - b.Navigation("Scripts"); - - b.Navigation("ServerConsoles"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.StorageLocation", b => - { - b.Navigation("Archives"); - - b.Navigation("GameSaves"); - - b.Navigation("Media"); - }); - - modelBuilder.Entity("LANCommander.Server.Data.Models.User", b => - { - b.Navigation("CustomFields"); - - b.Navigation("GameSaves"); - - b.Navigation("Library") - .IsRequired(); - - b.Navigation("Media"); - - b.Navigation("PlaySessions"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/LANCommander.Server.Data.PostgreSQL/Migrations/20260423000000_AddMediaSortOrder.cs b/LANCommander.Server.Data.PostgreSQL/Migrations/20260423000000_AddMediaSortOrder.cs deleted file mode 100644 index 58e51380..00000000 --- a/LANCommander.Server.Data.PostgreSQL/Migrations/20260423000000_AddMediaSortOrder.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace LANCommander.Server.Data.PostgreSQL.Migrations -{ - /// - public partial class AddMediaSortOrder : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "SortOrder", - table: "Media", - type: "integer", - nullable: false, - defaultValue: 0); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "SortOrder", - table: "Media"); - } - } -} diff --git a/LANCommander.Server.Data.PostgreSQL/Migrations/20260513000000_AddGameExternalIds.cs b/LANCommander.Server.Data.PostgreSQL/Migrations/20260513000000_AddGameExternalIds.cs deleted file mode 100644 index a16e2856..00000000 --- a/LANCommander.Server.Data.PostgreSQL/Migrations/20260513000000_AddGameExternalIds.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace LANCommander.Server.Data.PostgreSQL.Migrations -{ - /// - public partial class AddGameExternalIds : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "GameExternalIds", - columns: table => new - { - Id = table.Column(type: "uuid", nullable: false), - GameId = table.Column(type: "uuid", nullable: true), - Provider = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), - ExternalId = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), - CreatedById = table.Column(type: "uuid", nullable: true), - UpdatedOn = table.Column(type: "timestamp with time zone", nullable: false), - UpdatedById = table.Column(type: "uuid", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_GameExternalIds", x => x.Id); - table.ForeignKey( - name: "FK_GameExternalIds_Games_GameId", - column: x => x.GameId, - principalTable: "Games", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_GameExternalIds_Users_CreatedById", - column: x => x.CreatedById, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - table.ForeignKey( - name: "FK_GameExternalIds_Users_UpdatedById", - column: x => x.UpdatedById, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - }); - - migrationBuilder.CreateIndex( - name: "IX_GameExternalIds_CreatedById", - table: "GameExternalIds", - column: "CreatedById"); - - migrationBuilder.CreateIndex( - name: "IX_GameExternalIds_GameId", - table: "GameExternalIds", - column: "GameId"); - - migrationBuilder.CreateIndex( - name: "IX_GameExternalIds_UpdatedById", - table: "GameExternalIds", - column: "UpdatedById"); - - // Migrate existing IGDBId data - migrationBuilder.Sql(@" - INSERT INTO ""GameExternalIds"" (""Id"", ""GameId"", ""Provider"", ""ExternalId"", ""CreatedOn"", ""UpdatedOn"") - SELECT gen_random_uuid(), ""Id"", 'IGDB', CAST(""IGDBId"" AS TEXT), ""CreatedOn"", ""UpdatedOn"" - FROM ""Games"" - WHERE ""IGDBId"" IS NOT NULL - "); - - migrationBuilder.DropColumn( - name: "IGDBId", - table: "Games"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "IGDBId", - table: "Games", - type: "bigint", - nullable: true); - - // Migrate data back - migrationBuilder.Sql(@" - UPDATE ""Games"" - SET ""IGDBId"" = CAST(e.""ExternalId"" AS BIGINT) - FROM ""GameExternalIds"" e - WHERE e.""GameId"" = ""Games"".""Id"" AND e.""Provider"" = 'IGDB' - "); - - migrationBuilder.DropTable( - name: "GameExternalIds"); - } - } -} diff --git a/LANCommander.Server.Data.PostgreSQL/Migrations/20260423000000_AddMediaSortOrder.Designer.cs b/LANCommander.Server.Data.PostgreSQL/Migrations/20260613063255_InitialMigration.Designer.cs similarity index 83% rename from LANCommander.Server.Data.PostgreSQL/Migrations/20260423000000_AddMediaSortOrder.Designer.cs rename to LANCommander.Server.Data.PostgreSQL/Migrations/20260613063255_InitialMigration.Designer.cs index 1b57472b..1d89d86c 100644 --- a/LANCommander.Server.Data.PostgreSQL/Migrations/20260423000000_AddMediaSortOrder.Designer.cs +++ b/LANCommander.Server.Data.PostgreSQL/Migrations/20260613063255_InitialMigration.Designer.cs @@ -12,15 +12,15 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace LANCommander.Server.Data.PostgreSQL.Migrations { [DbContext(typeof(DatabaseContext))] - [Migration("20260423000000_AddMediaSortOrder")] - partial class AddMediaSortOrder + [Migration("20260613063255_InitialMigration")] + partial class InitialMigration { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "9.0.2") + .HasAnnotation("ProductVersion", "9.0.9") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); @@ -40,6 +40,21 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("CategoryGame"); }); + modelBuilder.Entity("ChatThreadUser", b => + { + b.Property("ChatThreadsId") + .HasColumnType("uuid"); + + b.Property("ParticipantsId") + .HasColumnType("uuid"); + + b.HasKey("ChatThreadsId", "ParticipantsId"); + + b.HasIndex("ParticipantsId"); + + b.ToTable("ChatThreadUser"); + }); + modelBuilder.Entity("CollectionGame", b => { b.Property("CollectionId") @@ -123,6 +138,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("RedistributableId") .HasColumnType("uuid"); + b.Property("Options") + .HasColumnType("text"); + b.HasKey("GameId", "RedistributableId"); b.HasIndex("RedistributableId"); @@ -145,6 +163,21 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("GameTag"); }); + modelBuilder.Entity("GameTool", b => + { + b.Property("GamesId") + .HasColumnType("uuid"); + + b.Property("ToolsId") + .HasColumnType("uuid"); + + b.HasKey("GamesId", "ToolsId"); + + b.HasIndex("ToolsId"); + + b.ToTable("GameTool"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Action", b => { b.Property("Id") @@ -167,6 +200,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .IsRequired() .HasColumnType("text"); + b.Property("OptionOverrides") + .HasColumnType("text"); + b.Property("Path") .HasColumnType("text"); @@ -179,6 +215,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("SortOrder") .HasColumnType("integer"); + b.Property("ToolId") + .HasColumnType("uuid"); + b.Property("UpdatedById") .HasColumnType("uuid"); @@ -196,6 +235,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.HasIndex("ServerId"); + b.HasIndex("ToolId"); + b.HasIndex("UpdatedById"); b.ToTable("Actions"); @@ -235,6 +276,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("StorageLocationId") .HasColumnType("uuid"); + b.Property("ToolId") + .HasColumnType("uuid"); + b.Property("UncompressedSize") .HasColumnType("bigint"); @@ -260,6 +304,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.HasIndex("StorageLocationId"); + b.HasIndex("ToolId"); + b.HasIndex("UpdatedById"); b.ToTable("Archive"); @@ -301,6 +347,94 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("Categories"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Content") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ThreadId") + .HasColumnType("uuid"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("ThreadId"); + + b.HasIndex("UpdatedById"); + + b.ToTable("ChatMessages"); + }); + + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatThread", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("UpdatedById"); + + b.ToTable("ChatThreads"); + }); + + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatThreadReadStatus", b => + { + b.Property("ThreadId") + .HasColumnType("uuid"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("LastReadMessageId") + .HasColumnType("uuid"); + + b.HasKey("ThreadId", "UserId"); + + b.HasIndex("LastReadMessageId"); + + b.HasIndex("UserId"); + + b.ToTable("ChatThreadReadStatuses"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Collection", b => { b.Property("Id") @@ -418,9 +552,6 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("EngineId") .HasColumnType("uuid"); - b.Property("IGDBId") - .HasColumnType("bigint"); - b.Property("KeyAllocationMethod") .HasColumnType("integer"); @@ -507,6 +638,48 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("GameCustomField"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.GameExternalId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ExternalId") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("GameId") + .HasColumnType("uuid"); + + b.Property("Provider") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("GameId"); + + b.HasIndex("UpdatedById"); + + b.ToTable("GameExternalIds"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.GameSave", b => { b.Property("Id") @@ -633,7 +806,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .ValueGeneratedOnAdd() .HasColumnType("uuid"); - b.Property("AllocationMethod") + b.Property("AllocationMethod") .HasColumnType("integer"); b.Property("ClaimedByComputerName") @@ -751,13 +924,13 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .HasMaxLength(64) .HasColumnType("character varying(64)"); + b.Property("SortOrder") + .HasColumnType("integer"); + b.Property("SourceUrl") .HasMaxLength(2048) .HasColumnType("character varying(2048)"); - b.Property("SortOrder") - .HasColumnType("integer"); - b.Property("StorageLocationId") .HasColumnType("uuid"); @@ -881,6 +1054,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .HasMaxLength(256) .HasColumnType("character varying(256)"); + b.Property("ToolId") + .HasColumnType("uuid"); + b.Property("UpdatedById") .HasColumnType("uuid"); @@ -893,6 +1069,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.HasIndex("ParentId"); + b.HasIndex("ToolId"); + b.HasIndex("UpdatedById"); b.ToTable("Pages"); @@ -972,6 +1150,45 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("PlaySessions"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Rating", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("GameId") + .HasColumnType("uuid"); + + b.Property("Source") + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Value") + .HasColumnType("real"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("GameId"); + + b.HasIndex("UpdatedById"); + + b.ToTable("Ratings"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Redistributable", b => { b.Property("Id") @@ -994,6 +1211,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("Notes") .HasColumnType("text"); + b.Property("OptionSchema") + .HasColumnType("text"); + b.Property("UpdatedById") .HasColumnType("uuid"); @@ -1052,6 +1272,30 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("Roles", (string)null); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.RoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("RoleClaims", (string)null); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.SavePath", b => { b.Property("Id") @@ -1132,6 +1376,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("ServerId") .HasColumnType("uuid"); + b.Property("ToolId") + .HasColumnType("uuid"); + b.Property("Type") .HasColumnType("integer"); @@ -1151,6 +1398,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.HasIndex("ServerId"); + b.HasIndex("ToolId"); + b.HasIndex("UpdatedById"); b.ToTable("Scripts"); @@ -1175,12 +1424,23 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("AutostartMethod") .HasColumnType("integer"); + b.Property("ContainerId") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + b.Property("CreatedById") .HasColumnType("uuid"); b.Property("CreatedOn") .HasColumnType("timestamp with time zone"); + b.Property("DockerHostId") + .HasColumnType("uuid"); + + b.Property("Engine") + .HasColumnType("integer"); + b.Property("GameId") .HasColumnType("uuid"); @@ -1210,6 +1470,12 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("ProcessTerminationMethod") .HasColumnType("integer"); + b.Property("RemoteHostId") + .HasColumnType("uuid"); + + b.Property("RemoteServerId") + .HasColumnType("uuid"); + b.Property("UpdatedById") .HasColumnType("uuid"); @@ -1402,6 +1668,43 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("Tags"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Tool", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("UpdatedById"); + + b.ToTable("Tools"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.User", b => { b.Property("Id") @@ -1498,6 +1801,30 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("Users", (string)null); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.UserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserClaims", (string)null); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.UserCustomField", b => { b.Property("Id") @@ -1540,70 +1867,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("UserCustomField"); }); - modelBuilder.Entity("LibraryGame", b => - { - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("LibraryId") - .HasColumnType("uuid"); - - b.HasKey("GameId", "LibraryId"); - - b.HasIndex("LibraryId"); - - b.ToTable("LibraryGame"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClaimType") - .HasColumnType("text"); - - b.Property("ClaimValue") - .HasColumnType("text"); - - b.Property("RoleId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("RoleClaims", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClaimType") - .HasColumnType("text"); - - b.Property("ClaimValue") - .HasColumnType("text"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("UserClaims", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + modelBuilder.Entity("LANCommander.Server.Data.Models.UserLogin", b => { b.Property("LoginProvider") .HasColumnType("text"); @@ -1624,7 +1888,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("UserLogins", (string)null); }); - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + modelBuilder.Entity("LANCommander.Server.Data.Models.UserRole", b => { b.Property("UserId") .HasColumnType("uuid"); @@ -1639,7 +1903,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("UserRoles", (string)null); }); - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + modelBuilder.Entity("LANCommander.Server.Data.Models.UserToken", b => { b.Property("UserId") .HasColumnType("uuid"); @@ -1658,6 +1922,21 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("UserTokens", (string)null); }); + modelBuilder.Entity("LibraryGame", b => + { + b.Property("GameId") + .HasColumnType("uuid"); + + b.Property("LibraryId") + .HasColumnType("uuid"); + + b.HasKey("GameId", "LibraryId"); + + b.HasIndex("LibraryId"); + + b.ToTable("LibraryGame"); + }); + modelBuilder.Entity("PageGame", b => { b.Property("GameId") @@ -1733,6 +2012,21 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .IsRequired(); }); + modelBuilder.Entity("ChatThreadUser", b => + { + b.HasOne("LANCommander.Server.Data.Models.ChatThread", null) + .WithMany() + .HasForeignKey("ChatThreadsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LANCommander.Server.Data.Models.User", null) + .WithMany() + .HasForeignKey("ParticipantsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("CollectionGame", b => { b.HasOne("LANCommander.Server.Data.Models.Collection", null) @@ -1838,6 +2132,21 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .IsRequired(); }); + modelBuilder.Entity("GameTool", b => + { + b.HasOne("LANCommander.Server.Data.Models.Game", null) + .WithMany() + .HasForeignKey("GamesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LANCommander.Server.Data.Models.Tool", null) + .WithMany() + .HasForeignKey("ToolsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Action", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -1855,6 +2164,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .HasForeignKey("ServerId") .OnDelete(DeleteBehavior.Cascade); + b.HasOne("LANCommander.Server.Data.Models.Tool", "Tool") + .WithMany("Actions") + .HasForeignKey("ToolId") + .OnDelete(DeleteBehavior.Cascade); + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") .WithMany() .HasForeignKey("UpdatedById") @@ -1866,6 +2180,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("Server"); + b.Navigation("Tool"); + b.Navigation("UpdatedBy"); }); @@ -1896,6 +2212,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.HasOne("LANCommander.Server.Data.Models.Tool", "Tool") + .WithMany("Archives") + .HasForeignKey("ToolId") + .OnDelete(DeleteBehavior.Cascade); + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") .WithMany() .HasForeignKey("UpdatedById") @@ -1911,6 +2232,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("StorageLocation"); + b.Navigation("Tool"); + b.Navigation("UpdatedBy"); }); @@ -1937,6 +2260,74 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("UpdatedBy"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatMessage", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.ChatThread", "Thread") + .WithMany("Messages") + .HasForeignKey("ThreadId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Thread"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatThread", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatThreadReadStatus", b => + { + b.HasOne("LANCommander.Server.Data.Models.ChatMessage", "LastReadMessage") + .WithMany() + .HasForeignKey("LastReadMessageId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.ChatThread", "Thread") + .WithMany() + .HasForeignKey("ThreadId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LANCommander.Server.Data.Models.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("LastReadMessage"); + + b.Navigation("Thread"); + + b.Navigation("User"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Collection", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -2038,6 +2429,30 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("UpdatedBy"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.GameExternalId", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.Game", "Game") + .WithMany("ExternalIds") + .HasForeignKey("GameId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Game"); + + b.Navigation("UpdatedBy"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.GameSave", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -2265,6 +2680,10 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .HasForeignKey("ParentId") .OnDelete(DeleteBehavior.Cascade); + b.HasOne("LANCommander.Server.Data.Models.Tool", null) + .WithMany("Pages") + .HasForeignKey("ToolId"); + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") .WithMany() .HasForeignKey("UpdatedById") @@ -2326,6 +2745,30 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("User"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Rating", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.Game", "Game") + .WithMany("Ratings") + .HasForeignKey("GameId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Game"); + + b.Navigation("UpdatedBy"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Redistributable", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -2360,6 +2803,15 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("UpdatedBy"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.RoleClaim", b => + { + b.HasOne("LANCommander.Server.Data.Models.Role", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.SavePath", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -2406,6 +2858,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .HasForeignKey("ServerId") .OnDelete(DeleteBehavior.Cascade); + b.HasOne("LANCommander.Server.Data.Models.Tool", "Tool") + .WithMany("Scripts") + .HasForeignKey("ToolId") + .OnDelete(DeleteBehavior.Cascade); + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") .WithMany() .HasForeignKey("UpdatedById") @@ -2419,6 +2876,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("Server"); + b.Navigation("Tool"); + b.Navigation("UpdatedBy"); }); @@ -2528,6 +2987,23 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("UpdatedBy"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Tool", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("UpdatedBy"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.User", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -2545,6 +3021,15 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("UpdatedBy"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.UserClaim", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.UserCustomField", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -2570,6 +3055,43 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("User"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.UserLogin", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("LANCommander.Server.Data.Models.UserRole", b => + { + b.HasOne("LANCommander.Server.Data.Models.Role", "Role") + .WithMany("UserRoles") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LANCommander.Server.Data.Models.User", "User") + .WithMany("UserRoles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Role"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("LANCommander.Server.Data.Models.UserToken", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("LibraryGame", b => { b.HasOne("LANCommander.Server.Data.Models.Game", null) @@ -2585,57 +3107,6 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .IsRequired(); }); - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("LANCommander.Server.Data.Models.Role", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("LANCommander.Server.Data.Models.Role", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - modelBuilder.Entity("PageGame", b => { b.HasOne("LANCommander.Server.Data.Models.Game", null) @@ -2701,6 +3172,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("Children"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatThread", b => + { + b.Navigation("Messages"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Engine", b => { b.Navigation("Games"); @@ -2716,6 +3192,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("DependentGames"); + b.Navigation("ExternalIds"); + b.Navigation("GameSaves"); b.Navigation("Issues"); @@ -2728,6 +3206,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("PlaySessions"); + b.Navigation("Ratings"); + b.Navigation("SavePaths"); b.Navigation("Scripts"); @@ -2752,6 +3232,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("Scripts"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Role", b => + { + b.Navigation("UserRoles"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Server", b => { b.Navigation("Actions"); @@ -2772,6 +3257,17 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("Media"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Tool", b => + { + b.Navigation("Actions"); + + b.Navigation("Archives"); + + b.Navigation("Pages"); + + b.Navigation("Scripts"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.User", b => { b.Navigation("CustomFields"); @@ -2784,6 +3280,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("Media"); b.Navigation("PlaySessions"); + + b.Navigation("UserRoles"); }); #pragma warning restore 612, 618 } diff --git a/LANCommander.Server.Data.PostgreSQL/Migrations/20250217231022_InitialMigration.cs b/LANCommander.Server.Data.PostgreSQL/Migrations/20260613063255_InitialMigration.cs similarity index 84% rename from LANCommander.Server.Data.PostgreSQL/Migrations/20250217231022_InitialMigration.cs rename to LANCommander.Server.Data.PostgreSQL/Migrations/20260613063255_InitialMigration.cs index 7f5032be..ebc059d7 100644 --- a/LANCommander.Server.Data.PostgreSQL/Migrations/20250217231022_InitialMigration.cs +++ b/LANCommander.Server.Data.PostgreSQL/Migrations/20260613063255_InitialMigration.cs @@ -92,6 +92,34 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations onDelete: ReferentialAction.SetNull); }); + migrationBuilder.CreateTable( + name: "ChatThreads", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + Name = table.Column(type: "character varying(64)", maxLength: 64, nullable: true), + CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), + CreatedById = table.Column(type: "uuid", nullable: true), + UpdatedOn = table.Column(type: "timestamp with time zone", nullable: false), + UpdatedById = table.Column(type: "uuid", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ChatThreads", x => x.Id); + table.ForeignKey( + name: "FK_ChatThreads_Users_CreatedById", + column: x => x.CreatedById, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + table.ForeignKey( + name: "FK_ChatThreads_Users_UpdatedById", + column: x => x.UpdatedById, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + }); + migrationBuilder.CreateTable( name: "Collections", columns: table => new @@ -125,11 +153,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations columns: table => new { Id = table.Column(type: "uuid", nullable: false), - Name = table.Column(type: "text", nullable: false), CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), CreatedById = table.Column(type: "uuid", nullable: true), UpdatedOn = table.Column(type: "timestamp with time zone", nullable: false), - UpdatedById = table.Column(type: "uuid", nullable: true) + UpdatedById = table.Column(type: "uuid", nullable: true), + Name = table.Column(type: "text", nullable: false) }, constraints: table => { @@ -236,45 +264,6 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations onDelete: ReferentialAction.Cascade); }); - migrationBuilder.CreateTable( - name: "Pages", - columns: table => new - { - Id = table.Column(type: "uuid", nullable: false), - Title = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - Slug = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), - Route = table.Column(type: "character varying(2048)", maxLength: 2048, nullable: false), - Contents = table.Column(type: "text", nullable: false), - SortOrder = table.Column(type: "integer", nullable: false), - ParentId = table.Column(type: "uuid", nullable: true), - CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), - CreatedById = table.Column(type: "uuid", nullable: true), - UpdatedOn = table.Column(type: "timestamp with time zone", nullable: false), - UpdatedById = table.Column(type: "uuid", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Pages", x => x.Id); - table.ForeignKey( - name: "FK_Pages_Pages_ParentId", - column: x => x.ParentId, - principalTable: "Pages", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_Pages_Users_CreatedById", - column: x => x.CreatedById, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - table.ForeignKey( - name: "FK_Pages_Users_UpdatedById", - column: x => x.UpdatedById, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - }); - migrationBuilder.CreateTable( name: "Platforms", columns: table => new @@ -311,6 +300,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations Name = table.Column(type: "text", nullable: false), Description = table.Column(type: "text", nullable: true), Notes = table.Column(type: "text", nullable: true), + OptionSchema = table.Column(type: "text", nullable: true), CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), CreatedById = table.Column(type: "uuid", nullable: true), UpdatedOn = table.Column(type: "timestamp with time zone", nullable: false), @@ -419,6 +409,36 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations onDelete: ReferentialAction.SetNull); }); + migrationBuilder.CreateTable( + name: "Tools", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + Name = table.Column(type: "text", nullable: false), + Description = table.Column(type: "text", nullable: true), + Notes = table.Column(type: "text", nullable: true), + CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), + CreatedById = table.Column(type: "uuid", nullable: true), + UpdatedOn = table.Column(type: "timestamp with time zone", nullable: false), + UpdatedById = table.Column(type: "uuid", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Tools", x => x.Id); + table.ForeignKey( + name: "FK_Tools_Users_CreatedById", + column: x => x.CreatedById, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + table.ForeignKey( + name: "FK_Tools_Users_UpdatedById", + column: x => x.UpdatedById, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + }); + migrationBuilder.CreateTable( name: "UserClaims", columns: table => new @@ -516,12 +536,70 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "ChatMessages", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + ThreadId = table.Column(type: "uuid", nullable: false), + Content = table.Column(type: "character varying(2000)", maxLength: 2000, nullable: false), + CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), + CreatedById = table.Column(type: "uuid", nullable: true), + UpdatedOn = table.Column(type: "timestamp with time zone", nullable: false), + UpdatedById = table.Column(type: "uuid", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ChatMessages", x => x.Id); + table.ForeignKey( + name: "FK_ChatMessages_ChatThreads_ThreadId", + column: x => x.ThreadId, + principalTable: "ChatThreads", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ChatMessages_Users_CreatedById", + column: x => x.CreatedById, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + table.ForeignKey( + name: "FK_ChatMessages_Users_UpdatedById", + column: x => x.UpdatedById, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + }); + + migrationBuilder.CreateTable( + name: "ChatThreadUser", + columns: table => new + { + ChatThreadsId = table.Column(type: "uuid", nullable: false), + ParticipantsId = table.Column(type: "uuid", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ChatThreadUser", x => new { x.ChatThreadsId, x.ParticipantsId }); + table.ForeignKey( + name: "FK_ChatThreadUser_ChatThreads_ChatThreadsId", + column: x => x.ChatThreadsId, + principalTable: "ChatThreads", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ChatThreadUser_Users_ParticipantsId", + column: x => x.ParticipantsId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "Games", columns: table => new { Id = table.Column(type: "uuid", nullable: false), - IGDBId = table.Column(type: "bigint", nullable: true), Title = table.Column(type: "text", nullable: false), SortTitle = table.Column(type: "text", nullable: true), DirectoryName = table.Column(type: "text", nullable: true), @@ -568,30 +646,6 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations onDelete: ReferentialAction.SetNull); }); - migrationBuilder.CreateTable( - name: "PageRedistributable", - columns: table => new - { - PageId = table.Column(type: "uuid", nullable: false), - RedistributableId = table.Column(type: "uuid", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_PageRedistributable", x => new { x.PageId, x.RedistributableId }); - table.ForeignKey( - name: "FK_PageRedistributable_Pages_PageId", - column: x => x.PageId, - principalTable: "Pages", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_PageRedistributable_Redistributables_RedistributableId", - column: x => x.RedistributableId, - principalTable: "Redistributables", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - migrationBuilder.CreateTable( name: "RoleClaims", columns: table => new @@ -661,6 +715,82 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "Pages", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + Title = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), + Slug = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), + Route = table.Column(type: "character varying(2048)", maxLength: 2048, nullable: false), + Contents = table.Column(type: "text", nullable: false), + SortOrder = table.Column(type: "integer", nullable: false), + ParentId = table.Column(type: "uuid", nullable: true), + ToolId = table.Column(type: "uuid", nullable: true), + CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), + CreatedById = table.Column(type: "uuid", nullable: true), + UpdatedOn = table.Column(type: "timestamp with time zone", nullable: false), + UpdatedById = table.Column(type: "uuid", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Pages", x => x.Id); + table.ForeignKey( + name: "FK_Pages_Pages_ParentId", + column: x => x.ParentId, + principalTable: "Pages", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Pages_Tools_ToolId", + column: x => x.ToolId, + principalTable: "Tools", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_Pages_Users_CreatedById", + column: x => x.CreatedById, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + table.ForeignKey( + name: "FK_Pages_Users_UpdatedById", + column: x => x.UpdatedById, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + }); + + migrationBuilder.CreateTable( + name: "ChatThreadReadStatuses", + columns: table => new + { + ThreadId = table.Column(type: "uuid", nullable: false), + UserId = table.Column(type: "uuid", nullable: false), + LastReadMessageId = table.Column(type: "uuid", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ChatThreadReadStatuses", x => new { x.ThreadId, x.UserId }); + table.ForeignKey( + name: "FK_ChatThreadReadStatuses_ChatMessages_LastReadMessageId", + column: x => x.LastReadMessageId, + principalTable: "ChatMessages", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + table.ForeignKey( + name: "FK_ChatThreadReadStatuses_ChatThreads_ThreadId", + column: x => x.ThreadId, + principalTable: "ChatThreads", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ChatThreadReadStatuses_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "Archive", columns: table => new @@ -672,6 +802,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations StorageLocationId = table.Column(type: "uuid", nullable: false), GameId = table.Column(type: "uuid", nullable: true), RedistributableId = table.Column(type: "uuid", nullable: true), + ToolId = table.Column(type: "uuid", nullable: true), LastVersionId = table.Column(type: "uuid", nullable: true), UncompressedSize = table.Column(type: "bigint", nullable: false), CompressedSize = table.Column(type: "bigint", nullable: false), @@ -706,6 +837,12 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations principalTable: "StorageLocations", principalColumn: "Id", onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Archive_Tools_ToolId", + column: x => x.ToolId, + principalTable: "Tools", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Archive_Users_CreatedById", column: x => x.CreatedById, @@ -825,6 +962,42 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "GameExternalIds", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + GameId = table.Column(type: "uuid", nullable: true), + Provider = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), + ExternalId = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), + CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), + CreatedById = table.Column(type: "uuid", nullable: true), + UpdatedOn = table.Column(type: "timestamp with time zone", nullable: false), + UpdatedById = table.Column(type: "uuid", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_GameExternalIds", x => x.Id); + table.ForeignKey( + name: "FK_GameExternalIds_Games_GameId", + column: x => x.GameId, + principalTable: "Games", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_GameExternalIds_Users_CreatedById", + column: x => x.CreatedById, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + table.ForeignKey( + name: "FK_GameExternalIds_Users_UpdatedById", + column: x => x.UpdatedById, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + }); + migrationBuilder.CreateTable( name: "GameGenre", columns: table => new @@ -902,7 +1075,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations columns: table => new { GameId = table.Column(type: "uuid", nullable: false), - RedistributableId = table.Column(type: "uuid", nullable: false) + RedistributableId = table.Column(type: "uuid", nullable: false), + Options = table.Column(type: "text", nullable: true) }, constraints: table => { @@ -994,6 +1168,30 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "GameTool", + columns: table => new + { + GamesId = table.Column(type: "uuid", nullable: false), + ToolsId = table.Column(type: "uuid", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_GameTool", x => new { x.GamesId, x.ToolsId }); + table.ForeignKey( + name: "FK_GameTool_Games_GamesId", + column: x => x.GamesId, + principalTable: "Games", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_GameTool_Tools_ToolsId", + column: x => x.ToolsId, + principalTable: "Tools", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "Issues", columns: table => new @@ -1043,7 +1241,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations Id = table.Column(type: "uuid", nullable: false), Value = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), GameId = table.Column(type: "uuid", nullable: false), - AllocationMethod = table.Column(type: "integer", nullable: false), + AllocationMethod = table.Column(type: "integer", nullable: true), ClaimedByMacAddress = table.Column(type: "character varying(17)", maxLength: 17, nullable: true), ClaimedByIpv4Address = table.Column(type: "character varying(15)", maxLength: 15, nullable: true), ClaimedByComputerName = table.Column(type: "character varying(255)", maxLength: 255, nullable: true), @@ -1117,6 +1315,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations SourceUrl = table.Column(type: "character varying(2048)", maxLength: 2048, nullable: true), MimeType = table.Column(type: "character varying(255)", maxLength: 255, nullable: true), Crc32 = table.Column(type: "character varying(8)", maxLength: 8, nullable: false), + SortOrder = table.Column(type: "integer", nullable: false), ThumbnailId = table.Column(type: "uuid", nullable: true), StorageLocationId = table.Column(type: "uuid", nullable: false), GameId = table.Column(type: "uuid", nullable: true), @@ -1207,30 +1406,6 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations onDelete: ReferentialAction.SetNull); }); - migrationBuilder.CreateTable( - name: "PageGame", - columns: table => new - { - GameId = table.Column(type: "uuid", nullable: false), - PageId = table.Column(type: "uuid", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_PageGame", x => new { x.GameId, x.PageId }); - table.ForeignKey( - name: "FK_PageGame_Games_GameId", - column: x => x.GameId, - principalTable: "Games", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_PageGame_Pages_PageId", - column: x => x.PageId, - principalTable: "Pages", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - migrationBuilder.CreateTable( name: "PlaySessions", columns: table => new @@ -1274,6 +1449,42 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "Ratings", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + GameId = table.Column(type: "uuid", nullable: true), + Source = table.Column(type: "character varying(128)", maxLength: 128, nullable: true), + Value = table.Column(type: "real", nullable: false), + CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), + CreatedById = table.Column(type: "uuid", nullable: true), + UpdatedOn = table.Column(type: "timestamp with time zone", nullable: false), + UpdatedById = table.Column(type: "uuid", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Ratings", x => x.Id); + table.ForeignKey( + name: "FK_Ratings_Games_GameId", + column: x => x.GameId, + principalTable: "Games", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + table.ForeignKey( + name: "FK_Ratings_Users_CreatedById", + column: x => x.CreatedById, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + table.ForeignKey( + name: "FK_Ratings_Users_UpdatedById", + column: x => x.UpdatedById, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + }); + migrationBuilder.CreateTable( name: "SavePaths", columns: table => new @@ -1318,11 +1529,16 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations { Id = table.Column(type: "uuid", nullable: false), Name = table.Column(type: "text", nullable: false), + Engine = table.Column(type: "integer", nullable: false), Path = table.Column(type: "text", nullable: false), Arguments = table.Column(type: "text", nullable: false), WorkingDirectory = table.Column(type: "text", nullable: false), OnStartScriptPath = table.Column(type: "text", nullable: false), OnStopScriptPath = table.Column(type: "text", nullable: false), + DockerHostId = table.Column(type: "uuid", nullable: true), + RemoteHostId = table.Column(type: "uuid", nullable: true), + RemoteServerId = table.Column(type: "uuid", nullable: true), + ContainerId = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), Host = table.Column(type: "text", nullable: false), Port = table.Column(type: "integer", nullable: false), UseShellExecute = table.Column(type: "boolean", nullable: false), @@ -1359,6 +1575,54 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations onDelete: ReferentialAction.SetNull); }); + migrationBuilder.CreateTable( + name: "PageGame", + columns: table => new + { + GameId = table.Column(type: "uuid", nullable: false), + PageId = table.Column(type: "uuid", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_PageGame", x => new { x.GameId, x.PageId }); + table.ForeignKey( + name: "FK_PageGame_Games_GameId", + column: x => x.GameId, + principalTable: "Games", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_PageGame_Pages_PageId", + column: x => x.PageId, + principalTable: "Pages", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "PageRedistributable", + columns: table => new + { + PageId = table.Column(type: "uuid", nullable: false), + RedistributableId = table.Column(type: "uuid", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_PageRedistributable", x => new { x.PageId, x.RedistributableId }); + table.ForeignKey( + name: "FK_PageRedistributable_Pages_PageId", + column: x => x.PageId, + principalTable: "Pages", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_PageRedistributable_Redistributables_RedistributableId", + column: x => x.RedistributableId, + principalTable: "Redistributables", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "Actions", columns: table => new @@ -1370,8 +1634,10 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations WorkingDirectory = table.Column(type: "text", nullable: true), PrimaryAction = table.Column(type: "boolean", nullable: false), SortOrder = table.Column(type: "integer", nullable: false), + OptionOverrides = table.Column(type: "text", nullable: true), GameId = table.Column(type: "uuid", nullable: true), ServerId = table.Column(type: "uuid", nullable: true), + ToolId = table.Column(type: "uuid", nullable: true), CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), CreatedById = table.Column(type: "uuid", nullable: true), UpdatedOn = table.Column(type: "timestamp with time zone", nullable: false), @@ -1392,6 +1658,12 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations principalTable: "Servers", principalColumn: "Id", onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Actions_Tools_ToolId", + column: x => x.ToolId, + principalTable: "Tools", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Actions_Users_CreatedById", column: x => x.CreatedById, @@ -1442,6 +1714,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations RequiresAdmin = table.Column(type: "boolean", nullable: false), GameId = table.Column(type: "uuid", nullable: true), RedistributableId = table.Column(type: "uuid", nullable: true), + ToolId = table.Column(type: "uuid", nullable: true), ServerId = table.Column(type: "uuid", nullable: true), CreatedOn = table.Column(type: "timestamp with time zone", nullable: false), CreatedById = table.Column(type: "uuid", nullable: true), @@ -1469,6 +1742,12 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations principalTable: "Servers", principalColumn: "Id", onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Scripts_Tools_ToolId", + column: x => x.ToolId, + principalTable: "Tools", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Scripts_Users_CreatedById", column: x => x.CreatedById, @@ -1574,6 +1853,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations table: "Actions", column: "ServerId"); + migrationBuilder.CreateIndex( + name: "IX_Actions_ToolId", + table: "Actions", + column: "ToolId"); + migrationBuilder.CreateIndex( name: "IX_Actions_UpdatedById", table: "Actions", @@ -1604,6 +1888,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations table: "Archive", column: "StorageLocationId"); + migrationBuilder.CreateIndex( + name: "IX_Archive_ToolId", + table: "Archive", + column: "ToolId"); + migrationBuilder.CreateIndex( name: "IX_Archive_UpdatedById", table: "Archive", @@ -1629,6 +1918,46 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations table: "CategoryGame", column: "GamesId"); + migrationBuilder.CreateIndex( + name: "IX_ChatMessages_CreatedById", + table: "ChatMessages", + column: "CreatedById"); + + migrationBuilder.CreateIndex( + name: "IX_ChatMessages_ThreadId", + table: "ChatMessages", + column: "ThreadId"); + + migrationBuilder.CreateIndex( + name: "IX_ChatMessages_UpdatedById", + table: "ChatMessages", + column: "UpdatedById"); + + migrationBuilder.CreateIndex( + name: "IX_ChatThreadReadStatuses_LastReadMessageId", + table: "ChatThreadReadStatuses", + column: "LastReadMessageId"); + + migrationBuilder.CreateIndex( + name: "IX_ChatThreadReadStatuses_UserId", + table: "ChatThreadReadStatuses", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_ChatThreads_CreatedById", + table: "ChatThreads", + column: "CreatedById"); + + migrationBuilder.CreateIndex( + name: "IX_ChatThreads_UpdatedById", + table: "ChatThreads", + column: "UpdatedById"); + + migrationBuilder.CreateIndex( + name: "IX_ChatThreadUser_ParticipantsId", + table: "ChatThreadUser", + column: "ParticipantsId"); + migrationBuilder.CreateIndex( name: "IX_CollectionGame_GameId", table: "CollectionGame", @@ -1684,6 +2013,21 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations table: "GameDeveloper", column: "DeveloperId"); + migrationBuilder.CreateIndex( + name: "IX_GameExternalIds_CreatedById", + table: "GameExternalIds", + column: "CreatedById"); + + migrationBuilder.CreateIndex( + name: "IX_GameExternalIds_GameId", + table: "GameExternalIds", + column: "GameId"); + + migrationBuilder.CreateIndex( + name: "IX_GameExternalIds_UpdatedById", + table: "GameExternalIds", + column: "UpdatedById"); + migrationBuilder.CreateIndex( name: "IX_GameGenre_GenresId", table: "GameGenre", @@ -1754,6 +2098,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations table: "GameTag", column: "TagsId"); + migrationBuilder.CreateIndex( + name: "IX_GameTool_ToolsId", + table: "GameTool", + column: "ToolsId"); + migrationBuilder.CreateIndex( name: "IX_Genres_CreatedById", table: "Genres", @@ -1891,6 +2240,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations table: "Pages", column: "ParentId"); + migrationBuilder.CreateIndex( + name: "IX_Pages_ToolId", + table: "Pages", + column: "ToolId"); + migrationBuilder.CreateIndex( name: "IX_Pages_UpdatedById", table: "Pages", @@ -1931,6 +2285,21 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations table: "PlaySessions", column: "UserId"); + migrationBuilder.CreateIndex( + name: "IX_Ratings_CreatedById", + table: "Ratings", + column: "CreatedById"); + + migrationBuilder.CreateIndex( + name: "IX_Ratings_GameId", + table: "Ratings", + column: "GameId"); + + migrationBuilder.CreateIndex( + name: "IX_Ratings_UpdatedById", + table: "Ratings", + column: "UpdatedById"); + migrationBuilder.CreateIndex( name: "IX_Redistributables_CreatedById", table: "Redistributables", @@ -2002,6 +2371,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations table: "Scripts", column: "ServerId"); + migrationBuilder.CreateIndex( + name: "IX_Scripts_ToolId", + table: "Scripts", + column: "ToolId"); + migrationBuilder.CreateIndex( name: "IX_Scripts_UpdatedById", table: "Scripts", @@ -2072,6 +2446,16 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations table: "Tags", column: "UpdatedById"); + migrationBuilder.CreateIndex( + name: "IX_Tools_CreatedById", + table: "Tools", + column: "CreatedById"); + + migrationBuilder.CreateIndex( + name: "IX_Tools_UpdatedById", + table: "Tools", + column: "UpdatedById"); + migrationBuilder.CreateIndex( name: "IX_UserClaims_UserId", table: "UserClaims", @@ -2136,6 +2520,12 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations migrationBuilder.DropTable( name: "CategoryGame"); + migrationBuilder.DropTable( + name: "ChatThreadReadStatuses"); + + migrationBuilder.DropTable( + name: "ChatThreadUser"); + migrationBuilder.DropTable( name: "CollectionGame"); @@ -2145,6 +2535,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations migrationBuilder.DropTable( name: "GameDeveloper"); + migrationBuilder.DropTable( + name: "GameExternalIds"); + migrationBuilder.DropTable( name: "GameGenre"); @@ -2163,6 +2556,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations migrationBuilder.DropTable( name: "GameTag"); + migrationBuilder.DropTable( + name: "GameTool"); + migrationBuilder.DropTable( name: "Issues"); @@ -2190,6 +2586,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations migrationBuilder.DropTable( name: "PlaySessions"); + migrationBuilder.DropTable( + name: "Ratings"); + migrationBuilder.DropTable( name: "RoleClaims"); @@ -2226,6 +2625,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations migrationBuilder.DropTable( name: "Categories"); + migrationBuilder.DropTable( + name: "ChatMessages"); + migrationBuilder.DropTable( name: "Genres"); @@ -2259,6 +2661,12 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations migrationBuilder.DropTable( name: "Roles"); + migrationBuilder.DropTable( + name: "ChatThreads"); + + migrationBuilder.DropTable( + name: "Tools"); + migrationBuilder.DropTable( name: "Games"); diff --git a/LANCommander.Server.Data.PostgreSQL/Migrations/DatabaseContextModelSnapshot.cs b/LANCommander.Server.Data.PostgreSQL/Migrations/DatabaseContextModelSnapshot.cs index 799c5cb8..648ce24e 100644 --- a/LANCommander.Server.Data.PostgreSQL/Migrations/DatabaseContextModelSnapshot.cs +++ b/LANCommander.Server.Data.PostgreSQL/Migrations/DatabaseContextModelSnapshot.cs @@ -17,7 +17,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "9.0.2") + .HasAnnotation("ProductVersion", "9.0.9") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); @@ -37,6 +37,21 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("CategoryGame"); }); + modelBuilder.Entity("ChatThreadUser", b => + { + b.Property("ChatThreadsId") + .HasColumnType("uuid"); + + b.Property("ParticipantsId") + .HasColumnType("uuid"); + + b.HasKey("ChatThreadsId", "ParticipantsId"); + + b.HasIndex("ParticipantsId"); + + b.ToTable("ChatThreadUser"); + }); + modelBuilder.Entity("CollectionGame", b => { b.Property("CollectionId") @@ -120,6 +135,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("RedistributableId") .HasColumnType("uuid"); + b.Property("Options") + .HasColumnType("text"); + b.HasKey("GameId", "RedistributableId"); b.HasIndex("RedistributableId"); @@ -142,6 +160,21 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("GameTag"); }); + modelBuilder.Entity("GameTool", b => + { + b.Property("GamesId") + .HasColumnType("uuid"); + + b.Property("ToolsId") + .HasColumnType("uuid"); + + b.HasKey("GamesId", "ToolsId"); + + b.HasIndex("ToolsId"); + + b.ToTable("GameTool"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Action", b => { b.Property("Id") @@ -164,6 +197,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .IsRequired() .HasColumnType("text"); + b.Property("OptionOverrides") + .HasColumnType("text"); + b.Property("Path") .HasColumnType("text"); @@ -176,6 +212,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("SortOrder") .HasColumnType("integer"); + b.Property("ToolId") + .HasColumnType("uuid"); + b.Property("UpdatedById") .HasColumnType("uuid"); @@ -193,6 +232,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.HasIndex("ServerId"); + b.HasIndex("ToolId"); + b.HasIndex("UpdatedById"); b.ToTable("Actions"); @@ -232,6 +273,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("StorageLocationId") .HasColumnType("uuid"); + b.Property("ToolId") + .HasColumnType("uuid"); + b.Property("UncompressedSize") .HasColumnType("bigint"); @@ -257,6 +301,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.HasIndex("StorageLocationId"); + b.HasIndex("ToolId"); + b.HasIndex("UpdatedById"); b.ToTable("Archive"); @@ -298,6 +344,94 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("Categories"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Content") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ThreadId") + .HasColumnType("uuid"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("ThreadId"); + + b.HasIndex("UpdatedById"); + + b.ToTable("ChatMessages"); + }); + + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatThread", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("UpdatedById"); + + b.ToTable("ChatThreads"); + }); + + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatThreadReadStatus", b => + { + b.Property("ThreadId") + .HasColumnType("uuid"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("LastReadMessageId") + .HasColumnType("uuid"); + + b.HasKey("ThreadId", "UserId"); + + b.HasIndex("LastReadMessageId"); + + b.HasIndex("UserId"); + + b.ToTable("ChatThreadReadStatuses"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Collection", b => { b.Property("Id") @@ -415,9 +549,6 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("EngineId") .HasColumnType("uuid"); - b.Property("IGDBId") - .HasColumnType("bigint"); - b.Property("KeyAllocationMethod") .HasColumnType("integer"); @@ -504,6 +635,48 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("GameCustomField"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.GameExternalId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ExternalId") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("GameId") + .HasColumnType("uuid"); + + b.Property("Provider") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("GameId"); + + b.HasIndex("UpdatedById"); + + b.ToTable("GameExternalIds"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.GameSave", b => { b.Property("Id") @@ -630,7 +803,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .ValueGeneratedOnAdd() .HasColumnType("uuid"); - b.Property("AllocationMethod") + b.Property("AllocationMethod") .HasColumnType("integer"); b.Property("ClaimedByComputerName") @@ -748,13 +921,13 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .HasMaxLength(64) .HasColumnType("character varying(64)"); + b.Property("SortOrder") + .HasColumnType("integer"); + b.Property("SourceUrl") .HasMaxLength(2048) .HasColumnType("character varying(2048)"); - b.Property("SortOrder") - .HasColumnType("integer"); - b.Property("StorageLocationId") .HasColumnType("uuid"); @@ -878,6 +1051,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .HasMaxLength(256) .HasColumnType("character varying(256)"); + b.Property("ToolId") + .HasColumnType("uuid"); + b.Property("UpdatedById") .HasColumnType("uuid"); @@ -890,6 +1066,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.HasIndex("ParentId"); + b.HasIndex("ToolId"); + b.HasIndex("UpdatedById"); b.ToTable("Pages"); @@ -969,6 +1147,45 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("PlaySessions"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Rating", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("GameId") + .HasColumnType("uuid"); + + b.Property("Source") + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Value") + .HasColumnType("real"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("GameId"); + + b.HasIndex("UpdatedById"); + + b.ToTable("Ratings"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Redistributable", b => { b.Property("Id") @@ -991,6 +1208,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("Notes") .HasColumnType("text"); + b.Property("OptionSchema") + .HasColumnType("text"); + b.Property("UpdatedById") .HasColumnType("uuid"); @@ -1049,6 +1269,30 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("Roles", (string)null); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.RoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("RoleClaims", (string)null); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.SavePath", b => { b.Property("Id") @@ -1129,6 +1373,9 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("ServerId") .HasColumnType("uuid"); + b.Property("ToolId") + .HasColumnType("uuid"); + b.Property("Type") .HasColumnType("integer"); @@ -1148,6 +1395,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.HasIndex("ServerId"); + b.HasIndex("ToolId"); + b.HasIndex("UpdatedById"); b.ToTable("Scripts"); @@ -1172,12 +1421,23 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("AutostartMethod") .HasColumnType("integer"); + b.Property("ContainerId") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + b.Property("CreatedById") .HasColumnType("uuid"); b.Property("CreatedOn") .HasColumnType("timestamp with time zone"); + b.Property("DockerHostId") + .HasColumnType("uuid"); + + b.Property("Engine") + .HasColumnType("integer"); + b.Property("GameId") .HasColumnType("uuid"); @@ -1207,6 +1467,12 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Property("ProcessTerminationMethod") .HasColumnType("integer"); + b.Property("RemoteHostId") + .HasColumnType("uuid"); + + b.Property("RemoteServerId") + .HasColumnType("uuid"); + b.Property("UpdatedById") .HasColumnType("uuid"); @@ -1399,6 +1665,43 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("Tags"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Tool", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("UpdatedById"); + + b.ToTable("Tools"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.User", b => { b.Property("Id") @@ -1495,6 +1798,30 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("Users", (string)null); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.UserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserClaims", (string)null); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.UserCustomField", b => { b.Property("Id") @@ -1537,70 +1864,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("UserCustomField"); }); - modelBuilder.Entity("LibraryGame", b => - { - b.Property("GameId") - .HasColumnType("uuid"); - - b.Property("LibraryId") - .HasColumnType("uuid"); - - b.HasKey("GameId", "LibraryId"); - - b.HasIndex("LibraryId"); - - b.ToTable("LibraryGame"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClaimType") - .HasColumnType("text"); - - b.Property("ClaimValue") - .HasColumnType("text"); - - b.Property("RoleId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("RoleClaims", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClaimType") - .HasColumnType("text"); - - b.Property("ClaimValue") - .HasColumnType("text"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("UserClaims", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + modelBuilder.Entity("LANCommander.Server.Data.Models.UserLogin", b => { b.Property("LoginProvider") .HasColumnType("text"); @@ -1621,7 +1885,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("UserLogins", (string)null); }); - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + modelBuilder.Entity("LANCommander.Server.Data.Models.UserRole", b => { b.Property("UserId") .HasColumnType("uuid"); @@ -1636,7 +1900,7 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("UserRoles", (string)null); }); - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + modelBuilder.Entity("LANCommander.Server.Data.Models.UserToken", b => { b.Property("UserId") .HasColumnType("uuid"); @@ -1655,6 +1919,21 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.ToTable("UserTokens", (string)null); }); + modelBuilder.Entity("LibraryGame", b => + { + b.Property("GameId") + .HasColumnType("uuid"); + + b.Property("LibraryId") + .HasColumnType("uuid"); + + b.HasKey("GameId", "LibraryId"); + + b.HasIndex("LibraryId"); + + b.ToTable("LibraryGame"); + }); + modelBuilder.Entity("PageGame", b => { b.Property("GameId") @@ -1730,6 +2009,21 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .IsRequired(); }); + modelBuilder.Entity("ChatThreadUser", b => + { + b.HasOne("LANCommander.Server.Data.Models.ChatThread", null) + .WithMany() + .HasForeignKey("ChatThreadsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LANCommander.Server.Data.Models.User", null) + .WithMany() + .HasForeignKey("ParticipantsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("CollectionGame", b => { b.HasOne("LANCommander.Server.Data.Models.Collection", null) @@ -1835,6 +2129,21 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .IsRequired(); }); + modelBuilder.Entity("GameTool", b => + { + b.HasOne("LANCommander.Server.Data.Models.Game", null) + .WithMany() + .HasForeignKey("GamesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LANCommander.Server.Data.Models.Tool", null) + .WithMany() + .HasForeignKey("ToolsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Action", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -1852,6 +2161,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .HasForeignKey("ServerId") .OnDelete(DeleteBehavior.Cascade); + b.HasOne("LANCommander.Server.Data.Models.Tool", "Tool") + .WithMany("Actions") + .HasForeignKey("ToolId") + .OnDelete(DeleteBehavior.Cascade); + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") .WithMany() .HasForeignKey("UpdatedById") @@ -1863,6 +2177,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("Server"); + b.Navigation("Tool"); + b.Navigation("UpdatedBy"); }); @@ -1893,6 +2209,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.HasOne("LANCommander.Server.Data.Models.Tool", "Tool") + .WithMany("Archives") + .HasForeignKey("ToolId") + .OnDelete(DeleteBehavior.Cascade); + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") .WithMany() .HasForeignKey("UpdatedById") @@ -1908,6 +2229,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("StorageLocation"); + b.Navigation("Tool"); + b.Navigation("UpdatedBy"); }); @@ -1934,6 +2257,74 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("UpdatedBy"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatMessage", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.ChatThread", "Thread") + .WithMany("Messages") + .HasForeignKey("ThreadId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Thread"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatThread", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatThreadReadStatus", b => + { + b.HasOne("LANCommander.Server.Data.Models.ChatMessage", "LastReadMessage") + .WithMany() + .HasForeignKey("LastReadMessageId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.ChatThread", "Thread") + .WithMany() + .HasForeignKey("ThreadId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LANCommander.Server.Data.Models.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("LastReadMessage"); + + b.Navigation("Thread"); + + b.Navigation("User"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Collection", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -2035,6 +2426,30 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("UpdatedBy"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.GameExternalId", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.Game", "Game") + .WithMany("ExternalIds") + .HasForeignKey("GameId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Game"); + + b.Navigation("UpdatedBy"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.GameSave", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -2262,6 +2677,10 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .HasForeignKey("ParentId") .OnDelete(DeleteBehavior.Cascade); + b.HasOne("LANCommander.Server.Data.Models.Tool", null) + .WithMany("Pages") + .HasForeignKey("ToolId"); + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") .WithMany() .HasForeignKey("UpdatedById") @@ -2323,6 +2742,30 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("User"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Rating", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.Game", "Game") + .WithMany("Ratings") + .HasForeignKey("GameId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Game"); + + b.Navigation("UpdatedBy"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Redistributable", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -2357,6 +2800,15 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("UpdatedBy"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.RoleClaim", b => + { + b.HasOne("LANCommander.Server.Data.Models.Role", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.SavePath", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -2403,6 +2855,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .HasForeignKey("ServerId") .OnDelete(DeleteBehavior.Cascade); + b.HasOne("LANCommander.Server.Data.Models.Tool", "Tool") + .WithMany("Scripts") + .HasForeignKey("ToolId") + .OnDelete(DeleteBehavior.Cascade); + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") .WithMany() .HasForeignKey("UpdatedById") @@ -2416,6 +2873,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("Server"); + b.Navigation("Tool"); + b.Navigation("UpdatedBy"); }); @@ -2525,6 +2984,23 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("UpdatedBy"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Tool", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("LANCommander.Server.Data.Models.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("UpdatedBy"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.User", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -2542,6 +3018,15 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("UpdatedBy"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.UserClaim", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.UserCustomField", b => { b.HasOne("LANCommander.Server.Data.Models.User", "CreatedBy") @@ -2567,6 +3052,43 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("User"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.UserLogin", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("LANCommander.Server.Data.Models.UserRole", b => + { + b.HasOne("LANCommander.Server.Data.Models.Role", "Role") + .WithMany("UserRoles") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("LANCommander.Server.Data.Models.User", "User") + .WithMany("UserRoles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Role"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("LANCommander.Server.Data.Models.UserToken", b => + { + b.HasOne("LANCommander.Server.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("LibraryGame", b => { b.HasOne("LANCommander.Server.Data.Models.Game", null) @@ -2582,57 +3104,6 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations .IsRequired(); }); - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("LANCommander.Server.Data.Models.Role", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("LANCommander.Server.Data.Models.Role", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LANCommander.Server.Data.Models.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("LANCommander.Server.Data.Models.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - modelBuilder.Entity("PageGame", b => { b.HasOne("LANCommander.Server.Data.Models.Game", null) @@ -2698,6 +3169,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("Children"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.ChatThread", b => + { + b.Navigation("Messages"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Engine", b => { b.Navigation("Games"); @@ -2713,6 +3189,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("DependentGames"); + b.Navigation("ExternalIds"); + b.Navigation("GameSaves"); b.Navigation("Issues"); @@ -2725,6 +3203,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("PlaySessions"); + b.Navigation("Ratings"); + b.Navigation("SavePaths"); b.Navigation("Scripts"); @@ -2749,6 +3229,11 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("Scripts"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Role", b => + { + b.Navigation("UserRoles"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Server", b => { b.Navigation("Actions"); @@ -2769,6 +3254,17 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("Media"); }); + modelBuilder.Entity("LANCommander.Server.Data.Models.Tool", b => + { + b.Navigation("Actions"); + + b.Navigation("Archives"); + + b.Navigation("Pages"); + + b.Navigation("Scripts"); + }); + modelBuilder.Entity("LANCommander.Server.Data.Models.User", b => { b.Navigation("CustomFields"); @@ -2781,6 +3277,8 @@ namespace LANCommander.Server.Data.PostgreSQL.Migrations b.Navigation("Media"); b.Navigation("PlaySessions"); + + b.Navigation("UserRoles"); }); #pragma warning restore 612, 618 }