diff --git a/Content.DiscordBot/CommandHandler.cs b/Content.DiscordBot/CommandHandler.cs index 7712dd16b25..79c32720e92 100644 --- a/Content.DiscordBot/CommandHandler.cs +++ b/Content.DiscordBot/CommandHandler.cs @@ -10,7 +10,7 @@ using Microsoft.EntityFrameworkCore; namespace Content.DiscordBot; -public sealed class CommandHandler(DiscordSocketClient client, CommandService commands, InteractionService interaction, PostgresServerDbContext db) +public sealed class CommandHandler(DiscordSocketClient client, CommandService commands, InteractionService interaction, ServerDbContext db) { private const ulong Guild = 1168210010233376858UL; diff --git a/Content.DiscordBot/Program.cs b/Content.DiscordBot/Program.cs index c31884615ae..e09489b0d92 100644 --- a/Content.DiscordBot/Program.cs +++ b/Content.DiscordBot/Program.cs @@ -5,6 +5,7 @@ using Discord; using Discord.Commands; using Discord.Interactions; using Discord.WebSocket; +using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; var client = new DiscordSocketClient(new DiscordSocketConfig { GatewayIntents = GatewayIntents.All }); @@ -29,16 +30,31 @@ if (Environment.GetEnvironmentVariable("DATABASE_STRING") is { } dbString) if (string.IsNullOrWhiteSpace(token)) throw new ArgumentException("No token found."); -if (string.IsNullOrWhiteSpace(connectionString)) - throw new ArgumentException("No database connection string found."); +var usePostgres = true; +if (string.IsNullOrWhiteSpace(connectionString)) +{ + usePostgres = false; + //throw new ArgumentException("No database connection string found. Assuming local development."); +} await client.LoginAsync(TokenType.Bot, token); await client.StartAsync(); -var builder = new DbContextOptionsBuilder(); -builder.UseNpgsql(connectionString); -var db = new PostgresServerDbContext(builder.Options); -// await db.Database.MigrateAsync(); +ServerDbContext db; +if (usePostgres) +{ + var builder = new DbContextOptionsBuilder(); + builder.UseNpgsql(connectionString); + db = new PostgresServerDbContext(builder.Options); + // await db.Database.MigrateAsync(); +} +else +{ + var relativePath = "FIX"; // Gross but whatever, I'm just testing + var builder = new DbContextOptionsBuilder(); + builder.UseSqlite(new SqliteConnection($"Data Source={relativePath}")); + db = new SqliteServerDbContext(builder.Options); +} var interaction = new InteractionService(client); var handler = new CommandHandler(client, new CommandService(), interaction, db); diff --git a/Content.Server.Database/Migrations/Postgres/20240628081332_RMCPatrons.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240628081332_RMCPatrons.Designer.cs deleted file mode 100644 index 69211182942..00000000000 --- a/Content.Server.Database/Migrations/Postgres/20240628081332_RMCPatrons.Designer.cs +++ /dev/null @@ -1,2089 +0,0 @@ -// -using System; -using System.Net; -using System.Text.Json; -using Content.Server.Database; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; -using NpgsqlTypes; - -#nullable disable - -namespace Content.Server.Database.Migrations.Postgres -{ - [DbContext(typeof(PostgresServerDbContext))] - [Migration("20240628081332_DeltaVPatrons")] - partial class DeltaVPatrons - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.0") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("AdminRankId") - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - b.Property("Title") - .HasColumnType("text") - .HasColumnName("title"); - - b.HasKey("UserId") - .HasName("PK_admin"); - - b.HasIndex("AdminRankId") - .HasDatabaseName("IX_admin_admin_rank_id"); - - b.ToTable("admin", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_flag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminId") - .HasColumnType("uuid") - .HasColumnName("admin_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flag"); - - b.Property("Negative") - .HasColumnType("boolean") - .HasColumnName("negative"); - - b.HasKey("Id") - .HasName("PK_admin_flag"); - - b.HasIndex("AdminId") - .HasDatabaseName("IX_admin_flag_admin_id"); - - b.HasIndex("Flag", "AdminId") - .IsUnique(); - - b.ToTable("admin_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("admin_log_id"); - - b.Property("Date") - .HasColumnType("timestamp with time zone") - .HasColumnName("date"); - - b.Property("Impact") - .HasColumnType("smallint") - .HasColumnName("impact"); - - b.Property("Json") - .IsRequired() - .HasColumnType("jsonb") - .HasColumnName("json"); - - b.Property("Message") - .IsRequired() - .HasColumnType("text") - .HasColumnName("message"); - - b.Property("Type") - .HasColumnType("integer") - .HasColumnName("type"); - - b.HasKey("RoundId", "Id") - .HasName("PK_admin_log"); - - b.HasIndex("Date"); - - b.HasIndex("Message") - .HasAnnotation("Npgsql:TsVectorConfig", "english"); - - NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN"); - - b.HasIndex("Type") - .HasDatabaseName("IX_admin_log_type"); - - b.ToTable("admin_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("LogId") - .HasColumnType("integer") - .HasColumnName("log_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.HasKey("RoundId", "LogId", "PlayerUserId") - .HasName("PK_admin_log_player"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_log_player_player_user_id"); - - b.ToTable("admin_log_player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_messages_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("Dismissed") - .HasColumnType("boolean") - .HasColumnName("dismissed"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Seen") - .HasColumnType("boolean") - .HasColumnName("seen"); - - b.HasKey("Id") - .HasName("PK_admin_messages"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_messages_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_messages_round_id"); - - b.ToTable("admin_messages", null, t => - { - t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_notes_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Secret") - .HasColumnType("boolean") - .HasColumnName("secret"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_admin_notes"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_notes_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_notes_round_id"); - - b.ToTable("admin_notes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_admin_rank"); - - b.ToTable("admin_rank", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_rank_flag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminRankId") - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flag"); - - b.HasKey("Id") - .HasName("PK_admin_rank_flag"); - - b.HasIndex("AdminRankId"); - - b.HasIndex("Flag", "AdminRankId") - .IsUnique(); - - b.ToTable("admin_rank_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_watchlists_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.HasKey("Id") - .HasName("PK_admin_watchlists"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_watchlists_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_watchlists_round_id"); - - b.ToTable("admin_watchlists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("antag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AntagName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("antag_name"); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_antag"); - - b.HasIndex("ProfileId", "AntagName") - .IsUnique(); - - b.ToTable("antag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("assigned_user_id_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_assigned_user_id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.HasIndex("UserName") - .IsUnique(); - - b.ToTable("assigned_user_id", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.BanTemplate", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("ban_template_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AutoDelete") - .HasColumnType("boolean") - .HasColumnName("auto_delete"); - - b.Property("ExemptFlags") - .HasColumnType("integer") - .HasColumnName("exempt_flags"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("Length") - .HasColumnType("interval") - .HasColumnName("length"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.Property("Title") - .IsRequired() - .HasColumnType("text") - .HasColumnName("title"); - - b.HasKey("Id") - .HasName("PK_ban_template"); - - b.ToTable("ban_template", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("connection_log_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .IsRequired() - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("Denied") - .HasColumnType("smallint") - .HasColumnName("denied"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("ServerId") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasDefaultValue(0) - .HasColumnName("server_id"); - - b.Property("Time") - .HasColumnType("timestamp with time zone") - .HasColumnName("time"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_connection_log"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_connection_log_server_id"); - - b.HasIndex("Time"); - - b.HasIndex("UserId"); - - b.ToTable("connection_log", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("job_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("JobName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("job_name"); - - b.Property("Priority") - .HasColumnType("integer") - .HasColumnName("priority"); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_job"); - - b.HasIndex("ProfileId"); - - b.HasIndex("ProfileId", "JobName") - .IsUnique(); - - b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") - .IsUnique() - .HasFilter("priority = 3"); - - b.ToTable("job", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.PlayTime", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("play_time_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("TimeSpent") - .HasColumnType("interval") - .HasColumnName("time_spent"); - - b.Property("Tracker") - .IsRequired() - .HasColumnType("text") - .HasColumnName("tracker"); - - b.HasKey("Id") - .HasName("PK_play_time"); - - b.HasIndex("PlayerId", "Tracker") - .IsUnique(); - - b.ToTable("play_time", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("player_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("FirstSeenTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("first_seen_time"); - - b.Property("LastReadRules") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_read_rules"); - - b.Property("LastSeenAddress") - .IsRequired() - .HasColumnType("inet") - .HasColumnName("last_seen_address"); - - b.Property("LastSeenHWId") - .HasColumnType("bytea") - .HasColumnName("last_seen_hwid"); - - b.Property("LastSeenTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_seen_time"); - - b.Property("LastSeenUserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("last_seen_user_name"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_player"); - - b.HasAlternateKey("UserId") - .HasName("ak_player_user_id"); - - b.HasIndex("LastSeenUserName"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("player", null, t => - { - t.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("preference_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminOOCColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("admin_ooc_color"); - - b.Property("SelectedCharacterSlot") - .HasColumnType("integer") - .HasColumnName("selected_character_slot"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_preference"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("preference", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Age") - .HasColumnType("integer") - .HasColumnName("age"); - - b.Property("CharacterName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("char_name"); - - b.Property("EyeColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("eye_color"); - - b.Property("FacialHairColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("facial_hair_color"); - - b.Property("FacialHairName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("facial_hair_name"); - - b.Property("FlavorText") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flavor_text"); - - b.Property("Gender") - .IsRequired() - .HasColumnType("text") - .HasColumnName("gender"); - - b.Property("HairColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("hair_color"); - - b.Property("HairName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("hair_name"); - - b.Property("Markings") - .HasColumnType("jsonb") - .HasColumnName("markings"); - - b.Property("PreferenceId") - .HasColumnType("integer") - .HasColumnName("preference_id"); - - b.Property("PreferenceUnavailable") - .HasColumnType("integer") - .HasColumnName("pref_unavailable"); - - b.Property("Sex") - .IsRequired() - .HasColumnType("text") - .HasColumnName("sex"); - - b.Property("SkinColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("skin_color"); - - b.Property("Slot") - .HasColumnType("integer") - .HasColumnName("slot"); - - b.Property("SpawnPriority") - .HasColumnType("integer") - .HasColumnName("spawn_priority"); - - b.Property("Species") - .IsRequired() - .HasColumnType("text") - .HasColumnName("species"); - - b.HasKey("Id") - .HasName("PK_profile"); - - b.HasIndex("PreferenceId") - .HasDatabaseName("IX_profile_preference_id"); - - b.HasIndex("Slot", "PreferenceId") - .IsUnique(); - - b.ToTable("profile", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_loadout_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("LoadoutName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("loadout_name"); - - b.Property("ProfileLoadoutGroupId") - .HasColumnType("integer") - .HasColumnName("profile_loadout_group_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout"); - - b.HasIndex("ProfileLoadoutGroupId"); - - b.ToTable("profile_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_loadout_group_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("GroupName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("group_name"); - - b.Property("ProfileRoleLoadoutId") - .HasColumnType("integer") - .HasColumnName("profile_role_loadout_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout_group"); - - b.HasIndex("ProfileRoleLoadoutId"); - - b.ToTable("profile_loadout_group", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_role_loadout_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.Property("RoleName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role_name"); - - b.HasKey("Id") - .HasName("PK_profile_role_loadout"); - - b.HasIndex("ProfileId"); - - b.ToTable("profile_role_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_accounts_id"); - - b.HasKey("Id") - .HasName("PK_discord_accounts"); - - b.ToTable("discord_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("DiscordId") - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_id"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linked_accounts"); - - b.HasIndex("DiscordId") - .IsUnique(); - - b.ToTable("discord_linked_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("TierId") - .HasColumnType("integer") - .HasColumnName("tier_id"); - - b.HasKey("PlayerId") - .HasName("PK_patreon_patrons"); - - b.HasIndex("TierId") - .HasDatabaseName("IX_patreon_patrons_tier_id"); - - b.ToTable("patreon_patrons", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("patreon_tiers_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ShowOnCredits") - .HasColumnType("boolean") - .HasColumnName("show_on_credits"); - - b.HasKey("Id") - .HasName("PK_patreon_tiers"); - - b.ToTable("patreon_tiers", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("RoleId") - .HasColumnType("text") - .HasColumnName("role_id"); - - b.HasKey("PlayerUserId", "RoleId") - .HasName("PK_role_whitelists"); - - b.ToTable("role_whitelists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("round_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ServerId") - .HasColumnType("integer") - .HasColumnName("server_id"); - - b.Property("StartDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("PK_round"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_round_server_id"); - - b.HasIndex("StartDate"); - - b.ToTable("round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_server"); - - b.ToTable("server", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_ban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("AutoDelete") - .HasColumnType("boolean") - .HasColumnName("auto_delete"); - - b.Property("BanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("uuid") - .HasColumnName("banning_admin"); - - b.Property("ExemptFlags") - .HasColumnType("integer") - .HasColumnName("exempt_flags"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_ban_round_id"); - - b.ToTable("server_ban", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("Flags") - .HasColumnType("integer") - .HasColumnName("flags"); - - b.HasKey("UserId") - .HasName("PK_server_ban_exemption"); - - b.ToTable("server_ban_exemption", null, t => - { - t.HasCheckConstraint("FlagsNotZero", "flags != 0"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_ban_hit_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("ConnectionId") - .HasColumnType("integer") - .HasColumnName("connection_id"); - - b.HasKey("Id") - .HasName("PK_server_ban_hit"); - - b.HasIndex("BanId") - .HasDatabaseName("IX_server_ban_hit_ban_id"); - - b.HasIndex("ConnectionId") - .HasDatabaseName("IX_server_ban_hit_connection_id"); - - b.ToTable("server_ban_hit", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_role_ban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("BanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("uuid") - .HasColumnName("banning_admin"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("RoleId") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role_id"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_role_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_role_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_role_ban_round_id"); - - b.ToTable("server_role_ban", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("role_unban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("uuid") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_role_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_role_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("unban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("uuid") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("trait_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.Property("TraitName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("trait_name"); - - b.HasKey("Id") - .HasName("PK_trait"); - - b.HasIndex("ProfileId", "TraitName") - .IsUnique(); - - b.ToTable("trait", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("uploaded_resource_log_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Data") - .IsRequired() - .HasColumnType("bytea") - .HasColumnName("data"); - - b.Property("Date") - .HasColumnType("timestamp with time zone") - .HasColumnName("date"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_uploaded_resource_log"); - - b.ToTable("uploaded_resource_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Whitelist", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("UserId") - .HasName("PK_whitelist"); - - b.ToTable("whitelist", (string)null); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.Property("PlayersId") - .HasColumnType("integer") - .HasColumnName("players_id"); - - b.Property("RoundsId") - .HasColumnType("integer") - .HasColumnName("rounds_id"); - - b.HasKey("PlayersId", "RoundsId") - .HasName("PK_player_round"); - - b.HasIndex("RoundsId") - .HasDatabaseName("IX_player_round_rounds_id"); - - b.ToTable("player_round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.HasOne("Content.Server.Database.AdminRank", "AdminRank") - .WithMany("Admins") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); - - b.Navigation("AdminRank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.HasOne("Content.Server.Database.Admin", "Admin") - .WithMany("Flags") - .HasForeignKey("AdminId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_flag_admin_admin_id"); - - b.Navigation("Admin"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany("AdminLogs") - .HasForeignKey("RoundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_round_round_id"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminLogs") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_player_player_user_id"); - - b.HasOne("Content.Server.Database.AdminLog", "Log") - .WithMany("Players") - .HasForeignKey("RoundId", "LogId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); - - b.Navigation("Log"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminMessagesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminMessagesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminMessagesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminMessagesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_messages_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_messages_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminNotesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminNotesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminNotesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminNotesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_notes_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_notes_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.HasOne("Content.Server.Database.AdminRank", "Rank") - .WithMany("Flags") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); - - b.Navigation("Rank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminWatchlistsCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminWatchlistsDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminWatchlistsLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminWatchlistsReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_watchlists_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_watchlists_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Antags") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_antag_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("ConnectionLogs") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.SetNull) - .IsRequired() - .HasConstraintName("FK_connection_log_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Jobs") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_job_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.HasOne("Content.Server.Database.Preference", "Preference") - .WithMany("Profiles") - .HasForeignKey("PreferenceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_preference_preference_id"); - - b.Navigation("Preference"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") - .WithMany("Loadouts") - .HasForeignKey("ProfileLoadoutGroupId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group~"); - - b.Navigation("ProfileLoadoutGroup"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") - .WithMany("Groups") - .HasForeignKey("ProfileRoleLoadoutId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loa~"); - - b.Navigation("ProfileRoleLoadout"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Loadouts") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_player_player_id"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("Patron") - .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_player_player_id"); - - b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") - .WithMany("Patrons") - .HasForeignKey("TierId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); - - b.Navigation("Player"); - - b.Navigation("Tier"); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("JobWhitelists") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_role_whitelists_player_player_user_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("Rounds") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_round_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithMany("BanHits") - .HasForeignKey("BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); - - b.HasOne("Content.Server.Database.ConnectionLog", "Connection") - .WithMany("BanHits") - .HasForeignKey("ConnectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); - - b.Navigation("Ban"); - - b.Navigation("Connection"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerRoleBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerRoleBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_role_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_unban_server_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Traits") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_trait_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.HasOne("Content.Server.Database.Player", null) - .WithMany() - .HasForeignKey("PlayersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_player_players_id"); - - b.HasOne("Content.Server.Database.Round", null) - .WithMany() - .HasForeignKey("RoundsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_round_rounds_id"); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Navigation("Players"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Navigation("Admins"); - - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Navigation("BanHits"); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Navigation("AdminLogs"); - - b.Navigation("AdminMessagesCreated"); - - b.Navigation("AdminMessagesDeleted"); - - b.Navigation("AdminMessagesLastEdited"); - - b.Navigation("AdminMessagesReceived"); - - b.Navigation("AdminNotesCreated"); - - b.Navigation("AdminNotesDeleted"); - - b.Navigation("AdminNotesLastEdited"); - - b.Navigation("AdminNotesReceived"); - - b.Navigation("AdminServerBansCreated"); - - b.Navigation("AdminServerBansLastEdited"); - - b.Navigation("AdminServerRoleBansCreated"); - - b.Navigation("AdminServerRoleBansLastEdited"); - - b.Navigation("AdminWatchlistsCreated"); - - b.Navigation("AdminWatchlistsDeleted"); - - b.Navigation("AdminWatchlistsLastEdited"); - - b.Navigation("AdminWatchlistsReceived"); - - b.Navigation("JobWhitelists"); - - b.Navigation("LinkedAccount"); - - b.Navigation("Patron"); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Navigation("Profiles"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Navigation("Antags"); - - b.Navigation("Jobs"); - - b.Navigation("Loadouts"); - - b.Navigation("Traits"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Navigation("Loadouts"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Navigation("Groups"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Navigation("LinkedAccount") - .IsRequired(); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Navigation("Patrons"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Navigation("AdminLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Navigation("ConnectionLogs"); - - b.Navigation("Rounds"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Navigation("BanHits"); - - b.Navigation("Unban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Navigation("Unban"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Content.Server.Database/Migrations/Postgres/20240628081332_RMCPatrons.cs b/Content.Server.Database/Migrations/Postgres/20240628081332_RMCPatrons.cs deleted file mode 100644 index e3adf24bafd..00000000000 --- a/Content.Server.Database/Migrations/Postgres/20240628081332_RMCPatrons.cs +++ /dev/null @@ -1,115 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace Content.Server.Database.Migrations.Postgres -{ - /// - public partial class DeltaVPatrons : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "discord_accounts", - columns: table => new - { - discord_accounts_id = table.Column(type: "numeric(20,0)", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_discord_accounts", x => x.discord_accounts_id); - }); - - migrationBuilder.CreateTable( - name: "patreon_tiers", - columns: table => new - { - patreon_tiers_id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - show_on_credits = table.Column(type: "boolean", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_patreon_tiers", x => x.patreon_tiers_id); - }); - - migrationBuilder.CreateTable( - name: "discord_linked_accounts", - columns: table => new - { - player_id = table.Column(type: "uuid", nullable: false), - discord_id = table.Column(type: "numeric(20,0)", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_discord_linked_accounts", x => x.player_id); - table.ForeignKey( - name: "FK_discord_linked_accounts_player_player_id", - column: x => x.player_id, - principalTable: "player", - principalColumn: "user_id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_discord_linked_accounts_discord_accounts_discord_id", - column: x => x.discord_id, - principalTable: "discord_accounts", - principalColumn: "discord_accounts_id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "patreon_patrons", - columns: table => new - { - player_id = table.Column(type: "uuid", nullable: false), - tier_id = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_patreon_patrons", x => x.player_id); - table.ForeignKey( - name: "FK_patreon_patrons_player_player_id", - column: x => x.player_id, - principalTable: "player", - principalColumn: "user_id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_patreon_patrons_patreon_tiers_tier_id", - column: x => x.tier_id, - principalTable: "patreon_tiers", - principalColumn: "patreon_tiers_id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_discord_linked_accounts_discord_id", - table: "discord_linked_accounts", - column: "discord_id", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_patreon_patrons_tier_id", - table: "patreon_patrons", - column: "tier_id"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "discord_linked_accounts"); - - migrationBuilder.DropTable( - name: "patreon_patrons"); - - migrationBuilder.DropTable( - name: "discord_accounts"); - - migrationBuilder.DropTable( - name: "patreon_tiers"); - } - } -} diff --git a/Content.Server.Database/Migrations/Postgres/20240628092907_RMCPatronsRolePriority.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240628092907_RMCPatronsRolePriority.Designer.cs deleted file mode 100644 index 33f4ccfa8d3..00000000000 --- a/Content.Server.Database/Migrations/Postgres/20240628092907_RMCPatronsRolePriority.Designer.cs +++ /dev/null @@ -1,2105 +0,0 @@ -// -using System; -using System.Net; -using System.Text.Json; -using Content.Server.Database; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; -using NpgsqlTypes; - -#nullable disable - -namespace Content.Server.Database.Migrations.Postgres -{ - [DbContext(typeof(PostgresServerDbContext))] - [Migration("20240628092907_DeltaVPatronsRolePriority")] - partial class DeltaVPatronsRolePriority - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.0") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("AdminRankId") - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - b.Property("Title") - .HasColumnType("text") - .HasColumnName("title"); - - b.HasKey("UserId") - .HasName("PK_admin"); - - b.HasIndex("AdminRankId") - .HasDatabaseName("IX_admin_admin_rank_id"); - - b.ToTable("admin", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_flag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminId") - .HasColumnType("uuid") - .HasColumnName("admin_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flag"); - - b.Property("Negative") - .HasColumnType("boolean") - .HasColumnName("negative"); - - b.HasKey("Id") - .HasName("PK_admin_flag"); - - b.HasIndex("AdminId") - .HasDatabaseName("IX_admin_flag_admin_id"); - - b.HasIndex("Flag", "AdminId") - .IsUnique(); - - b.ToTable("admin_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("admin_log_id"); - - b.Property("Date") - .HasColumnType("timestamp with time zone") - .HasColumnName("date"); - - b.Property("Impact") - .HasColumnType("smallint") - .HasColumnName("impact"); - - b.Property("Json") - .IsRequired() - .HasColumnType("jsonb") - .HasColumnName("json"); - - b.Property("Message") - .IsRequired() - .HasColumnType("text") - .HasColumnName("message"); - - b.Property("Type") - .HasColumnType("integer") - .HasColumnName("type"); - - b.HasKey("RoundId", "Id") - .HasName("PK_admin_log"); - - b.HasIndex("Date"); - - b.HasIndex("Message") - .HasAnnotation("Npgsql:TsVectorConfig", "english"); - - NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN"); - - b.HasIndex("Type") - .HasDatabaseName("IX_admin_log_type"); - - b.ToTable("admin_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("LogId") - .HasColumnType("integer") - .HasColumnName("log_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.HasKey("RoundId", "LogId", "PlayerUserId") - .HasName("PK_admin_log_player"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_log_player_player_user_id"); - - b.ToTable("admin_log_player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_messages_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("Dismissed") - .HasColumnType("boolean") - .HasColumnName("dismissed"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Seen") - .HasColumnType("boolean") - .HasColumnName("seen"); - - b.HasKey("Id") - .HasName("PK_admin_messages"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_messages_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_messages_round_id"); - - b.ToTable("admin_messages", null, t => - { - t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_notes_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Secret") - .HasColumnType("boolean") - .HasColumnName("secret"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_admin_notes"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_notes_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_notes_round_id"); - - b.ToTable("admin_notes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_admin_rank"); - - b.ToTable("admin_rank", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_rank_flag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminRankId") - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flag"); - - b.HasKey("Id") - .HasName("PK_admin_rank_flag"); - - b.HasIndex("AdminRankId"); - - b.HasIndex("Flag", "AdminRankId") - .IsUnique(); - - b.ToTable("admin_rank_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_watchlists_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.HasKey("Id") - .HasName("PK_admin_watchlists"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_watchlists_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_watchlists_round_id"); - - b.ToTable("admin_watchlists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("antag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AntagName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("antag_name"); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_antag"); - - b.HasIndex("ProfileId", "AntagName") - .IsUnique(); - - b.ToTable("antag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("assigned_user_id_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_assigned_user_id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.HasIndex("UserName") - .IsUnique(); - - b.ToTable("assigned_user_id", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.BanTemplate", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("ban_template_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AutoDelete") - .HasColumnType("boolean") - .HasColumnName("auto_delete"); - - b.Property("ExemptFlags") - .HasColumnType("integer") - .HasColumnName("exempt_flags"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("Length") - .HasColumnType("interval") - .HasColumnName("length"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.Property("Title") - .IsRequired() - .HasColumnType("text") - .HasColumnName("title"); - - b.HasKey("Id") - .HasName("PK_ban_template"); - - b.ToTable("ban_template", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("connection_log_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .IsRequired() - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("Denied") - .HasColumnType("smallint") - .HasColumnName("denied"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("ServerId") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasDefaultValue(0) - .HasColumnName("server_id"); - - b.Property("Time") - .HasColumnType("timestamp with time zone") - .HasColumnName("time"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_connection_log"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_connection_log_server_id"); - - b.HasIndex("Time"); - - b.HasIndex("UserId"); - - b.ToTable("connection_log", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("job_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("JobName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("job_name"); - - b.Property("Priority") - .HasColumnType("integer") - .HasColumnName("priority"); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_job"); - - b.HasIndex("ProfileId"); - - b.HasIndex("ProfileId", "JobName") - .IsUnique(); - - b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") - .IsUnique() - .HasFilter("priority = 3"); - - b.ToTable("job", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.PlayTime", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("play_time_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("TimeSpent") - .HasColumnType("interval") - .HasColumnName("time_spent"); - - b.Property("Tracker") - .IsRequired() - .HasColumnType("text") - .HasColumnName("tracker"); - - b.HasKey("Id") - .HasName("PK_play_time"); - - b.HasIndex("PlayerId", "Tracker") - .IsUnique(); - - b.ToTable("play_time", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("player_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("FirstSeenTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("first_seen_time"); - - b.Property("LastReadRules") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_read_rules"); - - b.Property("LastSeenAddress") - .IsRequired() - .HasColumnType("inet") - .HasColumnName("last_seen_address"); - - b.Property("LastSeenHWId") - .HasColumnType("bytea") - .HasColumnName("last_seen_hwid"); - - b.Property("LastSeenTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_seen_time"); - - b.Property("LastSeenUserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("last_seen_user_name"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_player"); - - b.HasAlternateKey("UserId") - .HasName("ak_player_user_id"); - - b.HasIndex("LastSeenUserName"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("player", null, t => - { - t.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("preference_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminOOCColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("admin_ooc_color"); - - b.Property("SelectedCharacterSlot") - .HasColumnType("integer") - .HasColumnName("selected_character_slot"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_preference"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("preference", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Age") - .HasColumnType("integer") - .HasColumnName("age"); - - b.Property("CharacterName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("char_name"); - - b.Property("EyeColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("eye_color"); - - b.Property("FacialHairColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("facial_hair_color"); - - b.Property("FacialHairName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("facial_hair_name"); - - b.Property("FlavorText") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flavor_text"); - - b.Property("Gender") - .IsRequired() - .HasColumnType("text") - .HasColumnName("gender"); - - b.Property("HairColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("hair_color"); - - b.Property("HairName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("hair_name"); - - b.Property("Markings") - .HasColumnType("jsonb") - .HasColumnName("markings"); - - b.Property("PreferenceId") - .HasColumnType("integer") - .HasColumnName("preference_id"); - - b.Property("PreferenceUnavailable") - .HasColumnType("integer") - .HasColumnName("pref_unavailable"); - - b.Property("Sex") - .IsRequired() - .HasColumnType("text") - .HasColumnName("sex"); - - b.Property("SkinColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("skin_color"); - - b.Property("Slot") - .HasColumnType("integer") - .HasColumnName("slot"); - - b.Property("SpawnPriority") - .HasColumnType("integer") - .HasColumnName("spawn_priority"); - - b.Property("Species") - .IsRequired() - .HasColumnType("text") - .HasColumnName("species"); - - b.HasKey("Id") - .HasName("PK_profile"); - - b.HasIndex("PreferenceId") - .HasDatabaseName("IX_profile_preference_id"); - - b.HasIndex("Slot", "PreferenceId") - .IsUnique(); - - b.ToTable("profile", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_loadout_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("LoadoutName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("loadout_name"); - - b.Property("ProfileLoadoutGroupId") - .HasColumnType("integer") - .HasColumnName("profile_loadout_group_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout"); - - b.HasIndex("ProfileLoadoutGroupId"); - - b.ToTable("profile_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_loadout_group_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("GroupName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("group_name"); - - b.Property("ProfileRoleLoadoutId") - .HasColumnType("integer") - .HasColumnName("profile_role_loadout_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout_group"); - - b.HasIndex("ProfileRoleLoadoutId"); - - b.ToTable("profile_loadout_group", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_role_loadout_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.Property("RoleName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role_name"); - - b.HasKey("Id") - .HasName("PK_profile_role_loadout"); - - b.HasIndex("ProfileId"); - - b.ToTable("profile_role_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_accounts_id"); - - b.HasKey("Id") - .HasName("PK_discord_accounts"); - - b.ToTable("discord_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("DiscordId") - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_id"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linked_accounts"); - - b.HasIndex("DiscordId") - .IsUnique(); - - b.ToTable("discord_linked_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("TierId") - .HasColumnType("integer") - .HasColumnName("tier_id"); - - b.HasKey("PlayerId") - .HasName("PK_patreon_patrons"); - - b.HasIndex("TierId") - .HasDatabaseName("IX_patreon_patrons_tier_id"); - - b.ToTable("patreon_patrons", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("patreon_tiers_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DiscordRole") - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_role"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Priority") - .HasColumnType("integer") - .HasColumnName("priority"); - - b.Property("ShowOnCredits") - .HasColumnType("boolean") - .HasColumnName("show_on_credits"); - - b.HasKey("Id") - .HasName("PK_patreon_tiers"); - - b.HasIndex("DiscordRole") - .IsUnique(); - - b.ToTable("patreon_tiers", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("RoleId") - .HasColumnType("text") - .HasColumnName("role_id"); - - b.HasKey("PlayerUserId", "RoleId") - .HasName("PK_role_whitelists"); - - b.ToTable("role_whitelists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("round_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ServerId") - .HasColumnType("integer") - .HasColumnName("server_id"); - - b.Property("StartDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("PK_round"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_round_server_id"); - - b.HasIndex("StartDate"); - - b.ToTable("round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_server"); - - b.ToTable("server", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_ban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("AutoDelete") - .HasColumnType("boolean") - .HasColumnName("auto_delete"); - - b.Property("BanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("uuid") - .HasColumnName("banning_admin"); - - b.Property("ExemptFlags") - .HasColumnType("integer") - .HasColumnName("exempt_flags"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_ban_round_id"); - - b.ToTable("server_ban", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("Flags") - .HasColumnType("integer") - .HasColumnName("flags"); - - b.HasKey("UserId") - .HasName("PK_server_ban_exemption"); - - b.ToTable("server_ban_exemption", null, t => - { - t.HasCheckConstraint("FlagsNotZero", "flags != 0"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_ban_hit_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("ConnectionId") - .HasColumnType("integer") - .HasColumnName("connection_id"); - - b.HasKey("Id") - .HasName("PK_server_ban_hit"); - - b.HasIndex("BanId") - .HasDatabaseName("IX_server_ban_hit_ban_id"); - - b.HasIndex("ConnectionId") - .HasDatabaseName("IX_server_ban_hit_connection_id"); - - b.ToTable("server_ban_hit", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_role_ban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("BanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("uuid") - .HasColumnName("banning_admin"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("RoleId") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role_id"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_role_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_role_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_role_ban_round_id"); - - b.ToTable("server_role_ban", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("role_unban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("uuid") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_role_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_role_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("unban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("uuid") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("trait_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.Property("TraitName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("trait_name"); - - b.HasKey("Id") - .HasName("PK_trait"); - - b.HasIndex("ProfileId", "TraitName") - .IsUnique(); - - b.ToTable("trait", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("uploaded_resource_log_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Data") - .IsRequired() - .HasColumnType("bytea") - .HasColumnName("data"); - - b.Property("Date") - .HasColumnType("timestamp with time zone") - .HasColumnName("date"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_uploaded_resource_log"); - - b.ToTable("uploaded_resource_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Whitelist", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("UserId") - .HasName("PK_whitelist"); - - b.ToTable("whitelist", (string)null); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.Property("PlayersId") - .HasColumnType("integer") - .HasColumnName("players_id"); - - b.Property("RoundsId") - .HasColumnType("integer") - .HasColumnName("rounds_id"); - - b.HasKey("PlayersId", "RoundsId") - .HasName("PK_player_round"); - - b.HasIndex("RoundsId") - .HasDatabaseName("IX_player_round_rounds_id"); - - b.ToTable("player_round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.HasOne("Content.Server.Database.AdminRank", "AdminRank") - .WithMany("Admins") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); - - b.Navigation("AdminRank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.HasOne("Content.Server.Database.Admin", "Admin") - .WithMany("Flags") - .HasForeignKey("AdminId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_flag_admin_admin_id"); - - b.Navigation("Admin"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany("AdminLogs") - .HasForeignKey("RoundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_round_round_id"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminLogs") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_player_player_user_id"); - - b.HasOne("Content.Server.Database.AdminLog", "Log") - .WithMany("Players") - .HasForeignKey("RoundId", "LogId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); - - b.Navigation("Log"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminMessagesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminMessagesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminMessagesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminMessagesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_messages_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_messages_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminNotesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminNotesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminNotesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminNotesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_notes_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_notes_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.HasOne("Content.Server.Database.AdminRank", "Rank") - .WithMany("Flags") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); - - b.Navigation("Rank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminWatchlistsCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminWatchlistsDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminWatchlistsLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminWatchlistsReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_watchlists_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_watchlists_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Antags") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_antag_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("ConnectionLogs") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.SetNull) - .IsRequired() - .HasConstraintName("FK_connection_log_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Jobs") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_job_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.HasOne("Content.Server.Database.Preference", "Preference") - .WithMany("Profiles") - .HasForeignKey("PreferenceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_preference_preference_id"); - - b.Navigation("Preference"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") - .WithMany("Loadouts") - .HasForeignKey("ProfileLoadoutGroupId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group~"); - - b.Navigation("ProfileLoadoutGroup"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") - .WithMany("Groups") - .HasForeignKey("ProfileRoleLoadoutId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loa~"); - - b.Navigation("ProfileRoleLoadout"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Loadouts") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_player_player_id"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("Patron") - .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_player_player_id"); - - b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") - .WithMany("Patrons") - .HasForeignKey("TierId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); - - b.Navigation("Player"); - - b.Navigation("Tier"); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("JobWhitelists") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_role_whitelists_player_player_user_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("Rounds") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_round_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithMany("BanHits") - .HasForeignKey("BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); - - b.HasOne("Content.Server.Database.ConnectionLog", "Connection") - .WithMany("BanHits") - .HasForeignKey("ConnectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); - - b.Navigation("Ban"); - - b.Navigation("Connection"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerRoleBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerRoleBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_role_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_unban_server_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Traits") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_trait_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.HasOne("Content.Server.Database.Player", null) - .WithMany() - .HasForeignKey("PlayersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_player_players_id"); - - b.HasOne("Content.Server.Database.Round", null) - .WithMany() - .HasForeignKey("RoundsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_round_rounds_id"); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Navigation("Players"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Navigation("Admins"); - - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Navigation("BanHits"); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Navigation("AdminLogs"); - - b.Navigation("AdminMessagesCreated"); - - b.Navigation("AdminMessagesDeleted"); - - b.Navigation("AdminMessagesLastEdited"); - - b.Navigation("AdminMessagesReceived"); - - b.Navigation("AdminNotesCreated"); - - b.Navigation("AdminNotesDeleted"); - - b.Navigation("AdminNotesLastEdited"); - - b.Navigation("AdminNotesReceived"); - - b.Navigation("AdminServerBansCreated"); - - b.Navigation("AdminServerBansLastEdited"); - - b.Navigation("AdminServerRoleBansCreated"); - - b.Navigation("AdminServerRoleBansLastEdited"); - - b.Navigation("AdminWatchlistsCreated"); - - b.Navigation("AdminWatchlistsDeleted"); - - b.Navigation("AdminWatchlistsLastEdited"); - - b.Navigation("AdminWatchlistsReceived"); - - b.Navigation("JobWhitelists"); - - b.Navigation("LinkedAccount"); - - b.Navigation("Patron"); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Navigation("Profiles"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Navigation("Antags"); - - b.Navigation("Jobs"); - - b.Navigation("Loadouts"); - - b.Navigation("Traits"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Navigation("Loadouts"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Navigation("Groups"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Navigation("LinkedAccount") - .IsRequired(); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Navigation("Patrons"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Navigation("AdminLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Navigation("ConnectionLogs"); - - b.Navigation("Rounds"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Navigation("BanHits"); - - b.Navigation("Unban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Navigation("Unban"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Content.Server.Database/Migrations/Postgres/20240628092907_RMCPatronsRolePriority.cs b/Content.Server.Database/Migrations/Postgres/20240628092907_RMCPatronsRolePriority.cs deleted file mode 100644 index 1d474a64c3c..00000000000 --- a/Content.Server.Database/Migrations/Postgres/20240628092907_RMCPatronsRolePriority.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Content.Server.Database.Migrations.Postgres -{ - /// - public partial class DeltaVPatronsRolePriority : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "discord_role", - table: "patreon_tiers", - type: "numeric(20,0)", - nullable: false, - defaultValue: 0m); - - migrationBuilder.AddColumn( - name: "name", - table: "patreon_tiers", - type: "text", - nullable: false, - defaultValue: ""); - - migrationBuilder.AddColumn( - name: "priority", - table: "patreon_tiers", - type: "integer", - nullable: false, - defaultValue: 0); - - migrationBuilder.CreateIndex( - name: "IX_patreon_tiers_discord_role", - table: "patreon_tiers", - column: "discord_role", - unique: true); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropIndex( - name: "IX_patreon_tiers_discord_role", - table: "patreon_tiers"); - - migrationBuilder.DropColumn( - name: "discord_role", - table: "patreon_tiers"); - - migrationBuilder.DropColumn( - name: "name", - table: "patreon_tiers"); - - migrationBuilder.DropColumn( - name: "priority", - table: "patreon_tiers"); - } - } -} diff --git a/Content.Server.Database/Migrations/Postgres/20240628123728_RMCPatronsCode.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240628123728_RMCPatronsCode.Designer.cs deleted file mode 100644 index 704acbaa686..00000000000 --- a/Content.Server.Database/Migrations/Postgres/20240628123728_RMCPatronsCode.Designer.cs +++ /dev/null @@ -1,2144 +0,0 @@ -// -using System; -using System.Net; -using System.Text.Json; -using Content.Server.Database; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; -using NpgsqlTypes; - -#nullable disable - -namespace Content.Server.Database.Migrations.Postgres -{ - [DbContext(typeof(PostgresServerDbContext))] - [Migration("20240628123728_DeltaVPatronsCode")] - partial class DeltaVPatronsCode - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.0") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("AdminRankId") - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - b.Property("Title") - .HasColumnType("text") - .HasColumnName("title"); - - b.HasKey("UserId") - .HasName("PK_admin"); - - b.HasIndex("AdminRankId") - .HasDatabaseName("IX_admin_admin_rank_id"); - - b.ToTable("admin", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_flag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminId") - .HasColumnType("uuid") - .HasColumnName("admin_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flag"); - - b.Property("Negative") - .HasColumnType("boolean") - .HasColumnName("negative"); - - b.HasKey("Id") - .HasName("PK_admin_flag"); - - b.HasIndex("AdminId") - .HasDatabaseName("IX_admin_flag_admin_id"); - - b.HasIndex("Flag", "AdminId") - .IsUnique(); - - b.ToTable("admin_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("admin_log_id"); - - b.Property("Date") - .HasColumnType("timestamp with time zone") - .HasColumnName("date"); - - b.Property("Impact") - .HasColumnType("smallint") - .HasColumnName("impact"); - - b.Property("Json") - .IsRequired() - .HasColumnType("jsonb") - .HasColumnName("json"); - - b.Property("Message") - .IsRequired() - .HasColumnType("text") - .HasColumnName("message"); - - b.Property("Type") - .HasColumnType("integer") - .HasColumnName("type"); - - b.HasKey("RoundId", "Id") - .HasName("PK_admin_log"); - - b.HasIndex("Date"); - - b.HasIndex("Message") - .HasAnnotation("Npgsql:TsVectorConfig", "english"); - - NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN"); - - b.HasIndex("Type") - .HasDatabaseName("IX_admin_log_type"); - - b.ToTable("admin_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("LogId") - .HasColumnType("integer") - .HasColumnName("log_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.HasKey("RoundId", "LogId", "PlayerUserId") - .HasName("PK_admin_log_player"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_log_player_player_user_id"); - - b.ToTable("admin_log_player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_messages_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("Dismissed") - .HasColumnType("boolean") - .HasColumnName("dismissed"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Seen") - .HasColumnType("boolean") - .HasColumnName("seen"); - - b.HasKey("Id") - .HasName("PK_admin_messages"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_messages_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_messages_round_id"); - - b.ToTable("admin_messages", null, t => - { - t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_notes_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Secret") - .HasColumnType("boolean") - .HasColumnName("secret"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_admin_notes"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_notes_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_notes_round_id"); - - b.ToTable("admin_notes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_admin_rank"); - - b.ToTable("admin_rank", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_rank_flag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminRankId") - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flag"); - - b.HasKey("Id") - .HasName("PK_admin_rank_flag"); - - b.HasIndex("AdminRankId"); - - b.HasIndex("Flag", "AdminRankId") - .IsUnique(); - - b.ToTable("admin_rank_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_watchlists_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.HasKey("Id") - .HasName("PK_admin_watchlists"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_watchlists_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_watchlists_round_id"); - - b.ToTable("admin_watchlists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("antag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AntagName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("antag_name"); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_antag"); - - b.HasIndex("ProfileId", "AntagName") - .IsUnique(); - - b.ToTable("antag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("assigned_user_id_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_assigned_user_id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.HasIndex("UserName") - .IsUnique(); - - b.ToTable("assigned_user_id", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.BanTemplate", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("ban_template_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AutoDelete") - .HasColumnType("boolean") - .HasColumnName("auto_delete"); - - b.Property("ExemptFlags") - .HasColumnType("integer") - .HasColumnName("exempt_flags"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("Length") - .HasColumnType("interval") - .HasColumnName("length"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.Property("Title") - .IsRequired() - .HasColumnType("text") - .HasColumnName("title"); - - b.HasKey("Id") - .HasName("PK_ban_template"); - - b.ToTable("ban_template", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("connection_log_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .IsRequired() - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("Denied") - .HasColumnType("smallint") - .HasColumnName("denied"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("ServerId") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasDefaultValue(0) - .HasColumnName("server_id"); - - b.Property("Time") - .HasColumnType("timestamp with time zone") - .HasColumnName("time"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_connection_log"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_connection_log_server_id"); - - b.HasIndex("Time"); - - b.HasIndex("UserId"); - - b.ToTable("connection_log", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("job_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("JobName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("job_name"); - - b.Property("Priority") - .HasColumnType("integer") - .HasColumnName("priority"); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_job"); - - b.HasIndex("ProfileId"); - - b.HasIndex("ProfileId", "JobName") - .IsUnique(); - - b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") - .IsUnique() - .HasFilter("priority = 3"); - - b.ToTable("job", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.PlayTime", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("play_time_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("TimeSpent") - .HasColumnType("interval") - .HasColumnName("time_spent"); - - b.Property("Tracker") - .IsRequired() - .HasColumnType("text") - .HasColumnName("tracker"); - - b.HasKey("Id") - .HasName("PK_play_time"); - - b.HasIndex("PlayerId", "Tracker") - .IsUnique(); - - b.ToTable("play_time", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("player_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("FirstSeenTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("first_seen_time"); - - b.Property("LastReadRules") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_read_rules"); - - b.Property("LastSeenAddress") - .IsRequired() - .HasColumnType("inet") - .HasColumnName("last_seen_address"); - - b.Property("LastSeenHWId") - .HasColumnType("bytea") - .HasColumnName("last_seen_hwid"); - - b.Property("LastSeenTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_seen_time"); - - b.Property("LastSeenUserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("last_seen_user_name"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_player"); - - b.HasAlternateKey("UserId") - .HasName("ak_player_user_id"); - - b.HasIndex("LastSeenUserName"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("player", null, t => - { - t.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("preference_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminOOCColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("admin_ooc_color"); - - b.Property("SelectedCharacterSlot") - .HasColumnType("integer") - .HasColumnName("selected_character_slot"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_preference"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("preference", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Age") - .HasColumnType("integer") - .HasColumnName("age"); - - b.Property("CharacterName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("char_name"); - - b.Property("EyeColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("eye_color"); - - b.Property("FacialHairColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("facial_hair_color"); - - b.Property("FacialHairName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("facial_hair_name"); - - b.Property("FlavorText") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flavor_text"); - - b.Property("Gender") - .IsRequired() - .HasColumnType("text") - .HasColumnName("gender"); - - b.Property("HairColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("hair_color"); - - b.Property("HairName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("hair_name"); - - b.Property("Markings") - .HasColumnType("jsonb") - .HasColumnName("markings"); - - b.Property("PreferenceId") - .HasColumnType("integer") - .HasColumnName("preference_id"); - - b.Property("PreferenceUnavailable") - .HasColumnType("integer") - .HasColumnName("pref_unavailable"); - - b.Property("Sex") - .IsRequired() - .HasColumnType("text") - .HasColumnName("sex"); - - b.Property("SkinColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("skin_color"); - - b.Property("Slot") - .HasColumnType("integer") - .HasColumnName("slot"); - - b.Property("SpawnPriority") - .HasColumnType("integer") - .HasColumnName("spawn_priority"); - - b.Property("Species") - .IsRequired() - .HasColumnType("text") - .HasColumnName("species"); - - b.HasKey("Id") - .HasName("PK_profile"); - - b.HasIndex("PreferenceId") - .HasDatabaseName("IX_profile_preference_id"); - - b.HasIndex("Slot", "PreferenceId") - .IsUnique(); - - b.ToTable("profile", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_loadout_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("LoadoutName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("loadout_name"); - - b.Property("ProfileLoadoutGroupId") - .HasColumnType("integer") - .HasColumnName("profile_loadout_group_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout"); - - b.HasIndex("ProfileLoadoutGroupId"); - - b.ToTable("profile_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_loadout_group_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("GroupName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("group_name"); - - b.Property("ProfileRoleLoadoutId") - .HasColumnType("integer") - .HasColumnName("profile_role_loadout_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout_group"); - - b.HasIndex("ProfileRoleLoadoutId"); - - b.ToTable("profile_loadout_group", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_role_loadout_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.Property("RoleName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role_name"); - - b.HasKey("Id") - .HasName("PK_profile_role_loadout"); - - b.HasIndex("ProfileId"); - - b.ToTable("profile_role_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_accounts_id"); - - b.HasKey("Id") - .HasName("PK_discord_accounts"); - - b.ToTable("discord_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("DiscordId") - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_id"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linked_accounts"); - - b.HasIndex("DiscordId") - .IsUnique(); - - b.ToTable("discord_linked_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("Code") - .HasColumnType("uuid") - .HasColumnName("code"); - - b.Property("CreationTime") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone") - .HasColumnName("creation_time"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linking_codes"); - - b.HasIndex("Code") - .HasDatabaseName("IX_discord_linking_codes_code"); - - b.ToTable("discord_linking_codes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("TierId") - .HasColumnType("integer") - .HasColumnName("tier_id"); - - b.HasKey("PlayerId") - .HasName("PK_patreon_patrons"); - - b.HasIndex("TierId") - .HasDatabaseName("IX_patreon_patrons_tier_id"); - - b.ToTable("patreon_patrons", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("patreon_tiers_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DiscordRole") - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_role"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Priority") - .HasColumnType("integer") - .HasColumnName("priority"); - - b.Property("ShowOnCredits") - .HasColumnType("boolean") - .HasColumnName("show_on_credits"); - - b.HasKey("Id") - .HasName("PK_patreon_tiers"); - - b.HasIndex("DiscordRole") - .IsUnique(); - - b.ToTable("patreon_tiers", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("RoleId") - .HasColumnType("text") - .HasColumnName("role_id"); - - b.HasKey("PlayerUserId", "RoleId") - .HasName("PK_role_whitelists"); - - b.ToTable("role_whitelists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("round_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ServerId") - .HasColumnType("integer") - .HasColumnName("server_id"); - - b.Property("StartDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("PK_round"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_round_server_id"); - - b.HasIndex("StartDate"); - - b.ToTable("round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_server"); - - b.ToTable("server", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_ban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("AutoDelete") - .HasColumnType("boolean") - .HasColumnName("auto_delete"); - - b.Property("BanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("uuid") - .HasColumnName("banning_admin"); - - b.Property("ExemptFlags") - .HasColumnType("integer") - .HasColumnName("exempt_flags"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_ban_round_id"); - - b.ToTable("server_ban", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("Flags") - .HasColumnType("integer") - .HasColumnName("flags"); - - b.HasKey("UserId") - .HasName("PK_server_ban_exemption"); - - b.ToTable("server_ban_exemption", null, t => - { - t.HasCheckConstraint("FlagsNotZero", "flags != 0"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_ban_hit_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("ConnectionId") - .HasColumnType("integer") - .HasColumnName("connection_id"); - - b.HasKey("Id") - .HasName("PK_server_ban_hit"); - - b.HasIndex("BanId") - .HasDatabaseName("IX_server_ban_hit_ban_id"); - - b.HasIndex("ConnectionId") - .HasDatabaseName("IX_server_ban_hit_connection_id"); - - b.ToTable("server_ban_hit", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_role_ban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("BanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("uuid") - .HasColumnName("banning_admin"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("RoleId") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role_id"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_role_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_role_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_role_ban_round_id"); - - b.ToTable("server_role_ban", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("role_unban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("uuid") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_role_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_role_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("unban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("uuid") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("trait_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.Property("TraitName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("trait_name"); - - b.HasKey("Id") - .HasName("PK_trait"); - - b.HasIndex("ProfileId", "TraitName") - .IsUnique(); - - b.ToTable("trait", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("uploaded_resource_log_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Data") - .IsRequired() - .HasColumnType("bytea") - .HasColumnName("data"); - - b.Property("Date") - .HasColumnType("timestamp with time zone") - .HasColumnName("date"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_uploaded_resource_log"); - - b.ToTable("uploaded_resource_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Whitelist", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("UserId") - .HasName("PK_whitelist"); - - b.ToTable("whitelist", (string)null); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.Property("PlayersId") - .HasColumnType("integer") - .HasColumnName("players_id"); - - b.Property("RoundsId") - .HasColumnType("integer") - .HasColumnName("rounds_id"); - - b.HasKey("PlayersId", "RoundsId") - .HasName("PK_player_round"); - - b.HasIndex("RoundsId") - .HasDatabaseName("IX_player_round_rounds_id"); - - b.ToTable("player_round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.HasOne("Content.Server.Database.AdminRank", "AdminRank") - .WithMany("Admins") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); - - b.Navigation("AdminRank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.HasOne("Content.Server.Database.Admin", "Admin") - .WithMany("Flags") - .HasForeignKey("AdminId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_flag_admin_admin_id"); - - b.Navigation("Admin"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany("AdminLogs") - .HasForeignKey("RoundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_round_round_id"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminLogs") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_player_player_user_id"); - - b.HasOne("Content.Server.Database.AdminLog", "Log") - .WithMany("Players") - .HasForeignKey("RoundId", "LogId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); - - b.Navigation("Log"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminMessagesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminMessagesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminMessagesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminMessagesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_messages_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_messages_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminNotesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminNotesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminNotesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminNotesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_notes_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_notes_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.HasOne("Content.Server.Database.AdminRank", "Rank") - .WithMany("Flags") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); - - b.Navigation("Rank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminWatchlistsCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminWatchlistsDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminWatchlistsLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminWatchlistsReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_watchlists_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_watchlists_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Antags") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_antag_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("ConnectionLogs") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.SetNull) - .IsRequired() - .HasConstraintName("FK_connection_log_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Jobs") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_job_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.HasOne("Content.Server.Database.Preference", "Preference") - .WithMany("Profiles") - .HasForeignKey("PreferenceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_preference_preference_id"); - - b.Navigation("Preference"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") - .WithMany("Loadouts") - .HasForeignKey("ProfileLoadoutGroupId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group~"); - - b.Navigation("ProfileLoadoutGroup"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") - .WithMany("Groups") - .HasForeignKey("ProfileRoleLoadoutId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loa~"); - - b.Navigation("ProfileRoleLoadout"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Loadouts") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_player_player_id"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkingCodes") - .HasForeignKey("Content.Server.Database.DiscordLinkingCodes", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linking_codes_player_player_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("Patron") - .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_player_player_id"); - - b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") - .WithMany("Patrons") - .HasForeignKey("TierId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); - - b.Navigation("Player"); - - b.Navigation("Tier"); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("JobWhitelists") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_role_whitelists_player_player_user_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("Rounds") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_round_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithMany("BanHits") - .HasForeignKey("BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); - - b.HasOne("Content.Server.Database.ConnectionLog", "Connection") - .WithMany("BanHits") - .HasForeignKey("ConnectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); - - b.Navigation("Ban"); - - b.Navigation("Connection"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerRoleBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerRoleBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_role_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_unban_server_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Traits") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_trait_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.HasOne("Content.Server.Database.Player", null) - .WithMany() - .HasForeignKey("PlayersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_player_players_id"); - - b.HasOne("Content.Server.Database.Round", null) - .WithMany() - .HasForeignKey("RoundsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_round_rounds_id"); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Navigation("Players"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Navigation("Admins"); - - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Navigation("BanHits"); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Navigation("AdminLogs"); - - b.Navigation("AdminMessagesCreated"); - - b.Navigation("AdminMessagesDeleted"); - - b.Navigation("AdminMessagesLastEdited"); - - b.Navigation("AdminMessagesReceived"); - - b.Navigation("AdminNotesCreated"); - - b.Navigation("AdminNotesDeleted"); - - b.Navigation("AdminNotesLastEdited"); - - b.Navigation("AdminNotesReceived"); - - b.Navigation("AdminServerBansCreated"); - - b.Navigation("AdminServerBansLastEdited"); - - b.Navigation("AdminServerRoleBansCreated"); - - b.Navigation("AdminServerRoleBansLastEdited"); - - b.Navigation("AdminWatchlistsCreated"); - - b.Navigation("AdminWatchlistsDeleted"); - - b.Navigation("AdminWatchlistsLastEdited"); - - b.Navigation("AdminWatchlistsReceived"); - - b.Navigation("JobWhitelists"); - - b.Navigation("LinkedAccount"); - - b.Navigation("LinkingCodes"); - - b.Navigation("Patron"); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Navigation("Profiles"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Navigation("Antags"); - - b.Navigation("Jobs"); - - b.Navigation("Loadouts"); - - b.Navigation("Traits"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Navigation("Loadouts"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Navigation("Groups"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Navigation("LinkedAccount") - .IsRequired(); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Navigation("Patrons"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Navigation("AdminLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Navigation("ConnectionLogs"); - - b.Navigation("Rounds"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Navigation("BanHits"); - - b.Navigation("Unban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Navigation("Unban"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Content.Server.Database/Migrations/Postgres/20240628123728_RMCPatronsCode.cs b/Content.Server.Database/Migrations/Postgres/20240628123728_RMCPatronsCode.cs deleted file mode 100644 index 9a9ff405797..00000000000 --- a/Content.Server.Database/Migrations/Postgres/20240628123728_RMCPatronsCode.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Content.Server.Database.Migrations.Postgres -{ - /// - public partial class DeltaVPatronsCode : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "discord_linking_codes", - columns: table => new - { - player_id = table.Column(type: "uuid", nullable: false), - code = table.Column(type: "uuid", nullable: false), - creation_time = table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_discord_linking_codes", x => x.player_id); - table.ForeignKey( - name: "FK_discord_linking_codes_player_player_id", - column: x => x.player_id, - principalTable: "player", - principalColumn: "user_id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_discord_linking_codes_code", - table: "discord_linking_codes", - column: "code"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "discord_linking_codes"); - } - } -} diff --git a/Content.Server.Database/Migrations/Postgres/20240628214817_RMCPatronsCodeDate.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240628214817_RMCPatronsCodeDate.Designer.cs deleted file mode 100644 index e90417672d7..00000000000 --- a/Content.Server.Database/Migrations/Postgres/20240628214817_RMCPatronsCodeDate.Designer.cs +++ /dev/null @@ -1,2143 +0,0 @@ -// -using System; -using System.Net; -using System.Text.Json; -using Content.Server.Database; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; -using NpgsqlTypes; - -#nullable disable - -namespace Content.Server.Database.Migrations.Postgres -{ - [DbContext(typeof(PostgresServerDbContext))] - [Migration("20240628214817_DeltaVPatronsCodeDate")] - partial class DeltaVPatronsCodeDate - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.0") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("AdminRankId") - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - b.Property("Title") - .HasColumnType("text") - .HasColumnName("title"); - - b.HasKey("UserId") - .HasName("PK_admin"); - - b.HasIndex("AdminRankId") - .HasDatabaseName("IX_admin_admin_rank_id"); - - b.ToTable("admin", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_flag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminId") - .HasColumnType("uuid") - .HasColumnName("admin_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flag"); - - b.Property("Negative") - .HasColumnType("boolean") - .HasColumnName("negative"); - - b.HasKey("Id") - .HasName("PK_admin_flag"); - - b.HasIndex("AdminId") - .HasDatabaseName("IX_admin_flag_admin_id"); - - b.HasIndex("Flag", "AdminId") - .IsUnique(); - - b.ToTable("admin_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("admin_log_id"); - - b.Property("Date") - .HasColumnType("timestamp with time zone") - .HasColumnName("date"); - - b.Property("Impact") - .HasColumnType("smallint") - .HasColumnName("impact"); - - b.Property("Json") - .IsRequired() - .HasColumnType("jsonb") - .HasColumnName("json"); - - b.Property("Message") - .IsRequired() - .HasColumnType("text") - .HasColumnName("message"); - - b.Property("Type") - .HasColumnType("integer") - .HasColumnName("type"); - - b.HasKey("RoundId", "Id") - .HasName("PK_admin_log"); - - b.HasIndex("Date"); - - b.HasIndex("Message") - .HasAnnotation("Npgsql:TsVectorConfig", "english"); - - NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN"); - - b.HasIndex("Type") - .HasDatabaseName("IX_admin_log_type"); - - b.ToTable("admin_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("LogId") - .HasColumnType("integer") - .HasColumnName("log_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.HasKey("RoundId", "LogId", "PlayerUserId") - .HasName("PK_admin_log_player"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_log_player_player_user_id"); - - b.ToTable("admin_log_player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_messages_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("Dismissed") - .HasColumnType("boolean") - .HasColumnName("dismissed"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Seen") - .HasColumnType("boolean") - .HasColumnName("seen"); - - b.HasKey("Id") - .HasName("PK_admin_messages"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_messages_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_messages_round_id"); - - b.ToTable("admin_messages", null, t => - { - t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_notes_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Secret") - .HasColumnType("boolean") - .HasColumnName("secret"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_admin_notes"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_notes_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_notes_round_id"); - - b.ToTable("admin_notes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_admin_rank"); - - b.ToTable("admin_rank", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_rank_flag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminRankId") - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flag"); - - b.HasKey("Id") - .HasName("PK_admin_rank_flag"); - - b.HasIndex("AdminRankId"); - - b.HasIndex("Flag", "AdminRankId") - .IsUnique(); - - b.ToTable("admin_rank_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_watchlists_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.HasKey("Id") - .HasName("PK_admin_watchlists"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_watchlists_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_watchlists_round_id"); - - b.ToTable("admin_watchlists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("antag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AntagName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("antag_name"); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_antag"); - - b.HasIndex("ProfileId", "AntagName") - .IsUnique(); - - b.ToTable("antag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("assigned_user_id_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_assigned_user_id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.HasIndex("UserName") - .IsUnique(); - - b.ToTable("assigned_user_id", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.BanTemplate", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("ban_template_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AutoDelete") - .HasColumnType("boolean") - .HasColumnName("auto_delete"); - - b.Property("ExemptFlags") - .HasColumnType("integer") - .HasColumnName("exempt_flags"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("Length") - .HasColumnType("interval") - .HasColumnName("length"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.Property("Title") - .IsRequired() - .HasColumnType("text") - .HasColumnName("title"); - - b.HasKey("Id") - .HasName("PK_ban_template"); - - b.ToTable("ban_template", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("connection_log_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .IsRequired() - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("Denied") - .HasColumnType("smallint") - .HasColumnName("denied"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("ServerId") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasDefaultValue(0) - .HasColumnName("server_id"); - - b.Property("Time") - .HasColumnType("timestamp with time zone") - .HasColumnName("time"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_connection_log"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_connection_log_server_id"); - - b.HasIndex("Time"); - - b.HasIndex("UserId"); - - b.ToTable("connection_log", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("job_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("JobName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("job_name"); - - b.Property("Priority") - .HasColumnType("integer") - .HasColumnName("priority"); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_job"); - - b.HasIndex("ProfileId"); - - b.HasIndex("ProfileId", "JobName") - .IsUnique(); - - b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") - .IsUnique() - .HasFilter("priority = 3"); - - b.ToTable("job", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.PlayTime", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("play_time_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("TimeSpent") - .HasColumnType("interval") - .HasColumnName("time_spent"); - - b.Property("Tracker") - .IsRequired() - .HasColumnType("text") - .HasColumnName("tracker"); - - b.HasKey("Id") - .HasName("PK_play_time"); - - b.HasIndex("PlayerId", "Tracker") - .IsUnique(); - - b.ToTable("play_time", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("player_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("FirstSeenTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("first_seen_time"); - - b.Property("LastReadRules") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_read_rules"); - - b.Property("LastSeenAddress") - .IsRequired() - .HasColumnType("inet") - .HasColumnName("last_seen_address"); - - b.Property("LastSeenHWId") - .HasColumnType("bytea") - .HasColumnName("last_seen_hwid"); - - b.Property("LastSeenTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_seen_time"); - - b.Property("LastSeenUserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("last_seen_user_name"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_player"); - - b.HasAlternateKey("UserId") - .HasName("ak_player_user_id"); - - b.HasIndex("LastSeenUserName"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("player", null, t => - { - t.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("preference_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminOOCColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("admin_ooc_color"); - - b.Property("SelectedCharacterSlot") - .HasColumnType("integer") - .HasColumnName("selected_character_slot"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_preference"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("preference", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Age") - .HasColumnType("integer") - .HasColumnName("age"); - - b.Property("CharacterName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("char_name"); - - b.Property("EyeColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("eye_color"); - - b.Property("FacialHairColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("facial_hair_color"); - - b.Property("FacialHairName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("facial_hair_name"); - - b.Property("FlavorText") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flavor_text"); - - b.Property("Gender") - .IsRequired() - .HasColumnType("text") - .HasColumnName("gender"); - - b.Property("HairColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("hair_color"); - - b.Property("HairName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("hair_name"); - - b.Property("Markings") - .HasColumnType("jsonb") - .HasColumnName("markings"); - - b.Property("PreferenceId") - .HasColumnType("integer") - .HasColumnName("preference_id"); - - b.Property("PreferenceUnavailable") - .HasColumnType("integer") - .HasColumnName("pref_unavailable"); - - b.Property("Sex") - .IsRequired() - .HasColumnType("text") - .HasColumnName("sex"); - - b.Property("SkinColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("skin_color"); - - b.Property("Slot") - .HasColumnType("integer") - .HasColumnName("slot"); - - b.Property("SpawnPriority") - .HasColumnType("integer") - .HasColumnName("spawn_priority"); - - b.Property("Species") - .IsRequired() - .HasColumnType("text") - .HasColumnName("species"); - - b.HasKey("Id") - .HasName("PK_profile"); - - b.HasIndex("PreferenceId") - .HasDatabaseName("IX_profile_preference_id"); - - b.HasIndex("Slot", "PreferenceId") - .IsUnique(); - - b.ToTable("profile", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_loadout_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("LoadoutName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("loadout_name"); - - b.Property("ProfileLoadoutGroupId") - .HasColumnType("integer") - .HasColumnName("profile_loadout_group_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout"); - - b.HasIndex("ProfileLoadoutGroupId"); - - b.ToTable("profile_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_loadout_group_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("GroupName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("group_name"); - - b.Property("ProfileRoleLoadoutId") - .HasColumnType("integer") - .HasColumnName("profile_role_loadout_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout_group"); - - b.HasIndex("ProfileRoleLoadoutId"); - - b.ToTable("profile_loadout_group", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_role_loadout_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.Property("RoleName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role_name"); - - b.HasKey("Id") - .HasName("PK_profile_role_loadout"); - - b.HasIndex("ProfileId"); - - b.ToTable("profile_role_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_accounts_id"); - - b.HasKey("Id") - .HasName("PK_discord_accounts"); - - b.ToTable("discord_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("DiscordId") - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_id"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linked_accounts"); - - b.HasIndex("DiscordId") - .IsUnique(); - - b.ToTable("discord_linked_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("Code") - .HasColumnType("uuid") - .HasColumnName("code"); - - b.Property("CreationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("creation_time"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linking_codes"); - - b.HasIndex("Code") - .HasDatabaseName("IX_discord_linking_codes_code"); - - b.ToTable("discord_linking_codes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("TierId") - .HasColumnType("integer") - .HasColumnName("tier_id"); - - b.HasKey("PlayerId") - .HasName("PK_patreon_patrons"); - - b.HasIndex("TierId") - .HasDatabaseName("IX_patreon_patrons_tier_id"); - - b.ToTable("patreon_patrons", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("patreon_tiers_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DiscordRole") - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_role"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Priority") - .HasColumnType("integer") - .HasColumnName("priority"); - - b.Property("ShowOnCredits") - .HasColumnType("boolean") - .HasColumnName("show_on_credits"); - - b.HasKey("Id") - .HasName("PK_patreon_tiers"); - - b.HasIndex("DiscordRole") - .IsUnique(); - - b.ToTable("patreon_tiers", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("RoleId") - .HasColumnType("text") - .HasColumnName("role_id"); - - b.HasKey("PlayerUserId", "RoleId") - .HasName("PK_role_whitelists"); - - b.ToTable("role_whitelists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("round_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ServerId") - .HasColumnType("integer") - .HasColumnName("server_id"); - - b.Property("StartDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("PK_round"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_round_server_id"); - - b.HasIndex("StartDate"); - - b.ToTable("round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_server"); - - b.ToTable("server", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_ban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("AutoDelete") - .HasColumnType("boolean") - .HasColumnName("auto_delete"); - - b.Property("BanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("uuid") - .HasColumnName("banning_admin"); - - b.Property("ExemptFlags") - .HasColumnType("integer") - .HasColumnName("exempt_flags"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_ban_round_id"); - - b.ToTable("server_ban", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("Flags") - .HasColumnType("integer") - .HasColumnName("flags"); - - b.HasKey("UserId") - .HasName("PK_server_ban_exemption"); - - b.ToTable("server_ban_exemption", null, t => - { - t.HasCheckConstraint("FlagsNotZero", "flags != 0"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_ban_hit_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("ConnectionId") - .HasColumnType("integer") - .HasColumnName("connection_id"); - - b.HasKey("Id") - .HasName("PK_server_ban_hit"); - - b.HasIndex("BanId") - .HasDatabaseName("IX_server_ban_hit_ban_id"); - - b.HasIndex("ConnectionId") - .HasDatabaseName("IX_server_ban_hit_connection_id"); - - b.ToTable("server_ban_hit", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_role_ban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("BanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("uuid") - .HasColumnName("banning_admin"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("RoleId") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role_id"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_role_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_role_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_role_ban_round_id"); - - b.ToTable("server_role_ban", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("role_unban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("uuid") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_role_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_role_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("unban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("uuid") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("trait_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.Property("TraitName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("trait_name"); - - b.HasKey("Id") - .HasName("PK_trait"); - - b.HasIndex("ProfileId", "TraitName") - .IsUnique(); - - b.ToTable("trait", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("uploaded_resource_log_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Data") - .IsRequired() - .HasColumnType("bytea") - .HasColumnName("data"); - - b.Property("Date") - .HasColumnType("timestamp with time zone") - .HasColumnName("date"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_uploaded_resource_log"); - - b.ToTable("uploaded_resource_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Whitelist", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("UserId") - .HasName("PK_whitelist"); - - b.ToTable("whitelist", (string)null); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.Property("PlayersId") - .HasColumnType("integer") - .HasColumnName("players_id"); - - b.Property("RoundsId") - .HasColumnType("integer") - .HasColumnName("rounds_id"); - - b.HasKey("PlayersId", "RoundsId") - .HasName("PK_player_round"); - - b.HasIndex("RoundsId") - .HasDatabaseName("IX_player_round_rounds_id"); - - b.ToTable("player_round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.HasOne("Content.Server.Database.AdminRank", "AdminRank") - .WithMany("Admins") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); - - b.Navigation("AdminRank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.HasOne("Content.Server.Database.Admin", "Admin") - .WithMany("Flags") - .HasForeignKey("AdminId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_flag_admin_admin_id"); - - b.Navigation("Admin"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany("AdminLogs") - .HasForeignKey("RoundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_round_round_id"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminLogs") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_player_player_user_id"); - - b.HasOne("Content.Server.Database.AdminLog", "Log") - .WithMany("Players") - .HasForeignKey("RoundId", "LogId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); - - b.Navigation("Log"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminMessagesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminMessagesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminMessagesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminMessagesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_messages_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_messages_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminNotesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminNotesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminNotesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminNotesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_notes_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_notes_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.HasOne("Content.Server.Database.AdminRank", "Rank") - .WithMany("Flags") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); - - b.Navigation("Rank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminWatchlistsCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminWatchlistsDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminWatchlistsLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminWatchlistsReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_watchlists_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_watchlists_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Antags") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_antag_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("ConnectionLogs") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.SetNull) - .IsRequired() - .HasConstraintName("FK_connection_log_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Jobs") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_job_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.HasOne("Content.Server.Database.Preference", "Preference") - .WithMany("Profiles") - .HasForeignKey("PreferenceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_preference_preference_id"); - - b.Navigation("Preference"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") - .WithMany("Loadouts") - .HasForeignKey("ProfileLoadoutGroupId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group~"); - - b.Navigation("ProfileLoadoutGroup"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") - .WithMany("Groups") - .HasForeignKey("ProfileRoleLoadoutId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loa~"); - - b.Navigation("ProfileRoleLoadout"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Loadouts") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_player_player_id"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkingCodes") - .HasForeignKey("Content.Server.Database.DiscordLinkingCodes", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linking_codes_player_player_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("Patron") - .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_player_player_id"); - - b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") - .WithMany("Patrons") - .HasForeignKey("TierId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); - - b.Navigation("Player"); - - b.Navigation("Tier"); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("JobWhitelists") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_role_whitelists_player_player_user_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("Rounds") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_round_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithMany("BanHits") - .HasForeignKey("BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); - - b.HasOne("Content.Server.Database.ConnectionLog", "Connection") - .WithMany("BanHits") - .HasForeignKey("ConnectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); - - b.Navigation("Ban"); - - b.Navigation("Connection"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerRoleBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerRoleBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_role_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_unban_server_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Traits") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_trait_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.HasOne("Content.Server.Database.Player", null) - .WithMany() - .HasForeignKey("PlayersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_player_players_id"); - - b.HasOne("Content.Server.Database.Round", null) - .WithMany() - .HasForeignKey("RoundsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_round_rounds_id"); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Navigation("Players"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Navigation("Admins"); - - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Navigation("BanHits"); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Navigation("AdminLogs"); - - b.Navigation("AdminMessagesCreated"); - - b.Navigation("AdminMessagesDeleted"); - - b.Navigation("AdminMessagesLastEdited"); - - b.Navigation("AdminMessagesReceived"); - - b.Navigation("AdminNotesCreated"); - - b.Navigation("AdminNotesDeleted"); - - b.Navigation("AdminNotesLastEdited"); - - b.Navigation("AdminNotesReceived"); - - b.Navigation("AdminServerBansCreated"); - - b.Navigation("AdminServerBansLastEdited"); - - b.Navigation("AdminServerRoleBansCreated"); - - b.Navigation("AdminServerRoleBansLastEdited"); - - b.Navigation("AdminWatchlistsCreated"); - - b.Navigation("AdminWatchlistsDeleted"); - - b.Navigation("AdminWatchlistsLastEdited"); - - b.Navigation("AdminWatchlistsReceived"); - - b.Navigation("JobWhitelists"); - - b.Navigation("LinkedAccount"); - - b.Navigation("LinkingCodes"); - - b.Navigation("Patron"); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Navigation("Profiles"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Navigation("Antags"); - - b.Navigation("Jobs"); - - b.Navigation("Loadouts"); - - b.Navigation("Traits"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Navigation("Loadouts"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Navigation("Groups"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Navigation("LinkedAccount") - .IsRequired(); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Navigation("Patrons"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Navigation("AdminLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Navigation("ConnectionLogs"); - - b.Navigation("Rounds"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Navigation("BanHits"); - - b.Navigation("Unban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Navigation("Unban"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Content.Server.Database/Migrations/Postgres/20240628214817_RMCPatronsCodeDate.cs b/Content.Server.Database/Migrations/Postgres/20240628214817_RMCPatronsCodeDate.cs deleted file mode 100644 index cb58caeb331..00000000000 --- a/Content.Server.Database/Migrations/Postgres/20240628214817_RMCPatronsCodeDate.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Content.Server.Database.Migrations.Postgres -{ - /// - public partial class DeltaVPatronsCodeDate : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - - } - } -} diff --git a/Content.Server.Database/Migrations/Postgres/20240629045126_RMCLinkedAccountLogs.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240629045126_RMCLinkedAccountLogs.Designer.cs deleted file mode 100644 index 8d8e50366d5..00000000000 --- a/Content.Server.Database/Migrations/Postgres/20240629045126_RMCLinkedAccountLogs.Designer.cs +++ /dev/null @@ -1,2205 +0,0 @@ -// -using System; -using System.Net; -using System.Text.Json; -using Content.Server.Database; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; -using NpgsqlTypes; - -#nullable disable - -namespace Content.Server.Database.Migrations.Postgres -{ - [DbContext(typeof(PostgresServerDbContext))] - [Migration("20240629045126_DiscordLinkedAccountLogs")] - partial class DiscordLinkedAccountLogs - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.0") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("AdminRankId") - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - b.Property("Title") - .HasColumnType("text") - .HasColumnName("title"); - - b.HasKey("UserId") - .HasName("PK_admin"); - - b.HasIndex("AdminRankId") - .HasDatabaseName("IX_admin_admin_rank_id"); - - b.ToTable("admin", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_flag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminId") - .HasColumnType("uuid") - .HasColumnName("admin_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flag"); - - b.Property("Negative") - .HasColumnType("boolean") - .HasColumnName("negative"); - - b.HasKey("Id") - .HasName("PK_admin_flag"); - - b.HasIndex("AdminId") - .HasDatabaseName("IX_admin_flag_admin_id"); - - b.HasIndex("Flag", "AdminId") - .IsUnique(); - - b.ToTable("admin_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("admin_log_id"); - - b.Property("Date") - .HasColumnType("timestamp with time zone") - .HasColumnName("date"); - - b.Property("Impact") - .HasColumnType("smallint") - .HasColumnName("impact"); - - b.Property("Json") - .IsRequired() - .HasColumnType("jsonb") - .HasColumnName("json"); - - b.Property("Message") - .IsRequired() - .HasColumnType("text") - .HasColumnName("message"); - - b.Property("Type") - .HasColumnType("integer") - .HasColumnName("type"); - - b.HasKey("RoundId", "Id") - .HasName("PK_admin_log"); - - b.HasIndex("Date"); - - b.HasIndex("Message") - .HasAnnotation("Npgsql:TsVectorConfig", "english"); - - NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN"); - - b.HasIndex("Type") - .HasDatabaseName("IX_admin_log_type"); - - b.ToTable("admin_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("LogId") - .HasColumnType("integer") - .HasColumnName("log_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.HasKey("RoundId", "LogId", "PlayerUserId") - .HasName("PK_admin_log_player"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_log_player_player_user_id"); - - b.ToTable("admin_log_player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_messages_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("Dismissed") - .HasColumnType("boolean") - .HasColumnName("dismissed"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Seen") - .HasColumnType("boolean") - .HasColumnName("seen"); - - b.HasKey("Id") - .HasName("PK_admin_messages"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_messages_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_messages_round_id"); - - b.ToTable("admin_messages", null, t => - { - t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_notes_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Secret") - .HasColumnType("boolean") - .HasColumnName("secret"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_admin_notes"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_notes_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_notes_round_id"); - - b.ToTable("admin_notes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_admin_rank"); - - b.ToTable("admin_rank", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_rank_flag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminRankId") - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flag"); - - b.HasKey("Id") - .HasName("PK_admin_rank_flag"); - - b.HasIndex("AdminRankId"); - - b.HasIndex("Flag", "AdminRankId") - .IsUnique(); - - b.ToTable("admin_rank_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_watchlists_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("uuid") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("boolean") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("uuid") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("character varying(4096)") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.HasKey("Id") - .HasName("PK_admin_watchlists"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_watchlists_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_watchlists_round_id"); - - b.ToTable("admin_watchlists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("antag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AntagName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("antag_name"); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_antag"); - - b.HasIndex("ProfileId", "AntagName") - .IsUnique(); - - b.ToTable("antag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("assigned_user_id_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_assigned_user_id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.HasIndex("UserName") - .IsUnique(); - - b.ToTable("assigned_user_id", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.BanTemplate", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("ban_template_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AutoDelete") - .HasColumnType("boolean") - .HasColumnName("auto_delete"); - - b.Property("ExemptFlags") - .HasColumnType("integer") - .HasColumnName("exempt_flags"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("Length") - .HasColumnType("interval") - .HasColumnName("length"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.Property("Title") - .IsRequired() - .HasColumnType("text") - .HasColumnName("title"); - - b.HasKey("Id") - .HasName("PK_ban_template"); - - b.ToTable("ban_template", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("connection_log_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .IsRequired() - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("Denied") - .HasColumnType("smallint") - .HasColumnName("denied"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("ServerId") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasDefaultValue(0) - .HasColumnName("server_id"); - - b.Property("Time") - .HasColumnType("timestamp with time zone") - .HasColumnName("time"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_connection_log"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_connection_log_server_id"); - - b.HasIndex("Time"); - - b.HasIndex("UserId"); - - b.ToTable("connection_log", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("job_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("JobName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("job_name"); - - b.Property("Priority") - .HasColumnType("integer") - .HasColumnName("priority"); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_job"); - - b.HasIndex("ProfileId"); - - b.HasIndex("ProfileId", "JobName") - .IsUnique(); - - b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") - .IsUnique() - .HasFilter("priority = 3"); - - b.ToTable("job", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.PlayTime", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("play_time_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("TimeSpent") - .HasColumnType("interval") - .HasColumnName("time_spent"); - - b.Property("Tracker") - .IsRequired() - .HasColumnType("text") - .HasColumnName("tracker"); - - b.HasKey("Id") - .HasName("PK_play_time"); - - b.HasIndex("PlayerId", "Tracker") - .IsUnique(); - - b.ToTable("play_time", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("player_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("FirstSeenTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("first_seen_time"); - - b.Property("LastReadRules") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_read_rules"); - - b.Property("LastSeenAddress") - .IsRequired() - .HasColumnType("inet") - .HasColumnName("last_seen_address"); - - b.Property("LastSeenHWId") - .HasColumnType("bytea") - .HasColumnName("last_seen_hwid"); - - b.Property("LastSeenTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_seen_time"); - - b.Property("LastSeenUserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("last_seen_user_name"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_player"); - - b.HasAlternateKey("UserId") - .HasName("ak_player_user_id"); - - b.HasIndex("LastSeenUserName"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("player", null, t => - { - t.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("preference_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminOOCColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("admin_ooc_color"); - - b.Property("SelectedCharacterSlot") - .HasColumnType("integer") - .HasColumnName("selected_character_slot"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_preference"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("preference", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Age") - .HasColumnType("integer") - .HasColumnName("age"); - - b.Property("CharacterName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("char_name"); - - b.Property("EyeColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("eye_color"); - - b.Property("FacialHairColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("facial_hair_color"); - - b.Property("FacialHairName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("facial_hair_name"); - - b.Property("FlavorText") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flavor_text"); - - b.Property("Gender") - .IsRequired() - .HasColumnType("text") - .HasColumnName("gender"); - - b.Property("HairColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("hair_color"); - - b.Property("HairName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("hair_name"); - - b.Property("Markings") - .HasColumnType("jsonb") - .HasColumnName("markings"); - - b.Property("PreferenceId") - .HasColumnType("integer") - .HasColumnName("preference_id"); - - b.Property("PreferenceUnavailable") - .HasColumnType("integer") - .HasColumnName("pref_unavailable"); - - b.Property("Sex") - .IsRequired() - .HasColumnType("text") - .HasColumnName("sex"); - - b.Property("SkinColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("skin_color"); - - b.Property("Slot") - .HasColumnType("integer") - .HasColumnName("slot"); - - b.Property("SpawnPriority") - .HasColumnType("integer") - .HasColumnName("spawn_priority"); - - b.Property("Species") - .IsRequired() - .HasColumnType("text") - .HasColumnName("species"); - - b.HasKey("Id") - .HasName("PK_profile"); - - b.HasIndex("PreferenceId") - .HasDatabaseName("IX_profile_preference_id"); - - b.HasIndex("Slot", "PreferenceId") - .IsUnique(); - - b.ToTable("profile", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_loadout_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("LoadoutName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("loadout_name"); - - b.Property("ProfileLoadoutGroupId") - .HasColumnType("integer") - .HasColumnName("profile_loadout_group_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout"); - - b.HasIndex("ProfileLoadoutGroupId"); - - b.ToTable("profile_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_loadout_group_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("GroupName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("group_name"); - - b.Property("ProfileRoleLoadoutId") - .HasColumnType("integer") - .HasColumnName("profile_role_loadout_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout_group"); - - b.HasIndex("ProfileRoleLoadoutId"); - - b.ToTable("profile_loadout_group", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_role_loadout_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.Property("RoleName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role_name"); - - b.HasKey("Id") - .HasName("PK_profile_role_loadout"); - - b.HasIndex("ProfileId"); - - b.ToTable("profile_role_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_accounts_id"); - - b.HasKey("Id") - .HasName("PK_discord_accounts"); - - b.ToTable("discord_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("DiscordId") - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_id"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linked_accounts"); - - b.HasIndex("DiscordId") - .IsUnique(); - - b.ToTable("discord_linked_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("discord_linked_accounts_logs_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("At") - .HasColumnType("timestamp with time zone") - .HasColumnName("at"); - - b.Property("DiscordId") - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_id"); - - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.HasKey("Id") - .HasName("PK_discord_linked_accounts_logs"); - - b.HasIndex("At") - .HasDatabaseName("IX_discord_linked_accounts_logs_at"); - - b.HasIndex("DiscordId") - .HasDatabaseName("IX_discord_linked_accounts_logs_discord_id"); - - b.HasIndex("PlayerId") - .HasDatabaseName("IX_discord_linked_accounts_logs_player_id"); - - b.ToTable("discord_linked_accounts_logs", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("Code") - .HasColumnType("uuid") - .HasColumnName("code"); - - b.Property("CreationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("creation_time"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linking_codes"); - - b.HasIndex("Code") - .HasDatabaseName("IX_discord_linking_codes_code"); - - b.ToTable("discord_linking_codes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("TierId") - .HasColumnType("integer") - .HasColumnName("tier_id"); - - b.HasKey("PlayerId") - .HasName("PK_patreon_patrons"); - - b.HasIndex("TierId") - .HasDatabaseName("IX_patreon_patrons_tier_id"); - - b.ToTable("patreon_patrons", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("patreon_tiers_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DiscordRole") - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_role"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Priority") - .HasColumnType("integer") - .HasColumnName("priority"); - - b.Property("ShowOnCredits") - .HasColumnType("boolean") - .HasColumnName("show_on_credits"); - - b.HasKey("Id") - .HasName("PK_patreon_tiers"); - - b.HasIndex("DiscordRole") - .IsUnique(); - - b.ToTable("patreon_tiers", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("RoleId") - .HasColumnType("text") - .HasColumnName("role_id"); - - b.HasKey("PlayerUserId", "RoleId") - .HasName("PK_role_whitelists"); - - b.ToTable("role_whitelists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("round_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ServerId") - .HasColumnType("integer") - .HasColumnName("server_id"); - - b.Property("StartDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("PK_round"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_round_server_id"); - - b.HasIndex("StartDate"); - - b.ToTable("round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_server"); - - b.ToTable("server", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_ban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("AutoDelete") - .HasColumnType("boolean") - .HasColumnName("auto_delete"); - - b.Property("BanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("uuid") - .HasColumnName("banning_admin"); - - b.Property("ExemptFlags") - .HasColumnType("integer") - .HasColumnName("exempt_flags"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_ban_round_id"); - - b.ToTable("server_ban", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("Flags") - .HasColumnType("integer") - .HasColumnName("flags"); - - b.HasKey("UserId") - .HasName("PK_server_ban_exemption"); - - b.ToTable("server_ban_exemption", null, t => - { - t.HasCheckConstraint("FlagsNotZero", "flags != 0"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_ban_hit_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("ConnectionId") - .HasColumnType("integer") - .HasColumnName("connection_id"); - - b.HasKey("Id") - .HasName("PK_server_ban_hit"); - - b.HasIndex("BanId") - .HasDatabaseName("IX_server_ban_hit_ban_id"); - - b.HasIndex("ConnectionId") - .HasDatabaseName("IX_server_ban_hit_connection_id"); - - b.ToTable("server_ban_hit", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_role_ban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("BanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("uuid") - .HasColumnName("banning_admin"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("boolean") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("uuid") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("interval") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("RoleId") - .IsRequired() - .HasColumnType("text") - .HasColumnName("role_id"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("integer") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_role_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_role_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_role_ban_round_id"); - - b.ToTable("server_role_ban", null, t => - { - t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("role_unban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("uuid") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_role_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_role_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("unban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("uuid") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("trait_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.Property("TraitName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("trait_name"); - - b.HasKey("Id") - .HasName("PK_trait"); - - b.HasIndex("ProfileId", "TraitName") - .IsUnique(); - - b.ToTable("trait", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("uploaded_resource_log_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Data") - .IsRequired() - .HasColumnType("bytea") - .HasColumnName("data"); - - b.Property("Date") - .HasColumnType("timestamp with time zone") - .HasColumnName("date"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text") - .HasColumnName("path"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_uploaded_resource_log"); - - b.ToTable("uploaded_resource_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Whitelist", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("UserId") - .HasName("PK_whitelist"); - - b.ToTable("whitelist", (string)null); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.Property("PlayersId") - .HasColumnType("integer") - .HasColumnName("players_id"); - - b.Property("RoundsId") - .HasColumnType("integer") - .HasColumnName("rounds_id"); - - b.HasKey("PlayersId", "RoundsId") - .HasName("PK_player_round"); - - b.HasIndex("RoundsId") - .HasDatabaseName("IX_player_round_rounds_id"); - - b.ToTable("player_round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.HasOne("Content.Server.Database.AdminRank", "AdminRank") - .WithMany("Admins") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); - - b.Navigation("AdminRank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.HasOne("Content.Server.Database.Admin", "Admin") - .WithMany("Flags") - .HasForeignKey("AdminId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_flag_admin_admin_id"); - - b.Navigation("Admin"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany("AdminLogs") - .HasForeignKey("RoundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_round_round_id"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminLogs") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_player_player_user_id"); - - b.HasOne("Content.Server.Database.AdminLog", "Log") - .WithMany("Players") - .HasForeignKey("RoundId", "LogId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); - - b.Navigation("Log"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminMessagesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminMessagesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminMessagesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminMessagesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_messages_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_messages_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminNotesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminNotesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminNotesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminNotesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_notes_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_notes_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.HasOne("Content.Server.Database.AdminRank", "Rank") - .WithMany("Flags") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); - - b.Navigation("Rank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminWatchlistsCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminWatchlistsDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminWatchlistsLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminWatchlistsReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_watchlists_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_watchlists_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Antags") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_antag_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("ConnectionLogs") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.SetNull) - .IsRequired() - .HasConstraintName("FK_connection_log_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Jobs") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_job_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.HasOne("Content.Server.Database.Preference", "Preference") - .WithMany("Profiles") - .HasForeignKey("PreferenceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_preference_preference_id"); - - b.Navigation("Preference"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") - .WithMany("Loadouts") - .HasForeignKey("ProfileLoadoutGroupId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group~"); - - b.Navigation("ProfileLoadoutGroup"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") - .WithMany("Groups") - .HasForeignKey("ProfileRoleLoadoutId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loa~"); - - b.Navigation("ProfileRoleLoadout"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Loadouts") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_player_player_id"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithMany("LinkedAccountLogs") - .HasForeignKey("DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_logs_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("LinkedAccountLogs") - .HasForeignKey("PlayerId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_logs_player__player_id1"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkingCodes") - .HasForeignKey("Content.Server.Database.DiscordLinkingCodes", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linking_codes_player_player_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("Patron") - .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_player_player_id"); - - b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") - .WithMany("Patrons") - .HasForeignKey("TierId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); - - b.Navigation("Player"); - - b.Navigation("Tier"); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("JobWhitelists") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_role_whitelists_player_player_user_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("Rounds") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_round_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithMany("BanHits") - .HasForeignKey("BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); - - b.HasOne("Content.Server.Database.ConnectionLog", "Connection") - .WithMany("BanHits") - .HasForeignKey("ConnectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); - - b.Navigation("Ban"); - - b.Navigation("Connection"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerRoleBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerRoleBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_role_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_unban_server_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Traits") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_trait_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.HasOne("Content.Server.Database.Player", null) - .WithMany() - .HasForeignKey("PlayersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_player_players_id"); - - b.HasOne("Content.Server.Database.Round", null) - .WithMany() - .HasForeignKey("RoundsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_round_rounds_id"); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Navigation("Players"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Navigation("Admins"); - - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Navigation("BanHits"); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Navigation("AdminLogs"); - - b.Navigation("AdminMessagesCreated"); - - b.Navigation("AdminMessagesDeleted"); - - b.Navigation("AdminMessagesLastEdited"); - - b.Navigation("AdminMessagesReceived"); - - b.Navigation("AdminNotesCreated"); - - b.Navigation("AdminNotesDeleted"); - - b.Navigation("AdminNotesLastEdited"); - - b.Navigation("AdminNotesReceived"); - - b.Navigation("AdminServerBansCreated"); - - b.Navigation("AdminServerBansLastEdited"); - - b.Navigation("AdminServerRoleBansCreated"); - - b.Navigation("AdminServerRoleBansLastEdited"); - - b.Navigation("AdminWatchlistsCreated"); - - b.Navigation("AdminWatchlistsDeleted"); - - b.Navigation("AdminWatchlistsLastEdited"); - - b.Navigation("AdminWatchlistsReceived"); - - b.Navigation("JobWhitelists"); - - b.Navigation("LinkedAccount"); - - b.Navigation("LinkedAccountLogs"); - - b.Navigation("LinkingCodes"); - - b.Navigation("Patron"); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Navigation("Profiles"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Navigation("Antags"); - - b.Navigation("Jobs"); - - b.Navigation("Loadouts"); - - b.Navigation("Traits"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Navigation("Loadouts"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Navigation("Groups"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Navigation("LinkedAccount") - .IsRequired(); - - b.Navigation("LinkedAccountLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Navigation("Patrons"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Navigation("AdminLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Navigation("ConnectionLogs"); - - b.Navigation("Rounds"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Navigation("BanHits"); - - b.Navigation("Unban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Navigation("Unban"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Content.Server.Database/Migrations/Postgres/20240629045126_RMCLinkedAccountLogs.cs b/Content.Server.Database/Migrations/Postgres/20240629045126_RMCLinkedAccountLogs.cs deleted file mode 100644 index c083ced5a6f..00000000000 --- a/Content.Server.Database/Migrations/Postgres/20240629045126_RMCLinkedAccountLogs.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace Content.Server.Database.Migrations.Postgres -{ - /// - public partial class DiscordLinkedAccountLogs : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "discord_linked_accounts_logs", - columns: table => new - { - discord_linked_accounts_logs_id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - player_id = table.Column(type: "uuid", nullable: false), - discord_id = table.Column(type: "numeric(20,0)", nullable: false), - at = table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_discord_linked_accounts_logs", x => x.discord_linked_accounts_logs_id); - table.ForeignKey( - name: "FK_discord_linked_accounts_logs_player__player_id1", - column: x => x.player_id, - principalTable: "player", - principalColumn: "user_id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_discord_linked_accounts_logs_discord_accounts_discord_id", - column: x => x.discord_id, - principalTable: "discord_accounts", - principalColumn: "discord_accounts_id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_discord_linked_accounts_logs_at", - table: "discord_linked_accounts_logs", - column: "at"); - - migrationBuilder.CreateIndex( - name: "IX_discord_linked_accounts_logs_discord_id", - table: "discord_linked_accounts_logs", - column: "discord_id"); - - migrationBuilder.CreateIndex( - name: "IX_discord_linked_accounts_logs_player_id", - table: "discord_linked_accounts_logs", - column: "player_id"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "discord_linked_accounts_logs"); - } - } -} diff --git a/Content.Server.Database/Migrations/Sqlite/20240628214811_RMCPatronsCodeDate.Designer.cs b/Content.Server.Database/Migrations/Postgres/20260607234836_DiscordLinking.Designer.cs similarity index 83% rename from Content.Server.Database/Migrations/Sqlite/20240628214811_RMCPatronsCodeDate.Designer.cs rename to Content.Server.Database/Migrations/Postgres/20260607234836_DiscordLinking.Designer.cs index 77ffd60f336..52e6cc538f3 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240628214811_RMCPatronsCodeDate.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20260607234836_DiscordLinking.Designer.cs @@ -1,24 +1,29 @@ // using System; +using System.Collections.Generic; +using System.Net; +using System.Text.Json; using Content.Server.Database; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using NpgsqlTypes; #nullable disable -namespace Content.Server.Database.Migrations.Sqlite +namespace Content.Server.Database.Migrations.Postgres { - [DbContext(typeof(SqliteServerDbContext))] - [Migration("20240628214811_DeltaVPatronsCodeDate")] - partial class DeltaVPatronsCodeDate + [DbContext(typeof(PostgresServerDbContext))] + [Migration("20260607234944_DiscordLinking")] + partial class DiscordLinking { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "8.0.0"); + modelBuilder.HasAnnotation("ProductVersion", "10.0.6"); modelBuilder.Entity("Content.Server.Database.Admin", b => { @@ -31,6 +36,14 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("INTEGER") .HasColumnName("admin_rank_id"); + b.Property("Deadminned") + .HasColumnType("INTEGER") + .HasColumnName("deadminned"); + + b.Property("Suspended") + .HasColumnType("INTEGER") + .HasColumnName("suspended"); + b.Property("Title") .HasColumnType("TEXT") .HasColumnName("title"); @@ -259,8 +272,7 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("expiration_time"); - b.Property("LastEditedAt") - .IsRequired() + b.Property("LastEditedAt") .HasColumnType("TEXT") .HasColumnName("last_edited_at"); @@ -388,8 +400,7 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("expiration_time"); - b.Property("LastEditedAt") - .IsRequired() + b.Property("LastEditedAt") .HasColumnType("TEXT") .HasColumnName("last_edited_at"); @@ -529,6 +540,89 @@ namespace Content.Server.Database.Migrations.Sqlite b.ToTable("ban_template", (string)null); }); + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.CDModel+CDProfile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("cdprofile_id"); + + b.Property("CharacterRecords") + .HasColumnType("jsonb") + .HasColumnName("character_records"); + + b.Property("Height") + .HasColumnType("REAL") + .HasColumnName("height"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_cdprofile"); + + b.HasIndex("ProfileId") + .IsUnique(); + + b.ToTable("cdprofile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.CDModel+CharacterRecordEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("cd_character_record_entries_id"); + + b.Property("CDProfileId") + .HasColumnType("INTEGER") + .HasColumnName("cdprofile_id"); + + b.Property("Description") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("description"); + + b.Property("Involved") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("involved"); + + b.Property("Title") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.Property("Type") + .HasColumnType("INTEGER") + .HasColumnName("type"); + + b.HasKey("Id") + .HasName("PK_cd_character_record_entries"); + + b.HasIndex("CDProfileId") + .HasDatabaseName("IX_cd_character_record_entries_cdprofile_id"); + + b.HasIndex("Id") + .HasDatabaseName("IX_cd_character_record_entries_cd_character_record_entries_id"); + + b.ToTable("cd_character_record_entries", (string)null); + }); + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => { b.Property("Id") @@ -545,10 +639,6 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("INTEGER") .HasColumnName("denied"); - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - b.Property("ServerId") .ValueGeneratedOnAdd() .HasColumnType("INTEGER") @@ -559,6 +649,10 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("time"); + b.Property("Trust") + .HasColumnType("REAL") + .HasColumnName("trust"); + b.Property("UserId") .HasColumnType("TEXT") .HasColumnName("user_id"); @@ -581,6 +675,207 @@ namespace Content.Server.Database.Migrations.Sqlite b.ToTable("connection_log", (string)null); }); + modelBuilder.Entity("Content.Server.Database.DVModel+SeenTip", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("dv_seen_tips_id"); + + b.Property("DismissedAt") + .HasColumnType("TEXT") + .HasColumnName("dismissed_at"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("TipProtoId") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("TEXT") + .HasColumnName("tip_proto_id"); + + b.HasKey("Id") + .HasName("PK_dv_seen_tips"); + + b.HasIndex("PlayerUserId", "TipProtoId") + .IsUnique() + .HasDatabaseName("IX_dv_seen_tips_player_user_id_tip_proto_id"); + + b.ToTable("dv_seen_tips", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => + { + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("TierId") + .HasColumnType("INTEGER") + .HasColumnName("tier_id"); + + b.HasKey("PlayerId") + .HasName("PK_patreon_patrons"); + + b.HasIndex("TierId") + .HasDatabaseName("IX_patreon_patrons_tier_id"); + + b.ToTable("patreon_patrons", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("patreon_tiers_id"); + + b.Property("DiscordRole") + .HasColumnType("INTEGER") + .HasColumnName("discord_role"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.Property("Priority") + .HasColumnType("INTEGER") + .HasColumnName("priority"); + + b.Property("ShowOnCredits") + .HasColumnType("INTEGER") + .HasColumnName("show_on_credits"); + + b.HasKey("Id") + .HasName("PK_patreon_tiers"); + + b.HasIndex("DiscordRole") + .IsUnique(); + + b.ToTable("patreon_tiers", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("discord_accounts_id"); + + b.HasKey("Id") + .HasName("PK_discord_accounts"); + + b.ToTable("discord_accounts", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => + { + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("DiscordId") + .HasColumnType("INTEGER") + .HasColumnName("discord_id"); + + b.HasKey("PlayerId") + .HasName("PK_discord_linked_accounts"); + + b.HasIndex("DiscordId") + .IsUnique(); + + b.ToTable("discord_linked_accounts", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("discord_linked_accounts_logs_id"); + + b.Property("At") + .HasColumnType("TEXT") + .HasColumnName("at"); + + b.Property("DiscordId") + .HasColumnType("INTEGER") + .HasColumnName("discord_id"); + + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.HasKey("Id") + .HasName("PK_discord_linked_accounts_logs"); + + b.HasIndex("At") + .HasDatabaseName("IX_discord_linked_accounts_logs_at"); + + b.HasIndex("DiscordId") + .HasDatabaseName("IX_discord_linked_accounts_logs_discord_id"); + + b.HasIndex("PlayerId") + .HasDatabaseName("IX_discord_linked_accounts_logs_player_id"); + + b.ToTable("discord_linked_accounts_logs", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => + { + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("Code") + .HasColumnType("TEXT") + .HasColumnName("code"); + + b.Property("CreationTime") + .HasColumnType("TEXT") + .HasColumnName("creation_time"); + + b.HasKey("PlayerId") + .HasName("PK_discord_linking_codes"); + + b.HasIndex("Code") + .HasDatabaseName("IX_discord_linking_codes_code"); + + b.ToTable("discord_linking_codes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.IPIntelCache", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("ipintel_cache_id"); + + b.Property("Address") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("Score") + .HasColumnType("REAL") + .HasColumnName("score"); + + b.Property("Time") + .HasColumnType("TEXT") + .HasColumnName("time"); + + b.HasKey("Id") + .HasName("PK_ipintel_cache"); + + b.HasIndex("Address") + .IsUnique(); + + b.ToTable("ipintel_cache", (string)null); + }); + modelBuilder.Entity("Content.Server.Database.Job", b => { b.Property("Id") @@ -665,10 +960,6 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("last_seen_address"); - b.Property("LastSeenHWId") - .HasColumnType("BLOB") - .HasColumnName("last_seen_hwid"); - b.Property("LastSeenTime") .HasColumnType("TEXT") .HasColumnName("last_seen_time"); @@ -708,6 +999,11 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("admin_ooc_color"); + b.PrimitiveCollection("ConstructionFavorites") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("construction_favorites"); + b.Property("SelectedCharacterSlot") .HasColumnType("INTEGER") .HasColumnName("selected_character_slot"); @@ -878,6 +1174,11 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("INTEGER") .HasColumnName("profile_role_loadout_id"); + b.Property("EntityName") + .HasMaxLength(256) + .HasColumnType("TEXT") + .HasColumnName("entity_name"); + b.Property("ProfileId") .HasColumnType("INTEGER") .HasColumnName("profile_id"); @@ -895,113 +1196,6 @@ namespace Content.Server.Database.Migrations.Sqlite b.ToTable("profile_role_loadout", (string)null); }); - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("discord_accounts_id"); - - b.HasKey("Id") - .HasName("PK_discord_accounts"); - - b.ToTable("discord_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("DiscordId") - .HasColumnType("INTEGER") - .HasColumnName("discord_id"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linked_accounts"); - - b.HasIndex("DiscordId") - .IsUnique(); - - b.ToTable("discord_linked_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("Code") - .HasColumnType("TEXT") - .HasColumnName("code"); - - b.Property("CreationTime") - .HasColumnType("TEXT") - .HasColumnName("creation_time"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linking_codes"); - - b.HasIndex("Code") - .HasDatabaseName("IX_discord_linking_codes_code"); - - b.ToTable("discord_linking_codes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("TierId") - .HasColumnType("INTEGER") - .HasColumnName("tier_id"); - - b.HasKey("PlayerId") - .HasName("PK_patreon_patrons"); - - b.HasIndex("TierId") - .HasDatabaseName("IX_patreon_patrons_tier_id"); - - b.ToTable("patreon_patrons", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("patreon_tiers_id"); - - b.Property("DiscordRole") - .HasColumnType("INTEGER") - .HasColumnName("discord_role"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.Property("Priority") - .HasColumnType("INTEGER") - .HasColumnName("priority"); - - b.Property("ShowOnCredits") - .HasColumnType("INTEGER") - .HasColumnName("show_on_credits"); - - b.HasKey("Id") - .HasName("PK_patreon_tiers"); - - b.HasIndex("DiscordRole") - .IsUnique(); - - b.ToTable("patreon_tiers", (string)null); - }); - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => { b.Property("PlayerUserId") @@ -1093,10 +1287,6 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("expiration_time"); - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - b.Property("Hidden") .HasColumnType("INTEGER") .HasColumnName("hidden"); @@ -1221,10 +1411,6 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("expiration_time"); - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - b.Property("Hidden") .HasColumnType("INTEGER") .HasColumnName("hidden"); @@ -1647,6 +1833,30 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Profile"); }); + modelBuilder.Entity("Content.Server.Database.CDModel+CDProfile", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithOne("CDProfile") + .HasForeignKey("Content.Server.Database.CDModel+CDProfile", "ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_cdprofile_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.CDModel+CharacterRecordEntry", b => + { + b.HasOne("Content.Server.Database.CDModel+CDProfile", "CDProfile") + .WithMany("CharacterRecordEntries") + .HasForeignKey("CDProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_cd_character_record_entries_cdprofile_cdprofile_id"); + + b.Navigation("CDProfile"); + }); + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => { b.HasOne("Content.Server.Database.Server", "Server") @@ -1656,9 +1866,127 @@ namespace Content.Server.Database.Migrations.Sqlite .IsRequired() .HasConstraintName("FK_connection_log_server_server_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ConnectionLogId") + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + b.Navigation("Server"); }); + modelBuilder.Entity("Content.Server.Database.DVModel+SeenTip", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dv_seen_tips_player_player_id"); + }); + + modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithOne("Patron") + .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") + .HasPrincipalKey("Content.Server.Database.Player", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_patreon_patrons_player_player_id1"); + + b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") + .WithMany("Patrons") + .HasForeignKey("TierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); + + b.Navigation("Player"); + + b.Navigation("Tier"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => + { + b.HasOne("Content.Server.Database.DiscordAccount", "Discord") + .WithOne("LinkedAccount") + .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithOne("LinkedAccount") + .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") + .HasPrincipalKey("Content.Server.Database.Player", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_player_player_id1"); + + b.Navigation("Discord"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => + { + b.HasOne("Content.Server.Database.DiscordAccount", "Discord") + .WithMany("LinkedAccountLogs") + .HasForeignKey("DiscordId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_logs_discord_accounts_discord_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("LinkedAccountLogs") + .HasForeignKey("PlayerId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_logs_player_player_id1"); + + b.Navigation("Discord"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithOne("LinkingCodes") + .HasForeignKey("Content.Server.Database.DiscordLinkingCodes", "PlayerId") + .HasPrincipalKey("Content.Server.Database.Player", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linking_codes_player_player_id1"); + + b.Navigation("Player"); + }); + modelBuilder.Entity("Content.Server.Database.Job", b => { b.HasOne("Content.Server.Database.Profile", "Profile") @@ -1671,6 +1999,37 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Profile"); }); + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property("PlayerId") + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("last_seen_hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + modelBuilder.Entity("Content.Server.Database.Profile", b => { b.HasOne("Content.Server.Database.Preference", "Preference") @@ -1719,63 +2078,6 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Profile"); }); - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_player_player_id"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkingCodes") - .HasForeignKey("Content.Server.Database.DiscordLinkingCodes", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linking_codes_player_player_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("Patron") - .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_player_player_id"); - - b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") - .WithMany("Patrons") - .HasForeignKey("TierId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); - - b.Navigation("Player"); - - b.Navigation("Tier"); - }); - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => { b.HasOne("Content.Server.Database.Player", "Player") @@ -1822,8 +2124,36 @@ namespace Content.Server.Database.Migrations.Sqlite .HasForeignKey("RoundId") .HasConstraintName("FK_server_ban_round_round_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + b.Navigation("CreatedBy"); + b.Navigation("HWId"); + b.Navigation("LastEditedBy"); b.Navigation("Round"); @@ -1871,8 +2201,36 @@ namespace Content.Server.Database.Migrations.Sqlite .HasForeignKey("RoundId") .HasConstraintName("FK_server_role_ban_round_round_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerRoleBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + b.Navigation("CreatedBy"); + b.Navigation("HWId"); + b.Navigation("LastEditedBy"); b.Navigation("Round"); @@ -1948,11 +2306,29 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Flags"); }); + modelBuilder.Entity("Content.Server.Database.CDModel+CDProfile", b => + { + b.Navigation("CharacterRecordEntries"); + }); + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => { b.Navigation("BanHits"); }); + modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => + { + b.Navigation("Patrons"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => + { + b.Navigation("LinkedAccount") + .IsRequired(); + + b.Navigation("LinkedAccountLogs"); + }); + modelBuilder.Entity("Content.Server.Database.Player", b => { b.Navigation("AdminLogs"); @@ -1993,6 +2369,8 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("LinkedAccount"); + b.Navigation("LinkedAccountLogs"); + b.Navigation("LinkingCodes"); b.Navigation("Patron"); @@ -2007,6 +2385,8 @@ namespace Content.Server.Database.Migrations.Sqlite { b.Navigation("Antags"); + b.Navigation("CDProfile"); + b.Navigation("Jobs"); b.Navigation("Loadouts"); @@ -2024,17 +2404,6 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Groups"); }); - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Navigation("LinkedAccount") - .IsRequired(); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Navigation("Patrons"); - }); - modelBuilder.Entity("Content.Server.Database.Round", b => { b.Navigation("AdminLogs"); diff --git a/Content.Server.Database/Migrations/Postgres/20260607234836_DiscordLinking.cs b/Content.Server.Database/Migrations/Postgres/20260607234836_DiscordLinking.cs new file mode 100644 index 00000000000..4f0f71205e1 --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20260607234836_DiscordLinking.cs @@ -0,0 +1,207 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + /// + public partial class DiscordLinking : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "cur_time", + table: "admin_log"); + + migrationBuilder.CreateTable( + name: "discord_accounts", + columns: table => new + { + discord_accounts_id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true) + }, + constraints: table => + { + table.PrimaryKey("PK_discord_accounts", x => x.discord_accounts_id); + }); + + migrationBuilder.CreateTable( + name: "discord_linking_codes", + columns: table => new + { + player_id = table.Column(type: "TEXT", nullable: false), + code = table.Column(type: "TEXT", nullable: false), + creation_time = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_discord_linking_codes", x => x.player_id); + table.ForeignKey( + name: "FK_discord_linking_codes_player_player_id1", + column: x => x.player_id, + principalTable: "player", + principalColumn: "user_id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "patreon_tiers", + columns: table => new + { + patreon_tiers_id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + show_on_credits = table.Column(type: "INTEGER", nullable: false), + name = table.Column(type: "TEXT", nullable: false), + discord_role = table.Column(type: "INTEGER", nullable: false), + priority = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_patreon_tiers", x => x.patreon_tiers_id); + }); + + migrationBuilder.CreateTable( + name: "discord_linked_accounts", + columns: table => new + { + player_id = table.Column(type: "TEXT", nullable: false), + discord_id = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_discord_linked_accounts", x => x.player_id); + table.ForeignKey( + name: "FK_discord_linked_accounts_discord_accounts_discord_id", + column: x => x.discord_id, + principalTable: "discord_accounts", + principalColumn: "discord_accounts_id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_discord_linked_accounts_player_player_id1", + column: x => x.player_id, + principalTable: "player", + principalColumn: "user_id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "discord_linked_accounts_logs", + columns: table => new + { + discord_linked_accounts_logs_id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + player_id = table.Column(type: "TEXT", nullable: false), + discord_id = table.Column(type: "INTEGER", nullable: false), + at = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_discord_linked_accounts_logs", x => x.discord_linked_accounts_logs_id); + table.ForeignKey( + name: "FK_discord_linked_accounts_logs_discord_accounts_discord_id", + column: x => x.discord_id, + principalTable: "discord_accounts", + principalColumn: "discord_accounts_id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_discord_linked_accounts_logs_player_player_id1", + column: x => x.player_id, + principalTable: "player", + principalColumn: "user_id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "patreon_patrons", + columns: table => new + { + player_id = table.Column(type: "TEXT", nullable: false), + tier_id = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_patreon_patrons", x => x.player_id); + table.ForeignKey( + name: "FK_patreon_patrons_patreon_tiers_tier_id", + column: x => x.tier_id, + principalTable: "patreon_tiers", + principalColumn: "patreon_tiers_id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_patreon_patrons_player_player_id1", + column: x => x.player_id, + principalTable: "player", + principalColumn: "user_id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_discord_linked_accounts_discord_id", + table: "discord_linked_accounts", + column: "discord_id", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_discord_linked_accounts_logs_at", + table: "discord_linked_accounts_logs", + column: "at"); + + migrationBuilder.CreateIndex( + name: "IX_discord_linked_accounts_logs_discord_id", + table: "discord_linked_accounts_logs", + column: "discord_id"); + + migrationBuilder.CreateIndex( + name: "IX_discord_linked_accounts_logs_player_id", + table: "discord_linked_accounts_logs", + column: "player_id"); + + migrationBuilder.CreateIndex( + name: "IX_discord_linking_codes_code", + table: "discord_linking_codes", + column: "code"); + + migrationBuilder.CreateIndex( + name: "IX_patreon_patrons_tier_id", + table: "patreon_patrons", + column: "tier_id"); + + migrationBuilder.CreateIndex( + name: "IX_patreon_tiers_discord_role", + table: "patreon_tiers", + column: "discord_role", + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "discord_linked_accounts"); + + migrationBuilder.DropTable( + name: "discord_linked_accounts_logs"); + + migrationBuilder.DropTable( + name: "discord_linking_codes"); + + migrationBuilder.DropTable( + name: "patreon_patrons"); + + migrationBuilder.DropTable( + name: "discord_accounts"); + + migrationBuilder.DropTable( + name: "patreon_tiers"); + + migrationBuilder.AddColumn( + name: "cur_time", + table: "admin_log", + type: "INTEGER", + nullable: false, + defaultValue: 0L); + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs index 28c9fca0535..8b35434efe4 100644 --- a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs @@ -1,5 +1,6 @@ // using System; +using System.Collections.Generic; using System.Net; using System.Text.Json; using Content.Server.Database; @@ -20,7 +21,7 @@ namespace Content.Server.Database.Migrations.Postgres { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "9.0.1") + .HasAnnotation("ProductVersion", "10.0.6") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); @@ -739,6 +740,151 @@ namespace Content.Server.Database.Migrations.Postgres b.ToTable("dv_seen_tips", (string)null); }); + modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => + { + b.Property("PlayerId") + .HasColumnType("uuid") + .HasColumnName("player_id"); + + b.Property("TierId") + .HasColumnType("integer") + .HasColumnName("tier_id"); + + b.HasKey("PlayerId") + .HasName("PK_patreon_patrons"); + + b.HasIndex("TierId") + .HasDatabaseName("IX_patreon_patrons_tier_id"); + + b.ToTable("patreon_patrons", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("patreon_tiers_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DiscordRole") + .HasColumnType("numeric(20,0)") + .HasColumnName("discord_role"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.Property("Priority") + .HasColumnType("integer") + .HasColumnName("priority"); + + b.Property("ShowOnCredits") + .HasColumnType("boolean") + .HasColumnName("show_on_credits"); + + b.HasKey("Id") + .HasName("PK_patreon_tiers"); + + b.HasIndex("DiscordRole") + .IsUnique(); + + b.ToTable("patreon_tiers", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("numeric(20,0)") + .HasColumnName("discord_accounts_id"); + + b.HasKey("Id") + .HasName("PK_discord_accounts"); + + b.ToTable("discord_accounts", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => + { + b.Property("PlayerId") + .HasColumnType("uuid") + .HasColumnName("player_id"); + + b.Property("DiscordId") + .HasColumnType("numeric(20,0)") + .HasColumnName("discord_id"); + + b.HasKey("PlayerId") + .HasName("PK_discord_linked_accounts"); + + b.HasIndex("DiscordId") + .IsUnique(); + + b.ToTable("discord_linked_accounts", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("discord_linked_accounts_logs_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("At") + .HasColumnType("timestamp with time zone") + .HasColumnName("at"); + + b.Property("DiscordId") + .HasColumnType("numeric(20,0)") + .HasColumnName("discord_id"); + + b.Property("PlayerId") + .HasColumnType("uuid") + .HasColumnName("player_id"); + + b.HasKey("Id") + .HasName("PK_discord_linked_accounts_logs"); + + b.HasIndex("At") + .HasDatabaseName("IX_discord_linked_accounts_logs_at"); + + b.HasIndex("DiscordId") + .HasDatabaseName("IX_discord_linked_accounts_logs_discord_id"); + + b.HasIndex("PlayerId") + .HasDatabaseName("IX_discord_linked_accounts_logs_player_id"); + + b.ToTable("discord_linked_accounts_logs", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => + { + b.Property("PlayerId") + .HasColumnType("uuid") + .HasColumnName("player_id"); + + b.Property("Code") + .HasColumnType("uuid") + .HasColumnName("code"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation_time"); + + b.HasKey("PlayerId") + .HasName("PK_discord_linking_codes"); + + b.HasIndex("Code") + .HasDatabaseName("IX_discord_linking_codes_code"); + + b.ToTable("discord_linking_codes", (string)null); + }); + modelBuilder.Entity("Content.Server.Database.IPIntelCache", b => { b.Property("Id") @@ -901,7 +1047,7 @@ namespace Content.Server.Database.Migrations.Postgres .HasColumnType("text") .HasColumnName("admin_ooc_color"); - b.PrimitiveCollection("ConstructionFavorites") + b.PrimitiveCollection>("ConstructionFavorites") .IsRequired() .HasColumnType("text[]") .HasColumnName("construction_favorites"); @@ -1106,151 +1252,6 @@ namespace Content.Server.Database.Migrations.Postgres b.ToTable("profile_role_loadout", (string)null); }); - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_accounts_id"); - - b.HasKey("Id") - .HasName("PK_discord_accounts"); - - b.ToTable("discord_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("DiscordId") - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_id"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linked_accounts"); - - b.HasIndex("DiscordId") - .IsUnique(); - - b.ToTable("discord_linked_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("discord_linked_accounts_logs_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("At") - .HasColumnType("timestamp with time zone") - .HasColumnName("at"); - - b.Property("DiscordId") - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_id"); - - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.HasKey("Id") - .HasName("PK_discord_linked_accounts_logs"); - - b.HasIndex("At") - .HasDatabaseName("IX_discord_linked_accounts_logs_at"); - - b.HasIndex("DiscordId") - .HasDatabaseName("IX_discord_linked_accounts_logs_discord_id"); - - b.HasIndex("PlayerId") - .HasDatabaseName("IX_discord_linked_accounts_logs_player_id"); - - b.ToTable("discord_linked_accounts_logs", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("Code") - .HasColumnType("uuid") - .HasColumnName("code"); - - b.Property("CreationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("creation_time"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linking_codes"); - - b.HasIndex("Code") - .HasDatabaseName("IX_discord_linking_codes_code"); - - b.ToTable("discord_linking_codes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.Property("PlayerId") - .HasColumnType("uuid") - .HasColumnName("player_id"); - - b.Property("TierId") - .HasColumnType("integer") - .HasColumnName("tier_id"); - - b.HasKey("PlayerId") - .HasName("PK_patreon_patrons"); - - b.HasIndex("TierId") - .HasDatabaseName("IX_patreon_patrons_tier_id"); - - b.ToTable("patreon_patrons", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("patreon_tiers_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DiscordRole") - .HasColumnType("numeric(20,0)") - .HasColumnName("discord_role"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.Property("Priority") - .HasColumnType("integer") - .HasColumnName("priority"); - - b.Property("ShowOnCredits") - .HasColumnType("boolean") - .HasColumnName("show_on_credits"); - - b.HasKey("Id") - .HasName("PK_patreon_tiers"); - - b.HasIndex("DiscordRole") - .IsUnique(); - - b.ToTable("patreon_tiers", (string)null); - }); - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => { b.Property("PlayerUserId") @@ -1985,6 +1986,85 @@ namespace Content.Server.Database.Migrations.Postgres .HasConstraintName("FK_dv_seen_tips_player_player_id"); }); + modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithOne("Patron") + .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") + .HasPrincipalKey("Content.Server.Database.Player", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_patreon_patrons_player_player_id1"); + + b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") + .WithMany("Patrons") + .HasForeignKey("TierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); + + b.Navigation("Player"); + + b.Navigation("Tier"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => + { + b.HasOne("Content.Server.Database.DiscordAccount", "Discord") + .WithOne("LinkedAccount") + .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithOne("LinkedAccount") + .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") + .HasPrincipalKey("Content.Server.Database.Player", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_player_player_id1"); + + b.Navigation("Discord"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => + { + b.HasOne("Content.Server.Database.DiscordAccount", "Discord") + .WithMany("LinkedAccountLogs") + .HasForeignKey("DiscordId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_logs_discord_accounts_discord_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("LinkedAccountLogs") + .HasForeignKey("PlayerId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_logs_player_player_id1"); + + b.Navigation("Discord"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithOne("LinkingCodes") + .HasForeignKey("Content.Server.Database.DiscordLinkingCodes", "PlayerId") + .HasPrincipalKey("Content.Server.Database.Player", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linking_codes_player_player_id1"); + + b.Navigation("Player"); + }); + modelBuilder.Entity("Content.Server.Database.Job", b => { b.HasOne("Content.Server.Database.Profile", "Profile") @@ -2076,85 +2156,6 @@ namespace Content.Server.Database.Migrations.Postgres b.Navigation("Profile"); }); - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_player_player_id"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithMany("LinkedAccountLogs") - .HasForeignKey("DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_logs_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("LinkedAccountLogs") - .HasForeignKey("PlayerId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_logs_player__player_id1"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkingCodes") - .HasForeignKey("Content.Server.Database.DiscordLinkingCodes", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linking_codes_player_player_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("Patron") - .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_player_player_id"); - - b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") - .WithMany("Patrons") - .HasForeignKey("TierId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); - - b.Navigation("Player"); - - b.Navigation("Tier"); - }); - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => { b.HasOne("Content.Server.Database.Player", "Player") @@ -2393,6 +2394,19 @@ namespace Content.Server.Database.Migrations.Postgres b.Navigation("BanHits"); }); + modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => + { + b.Navigation("Patrons"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => + { + b.Navigation("LinkedAccount") + .IsRequired(); + + b.Navigation("LinkedAccountLogs"); + }); + modelBuilder.Entity("Content.Server.Database.Player", b => { b.Navigation("AdminLogs"); @@ -2468,19 +2482,6 @@ namespace Content.Server.Database.Migrations.Postgres b.Navigation("Groups"); }); - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Navigation("LinkedAccount") - .IsRequired(); - - b.Navigation("LinkedAccountLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Navigation("Patrons"); - }); - modelBuilder.Entity("Content.Server.Database.Round", b => { b.Navigation("AdminLogs"); diff --git a/Content.Server.Database/Migrations/Sqlite/20240628081326_RMCPatrons.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240628081326_RMCPatrons.Designer.cs deleted file mode 100644 index f5cf4947bbf..00000000000 --- a/Content.Server.Database/Migrations/Sqlite/20240628081326_RMCPatrons.Designer.cs +++ /dev/null @@ -1,2010 +0,0 @@ -// -using System; -using Content.Server.Database; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace Content.Server.Database.Migrations.Sqlite -{ - [DbContext(typeof(SqliteServerDbContext))] - [Migration("20240628081326_DeltaVPatrons")] - partial class DeltaVPatrons - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "8.0.0"); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("AdminRankId") - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_id"); - - b.Property("Title") - .HasColumnType("TEXT") - .HasColumnName("title"); - - b.HasKey("UserId") - .HasName("PK_admin"); - - b.HasIndex("AdminRankId") - .HasDatabaseName("IX_admin_admin_rank_id"); - - b.ToTable("admin", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_flag_id"); - - b.Property("AdminId") - .HasColumnType("TEXT") - .HasColumnName("admin_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("flag"); - - b.Property("Negative") - .HasColumnType("INTEGER") - .HasColumnName("negative"); - - b.HasKey("Id") - .HasName("PK_admin_flag"); - - b.HasIndex("AdminId") - .HasDatabaseName("IX_admin_flag_admin_id"); - - b.HasIndex("Flag", "AdminId") - .IsUnique(); - - b.ToTable("admin_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Id") - .HasColumnType("INTEGER") - .HasColumnName("admin_log_id"); - - b.Property("Date") - .HasColumnType("TEXT") - .HasColumnName("date"); - - b.Property("Impact") - .HasColumnType("INTEGER") - .HasColumnName("impact"); - - b.Property("Json") - .IsRequired() - .HasColumnType("jsonb") - .HasColumnName("json"); - - b.Property("Message") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("message"); - - b.Property("Type") - .HasColumnType("INTEGER") - .HasColumnName("type"); - - b.HasKey("RoundId", "Id") - .HasName("PK_admin_log"); - - b.HasIndex("Date"); - - b.HasIndex("Type") - .HasDatabaseName("IX_admin_log_type"); - - b.ToTable("admin_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("LogId") - .HasColumnType("INTEGER") - .HasColumnName("log_id"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.HasKey("RoundId", "LogId", "PlayerUserId") - .HasName("PK_admin_log_player"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_log_player_player_user_id"); - - b.ToTable("admin_log_player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_messages_id"); - - b.Property("CreatedAt") - .HasColumnType("TEXT") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("TEXT") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("INTEGER") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("TEXT") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("TEXT") - .HasColumnName("deleted_by_id"); - - b.Property("Dismissed") - .HasColumnType("INTEGER") - .HasColumnName("dismissed"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("TEXT") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Seen") - .HasColumnType("INTEGER") - .HasColumnName("seen"); - - b.HasKey("Id") - .HasName("PK_admin_messages"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_messages_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_messages_round_id"); - - b.ToTable("admin_messages", null, t => - { - t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_notes_id"); - - b.Property("CreatedAt") - .HasColumnType("TEXT") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("TEXT") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("INTEGER") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("TEXT") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("TEXT") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("TEXT") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Secret") - .HasColumnType("INTEGER") - .HasColumnName("secret"); - - b.Property("Severity") - .HasColumnType("INTEGER") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_admin_notes"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_notes_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_notes_round_id"); - - b.ToTable("admin_notes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_admin_rank"); - - b.ToTable("admin_rank", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_flag_id"); - - b.Property("AdminRankId") - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("flag"); - - b.HasKey("Id") - .HasName("PK_admin_rank_flag"); - - b.HasIndex("AdminRankId"); - - b.HasIndex("Flag", "AdminRankId") - .IsUnique(); - - b.ToTable("admin_rank_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_watchlists_id"); - - b.Property("CreatedAt") - .HasColumnType("TEXT") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("TEXT") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("INTEGER") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("TEXT") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("TEXT") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("TEXT") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.HasKey("Id") - .HasName("PK_admin_watchlists"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_watchlists_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_watchlists_round_id"); - - b.ToTable("admin_watchlists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("antag_id"); - - b.Property("AntagName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("antag_name"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_antag"); - - b.HasIndex("ProfileId", "AntagName") - .IsUnique(); - - b.ToTable("antag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("assigned_user_id_id"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_assigned_user_id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.HasIndex("UserName") - .IsUnique(); - - b.ToTable("assigned_user_id", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.BanTemplate", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("ban_template_id"); - - b.Property("AutoDelete") - .HasColumnType("INTEGER") - .HasColumnName("auto_delete"); - - b.Property("ExemptFlags") - .HasColumnType("INTEGER") - .HasColumnName("exempt_flags"); - - b.Property("Hidden") - .HasColumnType("INTEGER") - .HasColumnName("hidden"); - - b.Property("Length") - .HasColumnType("TEXT") - .HasColumnName("length"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("reason"); - - b.Property("Severity") - .HasColumnType("INTEGER") - .HasColumnName("severity"); - - b.Property("Title") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("title"); - - b.HasKey("Id") - .HasName("PK_ban_template"); - - b.ToTable("ban_template", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("connection_log_id"); - - b.Property("Address") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("address"); - - b.Property("Denied") - .HasColumnType("INTEGER") - .HasColumnName("denied"); - - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - - b.Property("ServerId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasDefaultValue(0) - .HasColumnName("server_id"); - - b.Property("Time") - .HasColumnType("TEXT") - .HasColumnName("time"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_connection_log"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_connection_log_server_id"); - - b.HasIndex("Time"); - - b.HasIndex("UserId"); - - b.ToTable("connection_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("job_id"); - - b.Property("JobName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("job_name"); - - b.Property("Priority") - .HasColumnType("INTEGER") - .HasColumnName("priority"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_job"); - - b.HasIndex("ProfileId"); - - b.HasIndex("ProfileId", "JobName") - .IsUnique(); - - b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") - .IsUnique() - .HasFilter("priority = 3"); - - b.ToTable("job", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.PlayTime", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("play_time_id"); - - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("TimeSpent") - .HasColumnType("TEXT") - .HasColumnName("time_spent"); - - b.Property("Tracker") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("tracker"); - - b.HasKey("Id") - .HasName("PK_play_time"); - - b.HasIndex("PlayerId", "Tracker") - .IsUnique(); - - b.ToTable("play_time", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("player_id"); - - b.Property("FirstSeenTime") - .HasColumnType("TEXT") - .HasColumnName("first_seen_time"); - - b.Property("LastReadRules") - .HasColumnType("TEXT") - .HasColumnName("last_read_rules"); - - b.Property("LastSeenAddress") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_seen_address"); - - b.Property("LastSeenHWId") - .HasColumnType("BLOB") - .HasColumnName("last_seen_hwid"); - - b.Property("LastSeenTime") - .HasColumnType("TEXT") - .HasColumnName("last_seen_time"); - - b.Property("LastSeenUserName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_seen_user_name"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_player"); - - b.HasAlternateKey("UserId") - .HasName("ak_player_user_id"); - - b.HasIndex("LastSeenUserName"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("preference_id"); - - b.Property("AdminOOCColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("admin_ooc_color"); - - b.Property("SelectedCharacterSlot") - .HasColumnType("INTEGER") - .HasColumnName("selected_character_slot"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_preference"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("preference", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.Property("Age") - .HasColumnType("INTEGER") - .HasColumnName("age"); - - b.Property("CharacterName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("char_name"); - - b.Property("EyeColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("eye_color"); - - b.Property("FacialHairColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("facial_hair_color"); - - b.Property("FacialHairName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("facial_hair_name"); - - b.Property("FlavorText") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("flavor_text"); - - b.Property("Gender") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("gender"); - - b.Property("HairColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("hair_color"); - - b.Property("HairName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("hair_name"); - - b.Property("Markings") - .HasColumnType("jsonb") - .HasColumnName("markings"); - - b.Property("PreferenceId") - .HasColumnType("INTEGER") - .HasColumnName("preference_id"); - - b.Property("PreferenceUnavailable") - .HasColumnType("INTEGER") - .HasColumnName("pref_unavailable"); - - b.Property("Sex") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("sex"); - - b.Property("SkinColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("skin_color"); - - b.Property("Slot") - .HasColumnType("INTEGER") - .HasColumnName("slot"); - - b.Property("SpawnPriority") - .HasColumnType("INTEGER") - .HasColumnName("spawn_priority"); - - b.Property("Species") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("species"); - - b.HasKey("Id") - .HasName("PK_profile"); - - b.HasIndex("PreferenceId") - .HasDatabaseName("IX_profile_preference_id"); - - b.HasIndex("Slot", "PreferenceId") - .IsUnique(); - - b.ToTable("profile", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("profile_loadout_id"); - - b.Property("LoadoutName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("loadout_name"); - - b.Property("ProfileLoadoutGroupId") - .HasColumnType("INTEGER") - .HasColumnName("profile_loadout_group_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout"); - - b.HasIndex("ProfileLoadoutGroupId"); - - b.ToTable("profile_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("profile_loadout_group_id"); - - b.Property("GroupName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("group_name"); - - b.Property("ProfileRoleLoadoutId") - .HasColumnType("INTEGER") - .HasColumnName("profile_role_loadout_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout_group"); - - b.HasIndex("ProfileRoleLoadoutId"); - - b.ToTable("profile_loadout_group", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("profile_role_loadout_id"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.Property("RoleName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("role_name"); - - b.HasKey("Id") - .HasName("PK_profile_role_loadout"); - - b.HasIndex("ProfileId"); - - b.ToTable("profile_role_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("discord_accounts_id"); - - b.HasKey("Id") - .HasName("PK_discord_accounts"); - - b.ToTable("discord_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("DiscordId") - .HasColumnType("INTEGER") - .HasColumnName("discord_id"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linked_accounts"); - - b.HasIndex("DiscordId") - .IsUnique(); - - b.ToTable("discord_linked_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("TierId") - .HasColumnType("INTEGER") - .HasColumnName("tier_id"); - - b.HasKey("PlayerId") - .HasName("PK_patreon_patrons"); - - b.HasIndex("TierId") - .HasDatabaseName("IX_patreon_patrons_tier_id"); - - b.ToTable("patreon_patrons", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("patreon_tiers_id"); - - b.Property("ShowOnCredits") - .HasColumnType("INTEGER") - .HasColumnName("show_on_credits"); - - b.HasKey("Id") - .HasName("PK_patreon_tiers"); - - b.ToTable("patreon_tiers", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("RoleId") - .HasColumnType("TEXT") - .HasColumnName("role_id"); - - b.HasKey("PlayerUserId", "RoleId") - .HasName("PK_role_whitelists"); - - b.ToTable("role_whitelists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("ServerId") - .HasColumnType("INTEGER") - .HasColumnName("server_id"); - - b.Property("StartDate") - .HasColumnType("TEXT") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("PK_round"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_round_server_id"); - - b.HasIndex("StartDate"); - - b.ToTable("round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_server"); - - b.ToTable("server", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_ban_id"); - - b.Property("Address") - .HasColumnType("TEXT") - .HasColumnName("address"); - - b.Property("AutoDelete") - .HasColumnType("INTEGER") - .HasColumnName("auto_delete"); - - b.Property("BanTime") - .HasColumnType("TEXT") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("banning_admin"); - - b.Property("ExemptFlags") - .HasColumnType("INTEGER") - .HasColumnName("exempt_flags"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("INTEGER") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("reason"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("INTEGER") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_ban_round_id"); - - b.ToTable("server_ban", null, t => - { - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("Flags") - .HasColumnType("INTEGER") - .HasColumnName("flags"); - - b.HasKey("UserId") - .HasName("PK_server_ban_exemption"); - - b.ToTable("server_ban_exemption", null, t => - { - t.HasCheckConstraint("FlagsNotZero", "flags != 0"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_ban_hit_id"); - - b.Property("BanId") - .HasColumnType("INTEGER") - .HasColumnName("ban_id"); - - b.Property("ConnectionId") - .HasColumnType("INTEGER") - .HasColumnName("connection_id"); - - b.HasKey("Id") - .HasName("PK_server_ban_hit"); - - b.HasIndex("BanId") - .HasDatabaseName("IX_server_ban_hit_ban_id"); - - b.HasIndex("ConnectionId") - .HasDatabaseName("IX_server_ban_hit_connection_id"); - - b.ToTable("server_ban_hit", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_role_ban_id"); - - b.Property("Address") - .HasColumnType("TEXT") - .HasColumnName("address"); - - b.Property("BanTime") - .HasColumnType("TEXT") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("banning_admin"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("INTEGER") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("reason"); - - b.Property("RoleId") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("role_id"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("INTEGER") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_role_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_role_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_role_ban_round_id"); - - b.ToTable("server_role_ban", null, t => - { - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("role_unban_id"); - - b.Property("BanId") - .HasColumnType("INTEGER") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("TEXT") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_role_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_role_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("unban_id"); - - b.Property("BanId") - .HasColumnType("INTEGER") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("TEXT") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("trait_id"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.Property("TraitName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("trait_name"); - - b.HasKey("Id") - .HasName("PK_trait"); - - b.HasIndex("ProfileId", "TraitName") - .IsUnique(); - - b.ToTable("trait", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("uploaded_resource_log_id"); - - b.Property("Data") - .IsRequired() - .HasColumnType("BLOB") - .HasColumnName("data"); - - b.Property("Date") - .HasColumnType("TEXT") - .HasColumnName("date"); - - b.Property("Path") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("path"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_uploaded_resource_log"); - - b.ToTable("uploaded_resource_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Whitelist", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("UserId") - .HasName("PK_whitelist"); - - b.ToTable("whitelist", (string)null); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.Property("PlayersId") - .HasColumnType("INTEGER") - .HasColumnName("players_id"); - - b.Property("RoundsId") - .HasColumnType("INTEGER") - .HasColumnName("rounds_id"); - - b.HasKey("PlayersId", "RoundsId") - .HasName("PK_player_round"); - - b.HasIndex("RoundsId") - .HasDatabaseName("IX_player_round_rounds_id"); - - b.ToTable("player_round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.HasOne("Content.Server.Database.AdminRank", "AdminRank") - .WithMany("Admins") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); - - b.Navigation("AdminRank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.HasOne("Content.Server.Database.Admin", "Admin") - .WithMany("Flags") - .HasForeignKey("AdminId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_flag_admin_admin_id"); - - b.Navigation("Admin"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany("AdminLogs") - .HasForeignKey("RoundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_round_round_id"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminLogs") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_player_player_user_id"); - - b.HasOne("Content.Server.Database.AdminLog", "Log") - .WithMany("Players") - .HasForeignKey("RoundId", "LogId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); - - b.Navigation("Log"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminMessagesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminMessagesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminMessagesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminMessagesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_messages_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_messages_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminNotesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminNotesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminNotesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminNotesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_notes_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_notes_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.HasOne("Content.Server.Database.AdminRank", "Rank") - .WithMany("Flags") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); - - b.Navigation("Rank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminWatchlistsCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminWatchlistsDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminWatchlistsLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminWatchlistsReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_watchlists_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_watchlists_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Antags") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_antag_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("ConnectionLogs") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.SetNull) - .IsRequired() - .HasConstraintName("FK_connection_log_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Jobs") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_job_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.HasOne("Content.Server.Database.Preference", "Preference") - .WithMany("Profiles") - .HasForeignKey("PreferenceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_preference_preference_id"); - - b.Navigation("Preference"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") - .WithMany("Loadouts") - .HasForeignKey("ProfileLoadoutGroupId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group_id"); - - b.Navigation("ProfileLoadoutGroup"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") - .WithMany("Groups") - .HasForeignKey("ProfileRoleLoadoutId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loadout_id"); - - b.Navigation("ProfileRoleLoadout"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Loadouts") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_player_player_id"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("Patron") - .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_player_player_id"); - - b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") - .WithMany("Patrons") - .HasForeignKey("TierId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); - - b.Navigation("Player"); - - b.Navigation("Tier"); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("JobWhitelists") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_role_whitelists_player_player_user_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("Rounds") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_round_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithMany("BanHits") - .HasForeignKey("BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); - - b.HasOne("Content.Server.Database.ConnectionLog", "Connection") - .WithMany("BanHits") - .HasForeignKey("ConnectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); - - b.Navigation("Ban"); - - b.Navigation("Connection"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerRoleBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerRoleBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_role_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_unban_server_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Traits") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_trait_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.HasOne("Content.Server.Database.Player", null) - .WithMany() - .HasForeignKey("PlayersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_player_players_id"); - - b.HasOne("Content.Server.Database.Round", null) - .WithMany() - .HasForeignKey("RoundsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_round_rounds_id"); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Navigation("Players"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Navigation("Admins"); - - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Navigation("BanHits"); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Navigation("AdminLogs"); - - b.Navigation("AdminMessagesCreated"); - - b.Navigation("AdminMessagesDeleted"); - - b.Navigation("AdminMessagesLastEdited"); - - b.Navigation("AdminMessagesReceived"); - - b.Navigation("AdminNotesCreated"); - - b.Navigation("AdminNotesDeleted"); - - b.Navigation("AdminNotesLastEdited"); - - b.Navigation("AdminNotesReceived"); - - b.Navigation("AdminServerBansCreated"); - - b.Navigation("AdminServerBansLastEdited"); - - b.Navigation("AdminServerRoleBansCreated"); - - b.Navigation("AdminServerRoleBansLastEdited"); - - b.Navigation("AdminWatchlistsCreated"); - - b.Navigation("AdminWatchlistsDeleted"); - - b.Navigation("AdminWatchlistsLastEdited"); - - b.Navigation("AdminWatchlistsReceived"); - - b.Navigation("JobWhitelists"); - - b.Navigation("LinkedAccount"); - - b.Navigation("Patron"); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Navigation("Profiles"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Navigation("Antags"); - - b.Navigation("Jobs"); - - b.Navigation("Loadouts"); - - b.Navigation("Traits"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Navigation("Loadouts"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Navigation("Groups"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Navigation("LinkedAccount") - .IsRequired(); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Navigation("Patrons"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Navigation("AdminLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Navigation("ConnectionLogs"); - - b.Navigation("Rounds"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Navigation("BanHits"); - - b.Navigation("Unban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Navigation("Unban"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Content.Server.Database/Migrations/Sqlite/20240628092901_RMCPatronsRolePriority.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240628092901_RMCPatronsRolePriority.Designer.cs deleted file mode 100644 index 3dc663fd93b..00000000000 --- a/Content.Server.Database/Migrations/Sqlite/20240628092901_RMCPatronsRolePriority.Designer.cs +++ /dev/null @@ -1,2026 +0,0 @@ -// -using System; -using Content.Server.Database; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace Content.Server.Database.Migrations.Sqlite -{ - [DbContext(typeof(SqliteServerDbContext))] - [Migration("20240628092901_DeltaVPatronsRolePriority")] - partial class DeltaVPatronsRolePriority - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "8.0.0"); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("AdminRankId") - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_id"); - - b.Property("Title") - .HasColumnType("TEXT") - .HasColumnName("title"); - - b.HasKey("UserId") - .HasName("PK_admin"); - - b.HasIndex("AdminRankId") - .HasDatabaseName("IX_admin_admin_rank_id"); - - b.ToTable("admin", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_flag_id"); - - b.Property("AdminId") - .HasColumnType("TEXT") - .HasColumnName("admin_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("flag"); - - b.Property("Negative") - .HasColumnType("INTEGER") - .HasColumnName("negative"); - - b.HasKey("Id") - .HasName("PK_admin_flag"); - - b.HasIndex("AdminId") - .HasDatabaseName("IX_admin_flag_admin_id"); - - b.HasIndex("Flag", "AdminId") - .IsUnique(); - - b.ToTable("admin_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Id") - .HasColumnType("INTEGER") - .HasColumnName("admin_log_id"); - - b.Property("Date") - .HasColumnType("TEXT") - .HasColumnName("date"); - - b.Property("Impact") - .HasColumnType("INTEGER") - .HasColumnName("impact"); - - b.Property("Json") - .IsRequired() - .HasColumnType("jsonb") - .HasColumnName("json"); - - b.Property("Message") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("message"); - - b.Property("Type") - .HasColumnType("INTEGER") - .HasColumnName("type"); - - b.HasKey("RoundId", "Id") - .HasName("PK_admin_log"); - - b.HasIndex("Date"); - - b.HasIndex("Type") - .HasDatabaseName("IX_admin_log_type"); - - b.ToTable("admin_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("LogId") - .HasColumnType("INTEGER") - .HasColumnName("log_id"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.HasKey("RoundId", "LogId", "PlayerUserId") - .HasName("PK_admin_log_player"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_log_player_player_user_id"); - - b.ToTable("admin_log_player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_messages_id"); - - b.Property("CreatedAt") - .HasColumnType("TEXT") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("TEXT") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("INTEGER") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("TEXT") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("TEXT") - .HasColumnName("deleted_by_id"); - - b.Property("Dismissed") - .HasColumnType("INTEGER") - .HasColumnName("dismissed"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("TEXT") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Seen") - .HasColumnType("INTEGER") - .HasColumnName("seen"); - - b.HasKey("Id") - .HasName("PK_admin_messages"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_messages_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_messages_round_id"); - - b.ToTable("admin_messages", null, t => - { - t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_notes_id"); - - b.Property("CreatedAt") - .HasColumnType("TEXT") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("TEXT") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("INTEGER") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("TEXT") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("TEXT") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("TEXT") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Secret") - .HasColumnType("INTEGER") - .HasColumnName("secret"); - - b.Property("Severity") - .HasColumnType("INTEGER") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_admin_notes"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_notes_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_notes_round_id"); - - b.ToTable("admin_notes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_admin_rank"); - - b.ToTable("admin_rank", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_flag_id"); - - b.Property("AdminRankId") - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("flag"); - - b.HasKey("Id") - .HasName("PK_admin_rank_flag"); - - b.HasIndex("AdminRankId"); - - b.HasIndex("Flag", "AdminRankId") - .IsUnique(); - - b.ToTable("admin_rank_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_watchlists_id"); - - b.Property("CreatedAt") - .HasColumnType("TEXT") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("TEXT") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("INTEGER") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("TEXT") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("TEXT") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("TEXT") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.HasKey("Id") - .HasName("PK_admin_watchlists"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_watchlists_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_watchlists_round_id"); - - b.ToTable("admin_watchlists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("antag_id"); - - b.Property("AntagName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("antag_name"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_antag"); - - b.HasIndex("ProfileId", "AntagName") - .IsUnique(); - - b.ToTable("antag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("assigned_user_id_id"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_assigned_user_id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.HasIndex("UserName") - .IsUnique(); - - b.ToTable("assigned_user_id", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.BanTemplate", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("ban_template_id"); - - b.Property("AutoDelete") - .HasColumnType("INTEGER") - .HasColumnName("auto_delete"); - - b.Property("ExemptFlags") - .HasColumnType("INTEGER") - .HasColumnName("exempt_flags"); - - b.Property("Hidden") - .HasColumnType("INTEGER") - .HasColumnName("hidden"); - - b.Property("Length") - .HasColumnType("TEXT") - .HasColumnName("length"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("reason"); - - b.Property("Severity") - .HasColumnType("INTEGER") - .HasColumnName("severity"); - - b.Property("Title") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("title"); - - b.HasKey("Id") - .HasName("PK_ban_template"); - - b.ToTable("ban_template", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("connection_log_id"); - - b.Property("Address") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("address"); - - b.Property("Denied") - .HasColumnType("INTEGER") - .HasColumnName("denied"); - - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - - b.Property("ServerId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasDefaultValue(0) - .HasColumnName("server_id"); - - b.Property("Time") - .HasColumnType("TEXT") - .HasColumnName("time"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_connection_log"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_connection_log_server_id"); - - b.HasIndex("Time"); - - b.HasIndex("UserId"); - - b.ToTable("connection_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("job_id"); - - b.Property("JobName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("job_name"); - - b.Property("Priority") - .HasColumnType("INTEGER") - .HasColumnName("priority"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_job"); - - b.HasIndex("ProfileId"); - - b.HasIndex("ProfileId", "JobName") - .IsUnique(); - - b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") - .IsUnique() - .HasFilter("priority = 3"); - - b.ToTable("job", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.PlayTime", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("play_time_id"); - - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("TimeSpent") - .HasColumnType("TEXT") - .HasColumnName("time_spent"); - - b.Property("Tracker") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("tracker"); - - b.HasKey("Id") - .HasName("PK_play_time"); - - b.HasIndex("PlayerId", "Tracker") - .IsUnique(); - - b.ToTable("play_time", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("player_id"); - - b.Property("FirstSeenTime") - .HasColumnType("TEXT") - .HasColumnName("first_seen_time"); - - b.Property("LastReadRules") - .HasColumnType("TEXT") - .HasColumnName("last_read_rules"); - - b.Property("LastSeenAddress") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_seen_address"); - - b.Property("LastSeenHWId") - .HasColumnType("BLOB") - .HasColumnName("last_seen_hwid"); - - b.Property("LastSeenTime") - .HasColumnType("TEXT") - .HasColumnName("last_seen_time"); - - b.Property("LastSeenUserName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_seen_user_name"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_player"); - - b.HasAlternateKey("UserId") - .HasName("ak_player_user_id"); - - b.HasIndex("LastSeenUserName"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("preference_id"); - - b.Property("AdminOOCColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("admin_ooc_color"); - - b.Property("SelectedCharacterSlot") - .HasColumnType("INTEGER") - .HasColumnName("selected_character_slot"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_preference"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("preference", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.Property("Age") - .HasColumnType("INTEGER") - .HasColumnName("age"); - - b.Property("CharacterName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("char_name"); - - b.Property("EyeColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("eye_color"); - - b.Property("FacialHairColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("facial_hair_color"); - - b.Property("FacialHairName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("facial_hair_name"); - - b.Property("FlavorText") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("flavor_text"); - - b.Property("Gender") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("gender"); - - b.Property("HairColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("hair_color"); - - b.Property("HairName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("hair_name"); - - b.Property("Markings") - .HasColumnType("jsonb") - .HasColumnName("markings"); - - b.Property("PreferenceId") - .HasColumnType("INTEGER") - .HasColumnName("preference_id"); - - b.Property("PreferenceUnavailable") - .HasColumnType("INTEGER") - .HasColumnName("pref_unavailable"); - - b.Property("Sex") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("sex"); - - b.Property("SkinColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("skin_color"); - - b.Property("Slot") - .HasColumnType("INTEGER") - .HasColumnName("slot"); - - b.Property("SpawnPriority") - .HasColumnType("INTEGER") - .HasColumnName("spawn_priority"); - - b.Property("Species") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("species"); - - b.HasKey("Id") - .HasName("PK_profile"); - - b.HasIndex("PreferenceId") - .HasDatabaseName("IX_profile_preference_id"); - - b.HasIndex("Slot", "PreferenceId") - .IsUnique(); - - b.ToTable("profile", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("profile_loadout_id"); - - b.Property("LoadoutName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("loadout_name"); - - b.Property("ProfileLoadoutGroupId") - .HasColumnType("INTEGER") - .HasColumnName("profile_loadout_group_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout"); - - b.HasIndex("ProfileLoadoutGroupId"); - - b.ToTable("profile_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("profile_loadout_group_id"); - - b.Property("GroupName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("group_name"); - - b.Property("ProfileRoleLoadoutId") - .HasColumnType("INTEGER") - .HasColumnName("profile_role_loadout_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout_group"); - - b.HasIndex("ProfileRoleLoadoutId"); - - b.ToTable("profile_loadout_group", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("profile_role_loadout_id"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.Property("RoleName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("role_name"); - - b.HasKey("Id") - .HasName("PK_profile_role_loadout"); - - b.HasIndex("ProfileId"); - - b.ToTable("profile_role_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("discord_accounts_id"); - - b.HasKey("Id") - .HasName("PK_discord_accounts"); - - b.ToTable("discord_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("DiscordId") - .HasColumnType("INTEGER") - .HasColumnName("discord_id"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linked_accounts"); - - b.HasIndex("DiscordId") - .IsUnique(); - - b.ToTable("discord_linked_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("TierId") - .HasColumnType("INTEGER") - .HasColumnName("tier_id"); - - b.HasKey("PlayerId") - .HasName("PK_patreon_patrons"); - - b.HasIndex("TierId") - .HasDatabaseName("IX_patreon_patrons_tier_id"); - - b.ToTable("patreon_patrons", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("patreon_tiers_id"); - - b.Property("DiscordRole") - .HasColumnType("INTEGER") - .HasColumnName("discord_role"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.Property("Priority") - .HasColumnType("INTEGER") - .HasColumnName("priority"); - - b.Property("ShowOnCredits") - .HasColumnType("INTEGER") - .HasColumnName("show_on_credits"); - - b.HasKey("Id") - .HasName("PK_patreon_tiers"); - - b.HasIndex("DiscordRole") - .IsUnique(); - - b.ToTable("patreon_tiers", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("RoleId") - .HasColumnType("TEXT") - .HasColumnName("role_id"); - - b.HasKey("PlayerUserId", "RoleId") - .HasName("PK_role_whitelists"); - - b.ToTable("role_whitelists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("ServerId") - .HasColumnType("INTEGER") - .HasColumnName("server_id"); - - b.Property("StartDate") - .HasColumnType("TEXT") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("PK_round"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_round_server_id"); - - b.HasIndex("StartDate"); - - b.ToTable("round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_server"); - - b.ToTable("server", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_ban_id"); - - b.Property("Address") - .HasColumnType("TEXT") - .HasColumnName("address"); - - b.Property("AutoDelete") - .HasColumnType("INTEGER") - .HasColumnName("auto_delete"); - - b.Property("BanTime") - .HasColumnType("TEXT") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("banning_admin"); - - b.Property("ExemptFlags") - .HasColumnType("INTEGER") - .HasColumnName("exempt_flags"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("INTEGER") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("reason"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("INTEGER") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_ban_round_id"); - - b.ToTable("server_ban", null, t => - { - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("Flags") - .HasColumnType("INTEGER") - .HasColumnName("flags"); - - b.HasKey("UserId") - .HasName("PK_server_ban_exemption"); - - b.ToTable("server_ban_exemption", null, t => - { - t.HasCheckConstraint("FlagsNotZero", "flags != 0"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_ban_hit_id"); - - b.Property("BanId") - .HasColumnType("INTEGER") - .HasColumnName("ban_id"); - - b.Property("ConnectionId") - .HasColumnType("INTEGER") - .HasColumnName("connection_id"); - - b.HasKey("Id") - .HasName("PK_server_ban_hit"); - - b.HasIndex("BanId") - .HasDatabaseName("IX_server_ban_hit_ban_id"); - - b.HasIndex("ConnectionId") - .HasDatabaseName("IX_server_ban_hit_connection_id"); - - b.ToTable("server_ban_hit", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_role_ban_id"); - - b.Property("Address") - .HasColumnType("TEXT") - .HasColumnName("address"); - - b.Property("BanTime") - .HasColumnType("TEXT") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("banning_admin"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("INTEGER") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("reason"); - - b.Property("RoleId") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("role_id"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("INTEGER") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_role_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_role_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_role_ban_round_id"); - - b.ToTable("server_role_ban", null, t => - { - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("role_unban_id"); - - b.Property("BanId") - .HasColumnType("INTEGER") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("TEXT") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_role_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_role_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("unban_id"); - - b.Property("BanId") - .HasColumnType("INTEGER") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("TEXT") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("trait_id"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.Property("TraitName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("trait_name"); - - b.HasKey("Id") - .HasName("PK_trait"); - - b.HasIndex("ProfileId", "TraitName") - .IsUnique(); - - b.ToTable("trait", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("uploaded_resource_log_id"); - - b.Property("Data") - .IsRequired() - .HasColumnType("BLOB") - .HasColumnName("data"); - - b.Property("Date") - .HasColumnType("TEXT") - .HasColumnName("date"); - - b.Property("Path") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("path"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_uploaded_resource_log"); - - b.ToTable("uploaded_resource_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Whitelist", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("UserId") - .HasName("PK_whitelist"); - - b.ToTable("whitelist", (string)null); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.Property("PlayersId") - .HasColumnType("INTEGER") - .HasColumnName("players_id"); - - b.Property("RoundsId") - .HasColumnType("INTEGER") - .HasColumnName("rounds_id"); - - b.HasKey("PlayersId", "RoundsId") - .HasName("PK_player_round"); - - b.HasIndex("RoundsId") - .HasDatabaseName("IX_player_round_rounds_id"); - - b.ToTable("player_round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.HasOne("Content.Server.Database.AdminRank", "AdminRank") - .WithMany("Admins") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); - - b.Navigation("AdminRank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.HasOne("Content.Server.Database.Admin", "Admin") - .WithMany("Flags") - .HasForeignKey("AdminId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_flag_admin_admin_id"); - - b.Navigation("Admin"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany("AdminLogs") - .HasForeignKey("RoundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_round_round_id"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminLogs") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_player_player_user_id"); - - b.HasOne("Content.Server.Database.AdminLog", "Log") - .WithMany("Players") - .HasForeignKey("RoundId", "LogId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); - - b.Navigation("Log"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminMessagesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminMessagesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminMessagesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminMessagesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_messages_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_messages_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminNotesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminNotesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminNotesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminNotesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_notes_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_notes_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.HasOne("Content.Server.Database.AdminRank", "Rank") - .WithMany("Flags") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); - - b.Navigation("Rank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminWatchlistsCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminWatchlistsDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminWatchlistsLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminWatchlistsReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_watchlists_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_watchlists_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Antags") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_antag_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("ConnectionLogs") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.SetNull) - .IsRequired() - .HasConstraintName("FK_connection_log_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Jobs") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_job_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.HasOne("Content.Server.Database.Preference", "Preference") - .WithMany("Profiles") - .HasForeignKey("PreferenceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_preference_preference_id"); - - b.Navigation("Preference"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") - .WithMany("Loadouts") - .HasForeignKey("ProfileLoadoutGroupId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group_id"); - - b.Navigation("ProfileLoadoutGroup"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") - .WithMany("Groups") - .HasForeignKey("ProfileRoleLoadoutId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loadout_id"); - - b.Navigation("ProfileRoleLoadout"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Loadouts") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_player_player_id"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("Patron") - .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_player_player_id"); - - b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") - .WithMany("Patrons") - .HasForeignKey("TierId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); - - b.Navigation("Player"); - - b.Navigation("Tier"); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("JobWhitelists") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_role_whitelists_player_player_user_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("Rounds") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_round_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithMany("BanHits") - .HasForeignKey("BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); - - b.HasOne("Content.Server.Database.ConnectionLog", "Connection") - .WithMany("BanHits") - .HasForeignKey("ConnectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); - - b.Navigation("Ban"); - - b.Navigation("Connection"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerRoleBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerRoleBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_role_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_unban_server_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Traits") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_trait_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.HasOne("Content.Server.Database.Player", null) - .WithMany() - .HasForeignKey("PlayersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_player_players_id"); - - b.HasOne("Content.Server.Database.Round", null) - .WithMany() - .HasForeignKey("RoundsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_round_rounds_id"); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Navigation("Players"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Navigation("Admins"); - - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Navigation("BanHits"); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Navigation("AdminLogs"); - - b.Navigation("AdminMessagesCreated"); - - b.Navigation("AdminMessagesDeleted"); - - b.Navigation("AdminMessagesLastEdited"); - - b.Navigation("AdminMessagesReceived"); - - b.Navigation("AdminNotesCreated"); - - b.Navigation("AdminNotesDeleted"); - - b.Navigation("AdminNotesLastEdited"); - - b.Navigation("AdminNotesReceived"); - - b.Navigation("AdminServerBansCreated"); - - b.Navigation("AdminServerBansLastEdited"); - - b.Navigation("AdminServerRoleBansCreated"); - - b.Navigation("AdminServerRoleBansLastEdited"); - - b.Navigation("AdminWatchlistsCreated"); - - b.Navigation("AdminWatchlistsDeleted"); - - b.Navigation("AdminWatchlistsLastEdited"); - - b.Navigation("AdminWatchlistsReceived"); - - b.Navigation("JobWhitelists"); - - b.Navigation("LinkedAccount"); - - b.Navigation("Patron"); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Navigation("Profiles"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Navigation("Antags"); - - b.Navigation("Jobs"); - - b.Navigation("Loadouts"); - - b.Navigation("Traits"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Navigation("Loadouts"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Navigation("Groups"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Navigation("LinkedAccount") - .IsRequired(); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Navigation("Patrons"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Navigation("AdminLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Navigation("ConnectionLogs"); - - b.Navigation("Rounds"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Navigation("BanHits"); - - b.Navigation("Unban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Navigation("Unban"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Content.Server.Database/Migrations/Sqlite/20240628092901_RMCPatronsRolePriority.cs b/Content.Server.Database/Migrations/Sqlite/20240628092901_RMCPatronsRolePriority.cs deleted file mode 100644 index 4027d68af4e..00000000000 --- a/Content.Server.Database/Migrations/Sqlite/20240628092901_RMCPatronsRolePriority.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Content.Server.Database.Migrations.Sqlite -{ - /// - public partial class DeltaVPatronsRolePriority : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "discord_role", - table: "patreon_tiers", - type: "INTEGER", - nullable: false, - defaultValue: 0ul); - - migrationBuilder.AddColumn( - name: "name", - table: "patreon_tiers", - type: "TEXT", - nullable: false, - defaultValue: ""); - - migrationBuilder.AddColumn( - name: "priority", - table: "patreon_tiers", - type: "INTEGER", - nullable: false, - defaultValue: 0); - - migrationBuilder.CreateIndex( - name: "IX_patreon_tiers_discord_role", - table: "patreon_tiers", - column: "discord_role", - unique: true); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropIndex( - name: "IX_patreon_tiers_discord_role", - table: "patreon_tiers"); - - migrationBuilder.DropColumn( - name: "discord_role", - table: "patreon_tiers"); - - migrationBuilder.DropColumn( - name: "name", - table: "patreon_tiers"); - - migrationBuilder.DropColumn( - name: "priority", - table: "patreon_tiers"); - } - } -} diff --git a/Content.Server.Database/Migrations/Sqlite/20240628123715_RMCPatronsCode.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240628123715_RMCPatronsCode.Designer.cs deleted file mode 100644 index 6891e69181c..00000000000 --- a/Content.Server.Database/Migrations/Sqlite/20240628123715_RMCPatronsCode.Designer.cs +++ /dev/null @@ -1,2065 +0,0 @@ -// -using System; -using Content.Server.Database; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace Content.Server.Database.Migrations.Sqlite -{ - [DbContext(typeof(SqliteServerDbContext))] - [Migration("20240628123715_DeltaVPatronsCode")] - partial class DeltaVPatronsCode - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "8.0.0"); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("AdminRankId") - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_id"); - - b.Property("Title") - .HasColumnType("TEXT") - .HasColumnName("title"); - - b.HasKey("UserId") - .HasName("PK_admin"); - - b.HasIndex("AdminRankId") - .HasDatabaseName("IX_admin_admin_rank_id"); - - b.ToTable("admin", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_flag_id"); - - b.Property("AdminId") - .HasColumnType("TEXT") - .HasColumnName("admin_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("flag"); - - b.Property("Negative") - .HasColumnType("INTEGER") - .HasColumnName("negative"); - - b.HasKey("Id") - .HasName("PK_admin_flag"); - - b.HasIndex("AdminId") - .HasDatabaseName("IX_admin_flag_admin_id"); - - b.HasIndex("Flag", "AdminId") - .IsUnique(); - - b.ToTable("admin_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Id") - .HasColumnType("INTEGER") - .HasColumnName("admin_log_id"); - - b.Property("Date") - .HasColumnType("TEXT") - .HasColumnName("date"); - - b.Property("Impact") - .HasColumnType("INTEGER") - .HasColumnName("impact"); - - b.Property("Json") - .IsRequired() - .HasColumnType("jsonb") - .HasColumnName("json"); - - b.Property("Message") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("message"); - - b.Property("Type") - .HasColumnType("INTEGER") - .HasColumnName("type"); - - b.HasKey("RoundId", "Id") - .HasName("PK_admin_log"); - - b.HasIndex("Date"); - - b.HasIndex("Type") - .HasDatabaseName("IX_admin_log_type"); - - b.ToTable("admin_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("LogId") - .HasColumnType("INTEGER") - .HasColumnName("log_id"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.HasKey("RoundId", "LogId", "PlayerUserId") - .HasName("PK_admin_log_player"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_log_player_player_user_id"); - - b.ToTable("admin_log_player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_messages_id"); - - b.Property("CreatedAt") - .HasColumnType("TEXT") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("TEXT") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("INTEGER") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("TEXT") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("TEXT") - .HasColumnName("deleted_by_id"); - - b.Property("Dismissed") - .HasColumnType("INTEGER") - .HasColumnName("dismissed"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("TEXT") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Seen") - .HasColumnType("INTEGER") - .HasColumnName("seen"); - - b.HasKey("Id") - .HasName("PK_admin_messages"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_messages_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_messages_round_id"); - - b.ToTable("admin_messages", null, t => - { - t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_notes_id"); - - b.Property("CreatedAt") - .HasColumnType("TEXT") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("TEXT") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("INTEGER") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("TEXT") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("TEXT") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("TEXT") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Secret") - .HasColumnType("INTEGER") - .HasColumnName("secret"); - - b.Property("Severity") - .HasColumnType("INTEGER") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_admin_notes"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_notes_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_notes_round_id"); - - b.ToTable("admin_notes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_admin_rank"); - - b.ToTable("admin_rank", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_flag_id"); - - b.Property("AdminRankId") - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("flag"); - - b.HasKey("Id") - .HasName("PK_admin_rank_flag"); - - b.HasIndex("AdminRankId"); - - b.HasIndex("Flag", "AdminRankId") - .IsUnique(); - - b.ToTable("admin_rank_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_watchlists_id"); - - b.Property("CreatedAt") - .HasColumnType("TEXT") - .HasColumnName("created_at"); - - b.Property("CreatedById") - .HasColumnType("TEXT") - .HasColumnName("created_by_id"); - - b.Property("Deleted") - .HasColumnType("INTEGER") - .HasColumnName("deleted"); - - b.Property("DeletedAt") - .HasColumnType("TEXT") - .HasColumnName("deleted_at"); - - b.Property("DeletedById") - .HasColumnType("TEXT") - .HasColumnName("deleted_by_id"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("LastEditedAt") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("Message") - .IsRequired() - .HasMaxLength(4096) - .HasColumnType("TEXT") - .HasColumnName("message"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.HasKey("Id") - .HasName("PK_admin_watchlists"); - - b.HasIndex("CreatedById"); - - b.HasIndex("DeletedById"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_admin_watchlists_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_watchlists_round_id"); - - b.ToTable("admin_watchlists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("antag_id"); - - b.Property("AntagName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("antag_name"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_antag"); - - b.HasIndex("ProfileId", "AntagName") - .IsUnique(); - - b.ToTable("antag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("assigned_user_id_id"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_assigned_user_id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.HasIndex("UserName") - .IsUnique(); - - b.ToTable("assigned_user_id", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.BanTemplate", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("ban_template_id"); - - b.Property("AutoDelete") - .HasColumnType("INTEGER") - .HasColumnName("auto_delete"); - - b.Property("ExemptFlags") - .HasColumnType("INTEGER") - .HasColumnName("exempt_flags"); - - b.Property("Hidden") - .HasColumnType("INTEGER") - .HasColumnName("hidden"); - - b.Property("Length") - .HasColumnType("TEXT") - .HasColumnName("length"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("reason"); - - b.Property("Severity") - .HasColumnType("INTEGER") - .HasColumnName("severity"); - - b.Property("Title") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("title"); - - b.HasKey("Id") - .HasName("PK_ban_template"); - - b.ToTable("ban_template", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("connection_log_id"); - - b.Property("Address") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("address"); - - b.Property("Denied") - .HasColumnType("INTEGER") - .HasColumnName("denied"); - - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - - b.Property("ServerId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasDefaultValue(0) - .HasColumnName("server_id"); - - b.Property("Time") - .HasColumnType("TEXT") - .HasColumnName("time"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_connection_log"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_connection_log_server_id"); - - b.HasIndex("Time"); - - b.HasIndex("UserId"); - - b.ToTable("connection_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("job_id"); - - b.Property("JobName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("job_name"); - - b.Property("Priority") - .HasColumnType("INTEGER") - .HasColumnName("priority"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_job"); - - b.HasIndex("ProfileId"); - - b.HasIndex("ProfileId", "JobName") - .IsUnique(); - - b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") - .IsUnique() - .HasFilter("priority = 3"); - - b.ToTable("job", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.PlayTime", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("play_time_id"); - - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("TimeSpent") - .HasColumnType("TEXT") - .HasColumnName("time_spent"); - - b.Property("Tracker") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("tracker"); - - b.HasKey("Id") - .HasName("PK_play_time"); - - b.HasIndex("PlayerId", "Tracker") - .IsUnique(); - - b.ToTable("play_time", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("player_id"); - - b.Property("FirstSeenTime") - .HasColumnType("TEXT") - .HasColumnName("first_seen_time"); - - b.Property("LastReadRules") - .HasColumnType("TEXT") - .HasColumnName("last_read_rules"); - - b.Property("LastSeenAddress") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_seen_address"); - - b.Property("LastSeenHWId") - .HasColumnType("BLOB") - .HasColumnName("last_seen_hwid"); - - b.Property("LastSeenTime") - .HasColumnType("TEXT") - .HasColumnName("last_seen_time"); - - b.Property("LastSeenUserName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_seen_user_name"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_player"); - - b.HasAlternateKey("UserId") - .HasName("ak_player_user_id"); - - b.HasIndex("LastSeenUserName"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("preference_id"); - - b.Property("AdminOOCColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("admin_ooc_color"); - - b.Property("SelectedCharacterSlot") - .HasColumnType("INTEGER") - .HasColumnName("selected_character_slot"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_preference"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("preference", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.Property("Age") - .HasColumnType("INTEGER") - .HasColumnName("age"); - - b.Property("CharacterName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("char_name"); - - b.Property("EyeColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("eye_color"); - - b.Property("FacialHairColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("facial_hair_color"); - - b.Property("FacialHairName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("facial_hair_name"); - - b.Property("FlavorText") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("flavor_text"); - - b.Property("Gender") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("gender"); - - b.Property("HairColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("hair_color"); - - b.Property("HairName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("hair_name"); - - b.Property("Markings") - .HasColumnType("jsonb") - .HasColumnName("markings"); - - b.Property("PreferenceId") - .HasColumnType("INTEGER") - .HasColumnName("preference_id"); - - b.Property("PreferenceUnavailable") - .HasColumnType("INTEGER") - .HasColumnName("pref_unavailable"); - - b.Property("Sex") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("sex"); - - b.Property("SkinColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("skin_color"); - - b.Property("Slot") - .HasColumnType("INTEGER") - .HasColumnName("slot"); - - b.Property("SpawnPriority") - .HasColumnType("INTEGER") - .HasColumnName("spawn_priority"); - - b.Property("Species") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("species"); - - b.HasKey("Id") - .HasName("PK_profile"); - - b.HasIndex("PreferenceId") - .HasDatabaseName("IX_profile_preference_id"); - - b.HasIndex("Slot", "PreferenceId") - .IsUnique(); - - b.ToTable("profile", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("profile_loadout_id"); - - b.Property("LoadoutName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("loadout_name"); - - b.Property("ProfileLoadoutGroupId") - .HasColumnType("INTEGER") - .HasColumnName("profile_loadout_group_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout"); - - b.HasIndex("ProfileLoadoutGroupId"); - - b.ToTable("profile_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("profile_loadout_group_id"); - - b.Property("GroupName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("group_name"); - - b.Property("ProfileRoleLoadoutId") - .HasColumnType("INTEGER") - .HasColumnName("profile_role_loadout_id"); - - b.HasKey("Id") - .HasName("PK_profile_loadout_group"); - - b.HasIndex("ProfileRoleLoadoutId"); - - b.ToTable("profile_loadout_group", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("profile_role_loadout_id"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.Property("RoleName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("role_name"); - - b.HasKey("Id") - .HasName("PK_profile_role_loadout"); - - b.HasIndex("ProfileId"); - - b.ToTable("profile_role_loadout", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("discord_accounts_id"); - - b.HasKey("Id") - .HasName("PK_discord_accounts"); - - b.ToTable("discord_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("DiscordId") - .HasColumnType("INTEGER") - .HasColumnName("discord_id"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linked_accounts"); - - b.HasIndex("DiscordId") - .IsUnique(); - - b.ToTable("discord_linked_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("Code") - .HasColumnType("TEXT") - .HasColumnName("code"); - - b.Property("CreationTime") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("TEXT") - .HasColumnName("creation_time"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linking_codes"); - - b.HasIndex("Code") - .HasDatabaseName("IX_discord_linking_codes_code"); - - b.ToTable("discord_linking_codes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("TierId") - .HasColumnType("INTEGER") - .HasColumnName("tier_id"); - - b.HasKey("PlayerId") - .HasName("PK_patreon_patrons"); - - b.HasIndex("TierId") - .HasDatabaseName("IX_patreon_patrons_tier_id"); - - b.ToTable("patreon_patrons", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("patreon_tiers_id"); - - b.Property("DiscordRole") - .HasColumnType("INTEGER") - .HasColumnName("discord_role"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.Property("Priority") - .HasColumnType("INTEGER") - .HasColumnName("priority"); - - b.Property("ShowOnCredits") - .HasColumnType("INTEGER") - .HasColumnName("show_on_credits"); - - b.HasKey("Id") - .HasName("PK_patreon_tiers"); - - b.HasIndex("DiscordRole") - .IsUnique(); - - b.ToTable("patreon_tiers", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("RoleId") - .HasColumnType("TEXT") - .HasColumnName("role_id"); - - b.HasKey("PlayerUserId", "RoleId") - .HasName("PK_role_whitelists"); - - b.ToTable("role_whitelists", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("ServerId") - .HasColumnType("INTEGER") - .HasColumnName("server_id"); - - b.Property("StartDate") - .HasColumnType("TEXT") - .HasColumnName("start_date"); - - b.HasKey("Id") - .HasName("PK_round"); - - b.HasIndex("ServerId") - .HasDatabaseName("IX_round_server_id"); - - b.HasIndex("StartDate"); - - b.ToTable("round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_server"); - - b.ToTable("server", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_ban_id"); - - b.Property("Address") - .HasColumnType("TEXT") - .HasColumnName("address"); - - b.Property("AutoDelete") - .HasColumnType("INTEGER") - .HasColumnName("auto_delete"); - - b.Property("BanTime") - .HasColumnType("TEXT") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("banning_admin"); - - b.Property("ExemptFlags") - .HasColumnType("INTEGER") - .HasColumnName("exempt_flags"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("INTEGER") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("reason"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("INTEGER") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_ban_round_id"); - - b.ToTable("server_ban", null, t => - { - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("Flags") - .HasColumnType("INTEGER") - .HasColumnName("flags"); - - b.HasKey("UserId") - .HasName("PK_server_ban_exemption"); - - b.ToTable("server_ban_exemption", null, t => - { - t.HasCheckConstraint("FlagsNotZero", "flags != 0"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_ban_hit_id"); - - b.Property("BanId") - .HasColumnType("INTEGER") - .HasColumnName("ban_id"); - - b.Property("ConnectionId") - .HasColumnType("INTEGER") - .HasColumnName("connection_id"); - - b.HasKey("Id") - .HasName("PK_server_ban_hit"); - - b.HasIndex("BanId") - .HasDatabaseName("IX_server_ban_hit_ban_id"); - - b.HasIndex("ConnectionId") - .HasDatabaseName("IX_server_ban_hit_connection_id"); - - b.ToTable("server_ban_hit", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_role_ban_id"); - - b.Property("Address") - .HasColumnType("TEXT") - .HasColumnName("address"); - - b.Property("BanTime") - .HasColumnType("TEXT") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("banning_admin"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - - b.Property("Hidden") - .HasColumnType("INTEGER") - .HasColumnName("hidden"); - - b.Property("LastEditedAt") - .HasColumnType("TEXT") - .HasColumnName("last_edited_at"); - - b.Property("LastEditedById") - .HasColumnType("TEXT") - .HasColumnName("last_edited_by_id"); - - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("PlaytimeAtNote") - .HasColumnType("TEXT") - .HasColumnName("playtime_at_note"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("reason"); - - b.Property("RoleId") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("role_id"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Severity") - .HasColumnType("INTEGER") - .HasColumnName("severity"); - - b.HasKey("Id") - .HasName("PK_server_role_ban"); - - b.HasIndex("Address"); - - b.HasIndex("BanningAdmin"); - - b.HasIndex("LastEditedById"); - - b.HasIndex("PlayerUserId") - .HasDatabaseName("IX_server_role_ban_player_user_id"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_server_role_ban_round_id"); - - b.ToTable("server_role_ban", null, t => - { - t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("role_unban_id"); - - b.Property("BanId") - .HasColumnType("INTEGER") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("TEXT") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_role_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_role_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("unban_id"); - - b.Property("BanId") - .HasColumnType("INTEGER") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("TEXT") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("trait_id"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.Property("TraitName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("trait_name"); - - b.HasKey("Id") - .HasName("PK_trait"); - - b.HasIndex("ProfileId", "TraitName") - .IsUnique(); - - b.ToTable("trait", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("uploaded_resource_log_id"); - - b.Property("Data") - .IsRequired() - .HasColumnType("BLOB") - .HasColumnName("data"); - - b.Property("Date") - .HasColumnType("TEXT") - .HasColumnName("date"); - - b.Property("Path") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("path"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_uploaded_resource_log"); - - b.ToTable("uploaded_resource_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Whitelist", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("UserId") - .HasName("PK_whitelist"); - - b.ToTable("whitelist", (string)null); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.Property("PlayersId") - .HasColumnType("INTEGER") - .HasColumnName("players_id"); - - b.Property("RoundsId") - .HasColumnType("INTEGER") - .HasColumnName("rounds_id"); - - b.HasKey("PlayersId", "RoundsId") - .HasName("PK_player_round"); - - b.HasIndex("RoundsId") - .HasDatabaseName("IX_player_round_rounds_id"); - - b.ToTable("player_round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.HasOne("Content.Server.Database.AdminRank", "AdminRank") - .WithMany("Admins") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); - - b.Navigation("AdminRank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.HasOne("Content.Server.Database.Admin", "Admin") - .WithMany("Flags") - .HasForeignKey("AdminId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_flag_admin_admin_id"); - - b.Navigation("Admin"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany("AdminLogs") - .HasForeignKey("RoundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_round_round_id"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminLogs") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_player_player_user_id"); - - b.HasOne("Content.Server.Database.AdminLog", "Log") - .WithMany("Players") - .HasForeignKey("RoundId", "LogId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); - - b.Navigation("Log"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminMessage", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminMessagesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminMessagesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminMessagesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminMessagesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_messages_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_messages_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminNote", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminNotesCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminNotesDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminNotesLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminNotesReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_notes_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_notes_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.HasOne("Content.Server.Database.AdminRank", "Rank") - .WithMany("Flags") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); - - b.Navigation("Rank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminWatchlistsCreated") - .HasForeignKey("CreatedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_created_by_id"); - - b.HasOne("Content.Server.Database.Player", "DeletedBy") - .WithMany("AdminWatchlistsDeleted") - .HasForeignKey("DeletedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminWatchlistsLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminWatchlistsReceived") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("FK_admin_watchlists_player_player_user_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_admin_watchlists_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("DeletedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Player"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Antags") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_antag_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("ConnectionLogs") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.SetNull) - .IsRequired() - .HasConstraintName("FK_connection_log_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Jobs") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_job_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.HasOne("Content.Server.Database.Preference", "Preference") - .WithMany("Profiles") - .HasForeignKey("PreferenceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_preference_preference_id"); - - b.Navigation("Preference"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => - { - b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") - .WithMany("Loadouts") - .HasForeignKey("ProfileLoadoutGroupId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group_id"); - - b.Navigation("ProfileLoadoutGroup"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") - .WithMany("Groups") - .HasForeignKey("ProfileRoleLoadoutId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loadout_id"); - - b.Navigation("ProfileRoleLoadout"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Loadouts") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_player_player_id"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkingCodes") - .HasForeignKey("Content.Server.Database.DiscordLinkingCodes", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linking_codes_player_player_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("Patron") - .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_player_player_id"); - - b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") - .WithMany("Patrons") - .HasForeignKey("TierId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); - - b.Navigation("Player"); - - b.Navigation("Tier"); - }); - - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("JobWhitelists") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_role_whitelists_player_player_user_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.HasOne("Content.Server.Database.Server", "Server") - .WithMany("Rounds") - .HasForeignKey("ServerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_round_server_server_id"); - - b.Navigation("Server"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithMany("BanHits") - .HasForeignKey("BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); - - b.HasOne("Content.Server.Database.ConnectionLog", "Connection") - .WithMany("BanHits") - .HasForeignKey("ConnectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); - - b.Navigation("Ban"); - - b.Navigation("Connection"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.HasOne("Content.Server.Database.Player", "CreatedBy") - .WithMany("AdminServerRoleBansCreated") - .HasForeignKey("BanningAdmin") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_banning_admin"); - - b.HasOne("Content.Server.Database.Player", "LastEditedBy") - .WithMany("AdminServerRoleBansLastEdited") - .HasForeignKey("LastEditedById") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); - - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany() - .HasForeignKey("RoundId") - .HasConstraintName("FK_server_role_ban_round_round_id"); - - b.Navigation("CreatedBy"); - - b.Navigation("LastEditedBy"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => - { - b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_unban_server_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("Content.Server.Database.Trait", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Traits") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_trait_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.HasOne("Content.Server.Database.Player", null) - .WithMany() - .HasForeignKey("PlayersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_player_players_id"); - - b.HasOne("Content.Server.Database.Round", null) - .WithMany() - .HasForeignKey("RoundsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_round_rounds_id"); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Navigation("Players"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Navigation("Admins"); - - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Navigation("BanHits"); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Navigation("AdminLogs"); - - b.Navigation("AdminMessagesCreated"); - - b.Navigation("AdminMessagesDeleted"); - - b.Navigation("AdminMessagesLastEdited"); - - b.Navigation("AdminMessagesReceived"); - - b.Navigation("AdminNotesCreated"); - - b.Navigation("AdminNotesDeleted"); - - b.Navigation("AdminNotesLastEdited"); - - b.Navigation("AdminNotesReceived"); - - b.Navigation("AdminServerBansCreated"); - - b.Navigation("AdminServerBansLastEdited"); - - b.Navigation("AdminServerRoleBansCreated"); - - b.Navigation("AdminServerRoleBansLastEdited"); - - b.Navigation("AdminWatchlistsCreated"); - - b.Navigation("AdminWatchlistsDeleted"); - - b.Navigation("AdminWatchlistsLastEdited"); - - b.Navigation("AdminWatchlistsReceived"); - - b.Navigation("JobWhitelists"); - - b.Navigation("LinkedAccount"); - - b.Navigation("LinkingCodes"); - - b.Navigation("Patron"); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Navigation("Profiles"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Navigation("Antags"); - - b.Navigation("Jobs"); - - b.Navigation("Loadouts"); - - b.Navigation("Traits"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => - { - b.Navigation("Loadouts"); - }); - - modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => - { - b.Navigation("Groups"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Navigation("LinkedAccount") - .IsRequired(); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Navigation("Patrons"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Navigation("AdminLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.Server", b => - { - b.Navigation("ConnectionLogs"); - - b.Navigation("Rounds"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Navigation("BanHits"); - - b.Navigation("Unban"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => - { - b.Navigation("Unban"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Content.Server.Database/Migrations/Sqlite/20240628123715_RMCPatronsCode.cs b/Content.Server.Database/Migrations/Sqlite/20240628123715_RMCPatronsCode.cs deleted file mode 100644 index dc55b468d05..00000000000 --- a/Content.Server.Database/Migrations/Sqlite/20240628123715_RMCPatronsCode.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Content.Server.Database.Migrations.Sqlite -{ - /// - public partial class DeltaVPatronsCode : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "discord_linking_codes", - columns: table => new - { - player_id = table.Column(type: "TEXT", nullable: false), - code = table.Column(type: "TEXT", nullable: false), - creation_time = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_discord_linking_codes", x => x.player_id); - table.ForeignKey( - name: "FK_discord_linking_codes_player_player_id", - column: x => x.player_id, - principalTable: "player", - principalColumn: "user_id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_discord_linking_codes_code", - table: "discord_linking_codes", - column: "code"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "discord_linking_codes"); - } - } -} diff --git a/Content.Server.Database/Migrations/Sqlite/20240628214811_RMCPatronsCodeDate.cs b/Content.Server.Database/Migrations/Sqlite/20240628214811_RMCPatronsCodeDate.cs deleted file mode 100644 index 691061ce977..00000000000 --- a/Content.Server.Database/Migrations/Sqlite/20240628214811_RMCPatronsCodeDate.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Content.Server.Database.Migrations.Sqlite -{ - /// - public partial class DeltaVPatronsCodeDate : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - - } - } -} diff --git a/Content.Server.Database/Migrations/Sqlite/20240629045118_RMCLinkedAccountLogs.cs b/Content.Server.Database/Migrations/Sqlite/20240629045118_RMCLinkedAccountLogs.cs deleted file mode 100644 index 46b3265655e..00000000000 --- a/Content.Server.Database/Migrations/Sqlite/20240629045118_RMCLinkedAccountLogs.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Content.Server.Database.Migrations.Sqlite -{ - /// - public partial class DiscordLinkedAccountLogs : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "discord_linked_accounts_logs", - columns: table => new - { - discord_linked_accounts_logs_id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - player_id = table.Column(type: "TEXT", nullable: false), - discord_id = table.Column(type: "INTEGER", nullable: false), - at = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_discord_linked_accounts_logs", x => x.discord_linked_accounts_logs_id); - table.ForeignKey( - name: "FK_discord_linked_accounts_logs_player__player_id1", - column: x => x.player_id, - principalTable: "player", - principalColumn: "user_id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_discord_linked_accounts_logs_discord_accounts_discord_id", - column: x => x.discord_id, - principalTable: "discord_accounts", - principalColumn: "discord_accounts_id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_discord_linked_accounts_logs_at", - table: "discord_linked_accounts_logs", - column: "at"); - - migrationBuilder.CreateIndex( - name: "IX_discord_linked_accounts_logs_discord_id", - table: "discord_linked_accounts_logs", - column: "discord_id"); - - migrationBuilder.CreateIndex( - name: "IX_discord_linked_accounts_logs_player_id", - table: "discord_linked_accounts_logs", - column: "player_id"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "discord_linked_accounts_logs"); - } - } -} diff --git a/Content.Server.Database/Migrations/Sqlite/20240629045118_RMCLinkedAccountLogs.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20260607234836_DiscordLinking.Designer.cs similarity index 85% rename from Content.Server.Database/Migrations/Sqlite/20240629045118_RMCLinkedAccountLogs.Designer.cs rename to Content.Server.Database/Migrations/Sqlite/20260607234836_DiscordLinking.Designer.cs index 1039b913207..42c741a65f5 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240629045118_RMCLinkedAccountLogs.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20260607234836_DiscordLinking.Designer.cs @@ -11,14 +11,14 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Content.Server.Database.Migrations.Sqlite { [DbContext(typeof(SqliteServerDbContext))] - [Migration("20240629045118_DiscordLinkedAccountLogs")] - partial class DiscordLinkedAccountLogs + [Migration("20260607234836_DiscordLinking")] + partial class DiscordLinking { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "8.0.0"); + modelBuilder.HasAnnotation("ProductVersion", "10.0.6"); modelBuilder.Entity("Content.Server.Database.Admin", b => { @@ -31,6 +31,14 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("INTEGER") .HasColumnName("admin_rank_id"); + b.Property("Deadminned") + .HasColumnType("INTEGER") + .HasColumnName("deadminned"); + + b.Property("Suspended") + .HasColumnType("INTEGER") + .HasColumnName("suspended"); + b.Property("Title") .HasColumnType("TEXT") .HasColumnName("title"); @@ -259,8 +267,7 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("expiration_time"); - b.Property("LastEditedAt") - .IsRequired() + b.Property("LastEditedAt") .HasColumnType("TEXT") .HasColumnName("last_edited_at"); @@ -388,8 +395,7 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("expiration_time"); - b.Property("LastEditedAt") - .IsRequired() + b.Property("LastEditedAt") .HasColumnType("TEXT") .HasColumnName("last_edited_at"); @@ -529,6 +535,89 @@ namespace Content.Server.Database.Migrations.Sqlite b.ToTable("ban_template", (string)null); }); + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.CDModel+CDProfile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("cdprofile_id"); + + b.Property("CharacterRecords") + .HasColumnType("jsonb") + .HasColumnName("character_records"); + + b.Property("Height") + .HasColumnType("REAL") + .HasColumnName("height"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_cdprofile"); + + b.HasIndex("ProfileId") + .IsUnique(); + + b.ToTable("cdprofile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.CDModel+CharacterRecordEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("cd_character_record_entries_id"); + + b.Property("CDProfileId") + .HasColumnType("INTEGER") + .HasColumnName("cdprofile_id"); + + b.Property("Description") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("description"); + + b.Property("Involved") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("involved"); + + b.Property("Title") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.Property("Type") + .HasColumnType("INTEGER") + .HasColumnName("type"); + + b.HasKey("Id") + .HasName("PK_cd_character_record_entries"); + + b.HasIndex("CDProfileId") + .HasDatabaseName("IX_cd_character_record_entries_cdprofile_id"); + + b.HasIndex("Id") + .HasDatabaseName("IX_cd_character_record_entries_cd_character_record_entries_id"); + + b.ToTable("cd_character_record_entries", (string)null); + }); + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => { b.Property("Id") @@ -545,10 +634,6 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("INTEGER") .HasColumnName("denied"); - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - b.Property("ServerId") .ValueGeneratedOnAdd() .HasColumnType("INTEGER") @@ -559,6 +644,10 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("time"); + b.Property("Trust") + .HasColumnType("REAL") + .HasColumnName("trust"); + b.Property("UserId") .HasColumnType("TEXT") .HasColumnName("user_id"); @@ -581,6 +670,207 @@ namespace Content.Server.Database.Migrations.Sqlite b.ToTable("connection_log", (string)null); }); + modelBuilder.Entity("Content.Server.Database.DVModel+SeenTip", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("dv_seen_tips_id"); + + b.Property("DismissedAt") + .HasColumnType("TEXT") + .HasColumnName("dismissed_at"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("TipProtoId") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("TEXT") + .HasColumnName("tip_proto_id"); + + b.HasKey("Id") + .HasName("PK_dv_seen_tips"); + + b.HasIndex("PlayerUserId", "TipProtoId") + .IsUnique() + .HasDatabaseName("IX_dv_seen_tips_player_user_id_tip_proto_id"); + + b.ToTable("dv_seen_tips", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => + { + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("TierId") + .HasColumnType("INTEGER") + .HasColumnName("tier_id"); + + b.HasKey("PlayerId") + .HasName("PK_patreon_patrons"); + + b.HasIndex("TierId") + .HasDatabaseName("IX_patreon_patrons_tier_id"); + + b.ToTable("patreon_patrons", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("patreon_tiers_id"); + + b.Property("DiscordRole") + .HasColumnType("INTEGER") + .HasColumnName("discord_role"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.Property("Priority") + .HasColumnType("INTEGER") + .HasColumnName("priority"); + + b.Property("ShowOnCredits") + .HasColumnType("INTEGER") + .HasColumnName("show_on_credits"); + + b.HasKey("Id") + .HasName("PK_patreon_tiers"); + + b.HasIndex("DiscordRole") + .IsUnique(); + + b.ToTable("patreon_tiers", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("discord_accounts_id"); + + b.HasKey("Id") + .HasName("PK_discord_accounts"); + + b.ToTable("discord_accounts", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => + { + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("DiscordId") + .HasColumnType("INTEGER") + .HasColumnName("discord_id"); + + b.HasKey("PlayerId") + .HasName("PK_discord_linked_accounts"); + + b.HasIndex("DiscordId") + .IsUnique(); + + b.ToTable("discord_linked_accounts", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("discord_linked_accounts_logs_id"); + + b.Property("At") + .HasColumnType("TEXT") + .HasColumnName("at"); + + b.Property("DiscordId") + .HasColumnType("INTEGER") + .HasColumnName("discord_id"); + + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.HasKey("Id") + .HasName("PK_discord_linked_accounts_logs"); + + b.HasIndex("At") + .HasDatabaseName("IX_discord_linked_accounts_logs_at"); + + b.HasIndex("DiscordId") + .HasDatabaseName("IX_discord_linked_accounts_logs_discord_id"); + + b.HasIndex("PlayerId") + .HasDatabaseName("IX_discord_linked_accounts_logs_player_id"); + + b.ToTable("discord_linked_accounts_logs", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => + { + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("Code") + .HasColumnType("TEXT") + .HasColumnName("code"); + + b.Property("CreationTime") + .HasColumnType("TEXT") + .HasColumnName("creation_time"); + + b.HasKey("PlayerId") + .HasName("PK_discord_linking_codes"); + + b.HasIndex("Code") + .HasDatabaseName("IX_discord_linking_codes_code"); + + b.ToTable("discord_linking_codes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.IPIntelCache", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("ipintel_cache_id"); + + b.Property("Address") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("Score") + .HasColumnType("REAL") + .HasColumnName("score"); + + b.Property("Time") + .HasColumnType("TEXT") + .HasColumnName("time"); + + b.HasKey("Id") + .HasName("PK_ipintel_cache"); + + b.HasIndex("Address") + .IsUnique(); + + b.ToTable("ipintel_cache", (string)null); + }); + modelBuilder.Entity("Content.Server.Database.Job", b => { b.Property("Id") @@ -665,10 +955,6 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("last_seen_address"); - b.Property("LastSeenHWId") - .HasColumnType("BLOB") - .HasColumnName("last_seen_hwid"); - b.Property("LastSeenTime") .HasColumnType("TEXT") .HasColumnName("last_seen_time"); @@ -708,6 +994,11 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("admin_ooc_color"); + b.PrimitiveCollection("ConstructionFavorites") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("construction_favorites"); + b.Property("SelectedCharacterSlot") .HasColumnType("INTEGER") .HasColumnName("selected_character_slot"); @@ -878,6 +1169,11 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("INTEGER") .HasColumnName("profile_role_loadout_id"); + b.Property("EntityName") + .HasMaxLength(256) + .HasColumnType("TEXT") + .HasColumnName("entity_name"); + b.Property("ProfileId") .HasColumnType("INTEGER") .HasColumnName("profile_id"); @@ -895,147 +1191,6 @@ namespace Content.Server.Database.Migrations.Sqlite b.ToTable("profile_role_loadout", (string)null); }); - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("discord_accounts_id"); - - b.HasKey("Id") - .HasName("PK_discord_accounts"); - - b.ToTable("discord_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("DiscordId") - .HasColumnType("INTEGER") - .HasColumnName("discord_id"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linked_accounts"); - - b.HasIndex("DiscordId") - .IsUnique(); - - b.ToTable("discord_linked_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("discord_linked_accounts_logs_id"); - - b.Property("At") - .HasColumnType("TEXT") - .HasColumnName("at"); - - b.Property("DiscordId") - .HasColumnType("INTEGER") - .HasColumnName("discord_id"); - - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.HasKey("Id") - .HasName("PK_discord_linked_accounts_logs"); - - b.HasIndex("At") - .HasDatabaseName("IX_discord_linked_accounts_logs_at"); - - b.HasIndex("DiscordId") - .HasDatabaseName("IX_discord_linked_accounts_logs_discord_id"); - - b.HasIndex("PlayerId") - .HasDatabaseName("IX_discord_linked_accounts_logs_player_id"); - - b.ToTable("discord_linked_accounts_logs", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("Code") - .HasColumnType("TEXT") - .HasColumnName("code"); - - b.Property("CreationTime") - .HasColumnType("TEXT") - .HasColumnName("creation_time"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linking_codes"); - - b.HasIndex("Code") - .HasDatabaseName("IX_discord_linking_codes_code"); - - b.ToTable("discord_linking_codes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("TierId") - .HasColumnType("INTEGER") - .HasColumnName("tier_id"); - - b.HasKey("PlayerId") - .HasName("PK_patreon_patrons"); - - b.HasIndex("TierId") - .HasDatabaseName("IX_patreon_patrons_tier_id"); - - b.ToTable("patreon_patrons", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("patreon_tiers_id"); - - b.Property("DiscordRole") - .HasColumnType("INTEGER") - .HasColumnName("discord_role"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.Property("Priority") - .HasColumnType("INTEGER") - .HasColumnName("priority"); - - b.Property("ShowOnCredits") - .HasColumnType("INTEGER") - .HasColumnName("show_on_credits"); - - b.HasKey("Id") - .HasName("PK_patreon_tiers"); - - b.HasIndex("DiscordRole") - .IsUnique(); - - b.ToTable("patreon_tiers", (string)null); - }); - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => { b.Property("PlayerUserId") @@ -1127,10 +1282,6 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("expiration_time"); - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - b.Property("Hidden") .HasColumnType("INTEGER") .HasColumnName("hidden"); @@ -1255,10 +1406,6 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("expiration_time"); - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - b.Property("Hidden") .HasColumnType("INTEGER") .HasColumnName("hidden"); @@ -1681,6 +1828,30 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Profile"); }); + modelBuilder.Entity("Content.Server.Database.CDModel+CDProfile", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithOne("CDProfile") + .HasForeignKey("Content.Server.Database.CDModel+CDProfile", "ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_cdprofile_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.CDModel+CharacterRecordEntry", b => + { + b.HasOne("Content.Server.Database.CDModel+CDProfile", "CDProfile") + .WithMany("CharacterRecordEntries") + .HasForeignKey("CDProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_cd_character_record_entries_cdprofile_cdprofile_id"); + + b.Navigation("CDProfile"); + }); + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => { b.HasOne("Content.Server.Database.Server", "Server") @@ -1690,9 +1861,127 @@ namespace Content.Server.Database.Migrations.Sqlite .IsRequired() .HasConstraintName("FK_connection_log_server_server_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ConnectionLogId") + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + b.Navigation("Server"); }); + modelBuilder.Entity("Content.Server.Database.DVModel+SeenTip", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dv_seen_tips_player_player_id"); + }); + + modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithOne("Patron") + .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") + .HasPrincipalKey("Content.Server.Database.Player", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_patreon_patrons_player_player_id1"); + + b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") + .WithMany("Patrons") + .HasForeignKey("TierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); + + b.Navigation("Player"); + + b.Navigation("Tier"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => + { + b.HasOne("Content.Server.Database.DiscordAccount", "Discord") + .WithOne("LinkedAccount") + .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithOne("LinkedAccount") + .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") + .HasPrincipalKey("Content.Server.Database.Player", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_player_player_id1"); + + b.Navigation("Discord"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => + { + b.HasOne("Content.Server.Database.DiscordAccount", "Discord") + .WithMany("LinkedAccountLogs") + .HasForeignKey("DiscordId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_logs_discord_accounts_discord_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("LinkedAccountLogs") + .HasForeignKey("PlayerId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_logs_player_player_id1"); + + b.Navigation("Discord"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithOne("LinkingCodes") + .HasForeignKey("Content.Server.Database.DiscordLinkingCodes", "PlayerId") + .HasPrincipalKey("Content.Server.Database.Player", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linking_codes_player_player_id1"); + + b.Navigation("Player"); + }); + modelBuilder.Entity("Content.Server.Database.Job", b => { b.HasOne("Content.Server.Database.Profile", "Profile") @@ -1705,6 +1994,37 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Profile"); }); + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property("PlayerId") + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("last_seen_hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + modelBuilder.Entity("Content.Server.Database.Profile", b => { b.HasOne("Content.Server.Database.Preference", "Preference") @@ -1753,85 +2073,6 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Profile"); }); - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_player_player_id"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithMany("LinkedAccountLogs") - .HasForeignKey("DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_logs_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("LinkedAccountLogs") - .HasForeignKey("PlayerId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_logs_player__player_id1"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkingCodes") - .HasForeignKey("Content.Server.Database.DiscordLinkingCodes", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linking_codes_player_player_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("Patron") - .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_player_player_id"); - - b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") - .WithMany("Patrons") - .HasForeignKey("TierId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); - - b.Navigation("Player"); - - b.Navigation("Tier"); - }); - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => { b.HasOne("Content.Server.Database.Player", "Player") @@ -1878,8 +2119,36 @@ namespace Content.Server.Database.Migrations.Sqlite .HasForeignKey("RoundId") .HasConstraintName("FK_server_ban_round_round_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + b.Navigation("CreatedBy"); + b.Navigation("HWId"); + b.Navigation("LastEditedBy"); b.Navigation("Round"); @@ -1927,8 +2196,36 @@ namespace Content.Server.Database.Migrations.Sqlite .HasForeignKey("RoundId") .HasConstraintName("FK_server_role_ban_round_round_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerRoleBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + b.Navigation("CreatedBy"); + b.Navigation("HWId"); + b.Navigation("LastEditedBy"); b.Navigation("Round"); @@ -2004,11 +2301,29 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Flags"); }); + modelBuilder.Entity("Content.Server.Database.CDModel+CDProfile", b => + { + b.Navigation("CharacterRecordEntries"); + }); + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => { b.Navigation("BanHits"); }); + modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => + { + b.Navigation("Patrons"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => + { + b.Navigation("LinkedAccount") + .IsRequired(); + + b.Navigation("LinkedAccountLogs"); + }); + modelBuilder.Entity("Content.Server.Database.Player", b => { b.Navigation("AdminLogs"); @@ -2065,6 +2380,8 @@ namespace Content.Server.Database.Migrations.Sqlite { b.Navigation("Antags"); + b.Navigation("CDProfile"); + b.Navigation("Jobs"); b.Navigation("Loadouts"); @@ -2082,19 +2399,6 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Groups"); }); - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Navigation("LinkedAccount") - .IsRequired(); - - b.Navigation("LinkedAccountLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Navigation("Patrons"); - }); - modelBuilder.Entity("Content.Server.Database.Round", b => { b.Navigation("AdminLogs"); diff --git a/Content.Server.Database/Migrations/Sqlite/20240628081326_RMCPatrons.cs b/Content.Server.Database/Migrations/Sqlite/20260607234836_DiscordLinking.cs similarity index 51% rename from Content.Server.Database/Migrations/Sqlite/20240628081326_RMCPatrons.cs rename to Content.Server.Database/Migrations/Sqlite/20260607234836_DiscordLinking.cs index 8213e2d30e0..0abc9f13441 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240628081326_RMCPatrons.cs +++ b/Content.Server.Database/Migrations/Sqlite/20260607234836_DiscordLinking.cs @@ -6,11 +6,15 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Sqlite { /// - public partial class DeltaVPatrons : Migration + public partial class DiscordLinking : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { + migrationBuilder.DropColumn( + name: "cur_time", + table: "admin_log"); + migrationBuilder.CreateTable( name: "discord_accounts", columns: table => new @@ -23,13 +27,35 @@ namespace Content.Server.Database.Migrations.Sqlite table.PrimaryKey("PK_discord_accounts", x => x.discord_accounts_id); }); + migrationBuilder.CreateTable( + name: "discord_linking_codes", + columns: table => new + { + player_id = table.Column(type: "TEXT", nullable: false), + code = table.Column(type: "TEXT", nullable: false), + creation_time = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_discord_linking_codes", x => x.player_id); + table.ForeignKey( + name: "FK_discord_linking_codes_player_player_id1", + column: x => x.player_id, + principalTable: "player", + principalColumn: "user_id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "patreon_tiers", columns: table => new { patreon_tiers_id = table.Column(type: "INTEGER", nullable: false) .Annotation("Sqlite:Autoincrement", true), - show_on_credits = table.Column(type: "INTEGER", nullable: false) + show_on_credits = table.Column(type: "INTEGER", nullable: false), + name = table.Column(type: "TEXT", nullable: false), + discord_role = table.Column(type: "INTEGER", nullable: false), + priority = table.Column(type: "INTEGER", nullable: false) }, constraints: table => { @@ -46,18 +72,45 @@ namespace Content.Server.Database.Migrations.Sqlite constraints: table => { table.PrimaryKey("PK_discord_linked_accounts", x => x.player_id); - table.ForeignKey( - name: "FK_discord_linked_accounts_player_player_id", - column: x => x.player_id, - principalTable: "player", - principalColumn: "user_id", - onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_discord_linked_accounts_discord_accounts_discord_id", column: x => x.discord_id, principalTable: "discord_accounts", principalColumn: "discord_accounts_id", onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_discord_linked_accounts_player_player_id1", + column: x => x.player_id, + principalTable: "player", + principalColumn: "user_id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "discord_linked_accounts_logs", + columns: table => new + { + discord_linked_accounts_logs_id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + player_id = table.Column(type: "TEXT", nullable: false), + discord_id = table.Column(type: "INTEGER", nullable: false), + at = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_discord_linked_accounts_logs", x => x.discord_linked_accounts_logs_id); + table.ForeignKey( + name: "FK_discord_linked_accounts_logs_discord_accounts_discord_id", + column: x => x.discord_id, + principalTable: "discord_accounts", + principalColumn: "discord_accounts_id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_discord_linked_accounts_logs_player_player_id1", + column: x => x.player_id, + principalTable: "player", + principalColumn: "user_id", + onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( @@ -70,18 +123,18 @@ namespace Content.Server.Database.Migrations.Sqlite constraints: table => { table.PrimaryKey("PK_patreon_patrons", x => x.player_id); - table.ForeignKey( - name: "FK_patreon_patrons_player_player_id", - column: x => x.player_id, - principalTable: "player", - principalColumn: "user_id", - onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_patreon_patrons_patreon_tiers_tier_id", column: x => x.tier_id, principalTable: "patreon_tiers", principalColumn: "patreon_tiers_id", onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_patreon_patrons_player_player_id1", + column: x => x.player_id, + principalTable: "player", + principalColumn: "user_id", + onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateIndex( @@ -90,10 +143,36 @@ namespace Content.Server.Database.Migrations.Sqlite column: "discord_id", unique: true); + migrationBuilder.CreateIndex( + name: "IX_discord_linked_accounts_logs_at", + table: "discord_linked_accounts_logs", + column: "at"); + + migrationBuilder.CreateIndex( + name: "IX_discord_linked_accounts_logs_discord_id", + table: "discord_linked_accounts_logs", + column: "discord_id"); + + migrationBuilder.CreateIndex( + name: "IX_discord_linked_accounts_logs_player_id", + table: "discord_linked_accounts_logs", + column: "player_id"); + + migrationBuilder.CreateIndex( + name: "IX_discord_linking_codes_code", + table: "discord_linking_codes", + column: "code"); + migrationBuilder.CreateIndex( name: "IX_patreon_patrons_tier_id", table: "patreon_patrons", column: "tier_id"); + + migrationBuilder.CreateIndex( + name: "IX_patreon_tiers_discord_role", + table: "patreon_tiers", + column: "discord_role", + unique: true); } /// @@ -102,6 +181,12 @@ namespace Content.Server.Database.Migrations.Sqlite migrationBuilder.DropTable( name: "discord_linked_accounts"); + migrationBuilder.DropTable( + name: "discord_linked_accounts_logs"); + + migrationBuilder.DropTable( + name: "discord_linking_codes"); + migrationBuilder.DropTable( name: "patreon_patrons"); @@ -110,6 +195,13 @@ namespace Content.Server.Database.Migrations.Sqlite migrationBuilder.DropTable( name: "patreon_tiers"); + + migrationBuilder.AddColumn( + name: "cur_time", + table: "admin_log", + type: "INTEGER", + nullable: false, + defaultValue: 0L); } } } diff --git a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs index 5a3bd3e06f2..d982ebd2c2c 100644 --- a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs @@ -15,7 +15,7 @@ namespace Content.Server.Database.Migrations.Sqlite protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "9.0.1"); + modelBuilder.HasAnnotation("ProductVersion", "10.0.6"); modelBuilder.Entity("Content.Server.Database.Admin", b => { @@ -698,6 +698,147 @@ namespace Content.Server.Database.Migrations.Sqlite b.ToTable("dv_seen_tips", (string)null); }); + modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => + { + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("TierId") + .HasColumnType("INTEGER") + .HasColumnName("tier_id"); + + b.HasKey("PlayerId") + .HasName("PK_patreon_patrons"); + + b.HasIndex("TierId") + .HasDatabaseName("IX_patreon_patrons_tier_id"); + + b.ToTable("patreon_patrons", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("patreon_tiers_id"); + + b.Property("DiscordRole") + .HasColumnType("INTEGER") + .HasColumnName("discord_role"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.Property("Priority") + .HasColumnType("INTEGER") + .HasColumnName("priority"); + + b.Property("ShowOnCredits") + .HasColumnType("INTEGER") + .HasColumnName("show_on_credits"); + + b.HasKey("Id") + .HasName("PK_patreon_tiers"); + + b.HasIndex("DiscordRole") + .IsUnique(); + + b.ToTable("patreon_tiers", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("discord_accounts_id"); + + b.HasKey("Id") + .HasName("PK_discord_accounts"); + + b.ToTable("discord_accounts", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => + { + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("DiscordId") + .HasColumnType("INTEGER") + .HasColumnName("discord_id"); + + b.HasKey("PlayerId") + .HasName("PK_discord_linked_accounts"); + + b.HasIndex("DiscordId") + .IsUnique(); + + b.ToTable("discord_linked_accounts", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("discord_linked_accounts_logs_id"); + + b.Property("At") + .HasColumnType("TEXT") + .HasColumnName("at"); + + b.Property("DiscordId") + .HasColumnType("INTEGER") + .HasColumnName("discord_id"); + + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.HasKey("Id") + .HasName("PK_discord_linked_accounts_logs"); + + b.HasIndex("At") + .HasDatabaseName("IX_discord_linked_accounts_logs_at"); + + b.HasIndex("DiscordId") + .HasDatabaseName("IX_discord_linked_accounts_logs_discord_id"); + + b.HasIndex("PlayerId") + .HasDatabaseName("IX_discord_linked_accounts_logs_player_id"); + + b.ToTable("discord_linked_accounts_logs", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => + { + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("Code") + .HasColumnType("TEXT") + .HasColumnName("code"); + + b.Property("CreationTime") + .HasColumnType("TEXT") + .HasColumnName("creation_time"); + + b.HasKey("PlayerId") + .HasName("PK_discord_linking_codes"); + + b.HasIndex("Code") + .HasDatabaseName("IX_discord_linking_codes_code"); + + b.ToTable("discord_linking_codes", (string)null); + }); + modelBuilder.Entity("Content.Server.Database.IPIntelCache", b => { b.Property("Id") @@ -1047,149 +1188,6 @@ namespace Content.Server.Database.Migrations.Sqlite b.ToTable("profile_role_loadout", (string)null); }); - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("discord_accounts_id"); - - b.HasKey("Id") - .HasName("PK_discord_accounts"); - - b.ToTable("discord_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("DiscordId") - .HasColumnType("INTEGER") - .HasColumnName("discord_id"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linked_accounts"); - - b.HasIndex("DiscordId") - .IsUnique(); - - b.ToTable("discord_linked_accounts", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("discord_linked_accounts_logs_id"); - - b.Property("At") - .HasColumnType("TEXT") - .HasColumnName("at"); - - b.Property("DiscordId") - .HasColumnType("INTEGER") - .HasColumnName("discord_id"); - - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.HasKey("Id") - .HasName("PK_discord_linked_accounts_logs"); - - b.HasIndex("At") - .HasDatabaseName("IX_discord_linked_accounts_logs_at"); - - b.HasIndex("DiscordId") - .HasDatabaseName("IX_discord_linked_accounts_logs_discord_id"); - - b.HasIndex("PlayerId") - .HasDatabaseName("IX_discord_linked_accounts_logs_player_id"); - - b.ToTable("discord_linked_accounts_logs", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("Code") - .HasColumnType("TEXT") - .HasColumnName("code"); - - b.Property("CreationTime") - .HasColumnType("TEXT") - .HasColumnName("creation_time"); - - b.HasKey("PlayerId") - .HasName("PK_discord_linking_codes"); - - b.HasIndex("Code") - .HasDatabaseName("IX_discord_linking_codes_code"); - - b.ToTable("discord_linking_codes", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.Property("PlayerId") - .HasColumnType("TEXT") - .HasColumnName("player_id"); - - b.Property("TierId") - .HasColumnType("INTEGER") - .HasColumnName("tier_id"); - - b.HasKey("PlayerId") - .HasName("PK_patreon_patrons"); - - b.HasIndex("TierId") - .HasDatabaseName("IX_patreon_patrons_tier_id"); - - b.ToTable("patreon_patrons", (string)null); - }); - - - // TODO: Discord Linking - Fix for DeltaV - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("patreon_tiers_id"); - - b.Property("DiscordRole") - .HasColumnType("INTEGER") - .HasColumnName("discord_role"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.Property("Priority") - .HasColumnType("INTEGER") - .HasColumnName("priority"); - - b.Property("ShowOnCredits") - .HasColumnType("INTEGER") - .HasColumnName("show_on_credits"); - - b.HasKey("Id") - .HasName("PK_patreon_tiers"); - - b.HasIndex("DiscordRole") - .IsUnique(); - - b.ToTable("patreon_tiers", (string)null); - }); - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => { b.Property("PlayerUserId") @@ -1902,6 +1900,85 @@ namespace Content.Server.Database.Migrations.Sqlite .HasConstraintName("FK_dv_seen_tips_player_player_id"); }); + modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithOne("Patron") + .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") + .HasPrincipalKey("Content.Server.Database.Player", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_patreon_patrons_player_player_id1"); + + b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") + .WithMany("Patrons") + .HasForeignKey("TierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); + + b.Navigation("Player"); + + b.Navigation("Tier"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => + { + b.HasOne("Content.Server.Database.DiscordAccount", "Discord") + .WithOne("LinkedAccount") + .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithOne("LinkedAccount") + .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") + .HasPrincipalKey("Content.Server.Database.Player", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_player_player_id1"); + + b.Navigation("Discord"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => + { + b.HasOne("Content.Server.Database.DiscordAccount", "Discord") + .WithMany("LinkedAccountLogs") + .HasForeignKey("DiscordId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_logs_discord_accounts_discord_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("LinkedAccountLogs") + .HasForeignKey("PlayerId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linked_accounts_logs_player_player_id1"); + + b.Navigation("Discord"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithOne("LinkingCodes") + .HasForeignKey("Content.Server.Database.DiscordLinkingCodes", "PlayerId") + .HasPrincipalKey("Content.Server.Database.Player", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_discord_linking_codes_player_player_id1"); + + b.Navigation("Player"); + }); + modelBuilder.Entity("Content.Server.Database.Job", b => { b.HasOne("Content.Server.Database.Profile", "Profile") @@ -1993,85 +2070,6 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Profile"); }); - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccount", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkedAccount") - .HasForeignKey("Content.Server.Database.DiscordLinkedAccount", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_player_player_id"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkedAccountLogs", b => - { - b.HasOne("Content.Server.Database.DiscordAccount", "Discord") - .WithMany("LinkedAccountLogs") - .HasForeignKey("DiscordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_logs_discord_accounts_discord_id"); - - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("LinkedAccountLogs") - .HasForeignKey("PlayerId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linked_accounts_logs_player__player_id1"); - - b.Navigation("Discord"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DiscordLinkingCodes", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("LinkingCodes") - .HasForeignKey("Content.Server.Database.DiscordLinkingCodes", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_discord_linking_codes_player_player_id"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatron", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithOne("Patron") - .HasForeignKey("Content.Server.Database.DeltaVPatron", "PlayerId") - .HasPrincipalKey("Content.Server.Database.Player", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_player_player_id"); - - b.HasOne("Content.Server.Database.DeltaVPatronTier", "Tier") - .WithMany("Patrons") - .HasForeignKey("TierId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_patreon_patrons_patreon_tiers_tier_id"); - - b.Navigation("Player"); - - b.Navigation("Tier"); - }); - modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => { b.HasOne("Content.Server.Database.Player", "Player") @@ -2310,6 +2308,19 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("BanHits"); }); + modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => + { + b.Navigation("Patrons"); + }); + + modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => + { + b.Navigation("LinkedAccount") + .IsRequired(); + + b.Navigation("LinkedAccountLogs"); + }); + modelBuilder.Entity("Content.Server.Database.Player", b => { b.Navigation("AdminLogs"); @@ -2385,19 +2396,6 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Groups"); }); - modelBuilder.Entity("Content.Server.Database.DiscordAccount", b => - { - b.Navigation("LinkedAccount") - .IsRequired(); - - b.Navigation("LinkedAccountLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.DeltaVPatronTier", b => - { - b.Navigation("Patrons"); - }); - modelBuilder.Entity("Content.Server.Database.Round", b => { b.Navigation("AdminLogs");