// <auto-generated />
using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using Plugin.Database.DB;
using WingsAPI.Data.Character;
using WingsAPI.Data.Families;
using WingsAPI.Data.Miniland;
using WingsEmu.DTOs.Bonus;
using WingsEmu.DTOs.Buffs;
using WingsEmu.DTOs.Inventory;
using WingsEmu.DTOs.Items;
using WingsEmu.DTOs.Mates;
using WingsEmu.DTOs.Quests;
using WingsEmu.DTOs.Quicklist;
using WingsEmu.DTOs.Respawns;
using WingsEmu.DTOs.Skills;
using WingsEmu.DTOs.Titles;

namespace Plugin.Database.Migrations
{
    [DbContext(typeof(GameContext))]
    partial class GameContextModelSnapshot : ModelSnapshot
    {
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("Relational:MaxIdentifierLength", 63)
                .HasAnnotation("ProductVersion", "5.0.7")
                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

            modelBuilder.Entity("Plugin.Database.Auth.ClientVersion.AuthorizedClientVersionEntity", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("ClientVersion")
                        .IsRequired()
                        .HasColumnType("text");

                    b.Property<string>("DllHash")
                        .IsRequired()
                        .HasColumnType("text");

                    b.Property<string>("ExecutableHash")
                        .IsRequired()
                        .HasColumnType("text");

                    b.HasKey("Id");

                    b.ToTable("authorized_client_versions", "_config_auth");
                });

            modelBuilder.Entity("Plugin.Database.Auth.HWID.BlacklistedHwidEntity", b =>
                {
                    b.Property<string>("HardwareId")
                        .HasColumnType("text");

                    b.Property<string>("Comment")
                        .IsRequired()
                        .HasColumnType("text");

                    b.Property<string>("Judge")
                        .IsRequired()
                        .HasColumnType("text");

                    b.HasKey("HardwareId");

                    b.ToTable("blacklisted_hardware_ids", "_config_auth");
                });

            modelBuilder.Entity("Plugin.Database.Bazaar.DbBazaarItemEntity", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<int>("Amount")
                        .HasColumnType("integer");

                    b.Property<long>("CharacterId")
                        .HasColumnType("bigint");

                    b.Property<DateTime?>("CreatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<short>("DayExpiryAmount")
                        .HasColumnType("smallint");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime>("ExpiryDate")
                        .HasColumnType("timestamp without time zone");

                    b.Property<bool>("IsPackage")
                        .HasColumnType("boolean");

                    b.Property<ItemInstanceDTO>("ItemInstance")
                        .HasColumnType("jsonb");

                    b.Property<long>("PricePerItem")
                        .HasColumnType("bigint");

                    b.Property<long>("SaleFee")
                        .HasColumnType("bigint");

                    b.Property<int>("SoldAmount")
                        .HasColumnType("integer");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<bool>("UsedMedal")
                        .HasColumnType("boolean");

                    b.HasKey("Id");

                    b.HasIndex("CharacterId");

                    b.ToTable("items", "bazaar");
                });

            modelBuilder.Entity("Plugin.Database.Entities.Account.AccountBanEntity", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<long>("AccountId")
                        .HasColumnType("bigint");

                    b.Property<DateTime?>("End")
                        .HasColumnType("timestamp without time zone");

                    b.Property<string>("JudgeName")
                        .HasColumnType("text");

                    b.Property<string>("Reason")
                        .HasColumnType("text");

                    b.Property<DateTime>("Start")
                        .HasColumnType("timestamp without time zone");

                    b.Property<string>("TargetName")
                        .HasColumnType("text");

                    b.Property<string>("UnlockReason")
                        .HasColumnType("text");

                    b.HasKey("Id");

                    b.HasIndex("AccountId");

                    b.ToTable("accounts_bans", "accounts");
                });

            modelBuilder.Entity("Plugin.Database.Entities.Account.AccountEntity", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<short>("Authority")
                        .HasColumnType("smallint");

                    b.Property<long>("BankMoney")
                        .HasColumnType("bigint");

                    b.Property<DateTime?>("CreatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<bool>("IsPrimaryAccount")
                        .HasColumnType("boolean");

                    b.Property<int>("Language")
                        .HasColumnType("integer");

                    b.Property<Guid>("MasterAccountId")
                        .HasColumnType("uuid");

                    b.Property<string>("Name")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)");

                    b.Property<string>("Password")
                        .HasMaxLength(255)
                        .IsUnicode(false)
                        .HasColumnType("character varying(255)");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.HasKey("Id");

                    b.ToTable("accounts", "accounts");
                });

            modelBuilder.Entity("Plugin.Database.Entities.Account.AccountPenaltyEntity", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<long>("AccountId")
                        .HasColumnType("bigint");

                    b.Property<string>("JudgeName")
                        .HasColumnType("text");

                    b.Property<byte>("PenaltyType")
                        .HasColumnType("smallint");

                    b.Property<string>("Reason")
                        .HasColumnType("text");

                    b.Property<int?>("RemainingTime")
                        .HasColumnType("integer");

                    b.Property<DateTime>("Start")
                        .HasColumnType("timestamp without time zone");

                    b.Property<string>("TargetName")
                        .HasColumnType("text");

                    b.Property<string>("UnlockReason")
                        .HasColumnType("text");

                    b.HasKey("Id");

                    b.HasIndex("AccountId");

                    b.ToTable("accounts_penalties", "accounts");
                });

            modelBuilder.Entity("Plugin.Database.Entities.PlayersData.CharacterRelationEntity", b =>
                {
                    b.Property<long>("CharacterId")
                        .HasColumnType("bigint");

                    b.Property<long>("RelatedCharacterId")
                        .HasColumnType("bigint");

                    b.Property<string>("RelatedName")
                        .HasColumnType("text");

                    b.Property<short>("RelationType")
                        .HasColumnType("smallint");

                    b.HasKey("CharacterId", "RelatedCharacterId");

                    b.HasIndex("RelatedCharacterId");

                    b.ToTable("characters_relations", "characters");
                });

            modelBuilder.Entity("Plugin.Database.Entities.PlayersData.DbCharacter", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<long>("AccountId")
                        .HasColumnType("bigint");

                    b.Property<int>("Act4Dead")
                        .HasColumnType("integer");

                    b.Property<int>("Act4Kill")
                        .HasColumnType("integer");

                    b.Property<int>("Act4Points")
                        .HasColumnType("integer");

                    b.Property<int>("Act5RespawnType")
                        .HasColumnType("integer");

                    b.Property<List<CharacterQuestDto>>("ActiveQuests")
                        .HasColumnType("jsonb");

                    b.Property<int>("ArenaWinner")
                        .HasColumnType("integer");

                    b.Property<string>("Biography")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)");

                    b.Property<List<CharacterStaticBonusDto>>("Bonus")
                        .HasColumnType("jsonb");

                    b.Property<bool>("BuffBlocked")
                        .HasColumnType("boolean");

                    b.Property<byte>("Class")
                        .HasColumnType("smallint");

                    b.Property<List<CharacterQuestDto>>("CompletedPeriodicQuests")
                        .HasColumnType("jsonb");

                    b.Property<List<CharacterQuestDto>>("CompletedQuests")
                        .HasColumnType("jsonb");

                    b.Property<List<CompletedScriptsDto>>("CompletedScripts")
                        .HasColumnType("jsonb");

                    b.Property<HashSet<long>>("CompletedTimeSpaces")
                        .HasColumnType("jsonb");

                    b.Property<short>("Compliment")
                        .HasColumnType("smallint");

                    b.Property<DateTime?>("CreatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<float>("Dignity")
                        .HasColumnType("real");

                    b.Property<bool>("EmoticonsBlocked")
                        .HasColumnType("boolean");

                    b.Property<List<CharacterInventoryItemDto>>("EquippedStuffs")
                        .HasColumnType("jsonb");

                    b.Property<bool>("ExchangeBlocked")
                        .HasColumnType("boolean");

                    b.Property<byte>("Faction")
                        .HasColumnType("smallint");

                    b.Property<bool>("FamilyRequestBlocked")
                        .HasColumnType("boolean");

                    b.Property<bool>("FriendRequestBlocked")
                        .HasColumnType("boolean");

                    b.Property<byte>("Gender")
                        .HasColumnType("smallint");

                    b.Property<long>("Gold")
                        .HasColumnType("bigint");

                    b.Property<bool>("GroupRequestBlocked")
                        .HasColumnType("boolean");

                    b.Property<byte>("HairColor")
                        .HasColumnType("smallint");

                    b.Property<byte>("HairStyle")
                        .HasColumnType("smallint");

                    b.Property<bool>("HeroChatBlocked")
                        .HasColumnType("boolean");

                    b.Property<byte>("HeroLevel")
                        .HasColumnType("smallint");

                    b.Property<long>("HeroXp")
                        .HasColumnType("bigint");

                    b.Property<bool>("HideHat")
                        .HasColumnType("boolean");

                    b.Property<int>("Hp")
                        .HasColumnType("integer");

                    b.Property<bool>("HpBlocked")
                        .HasColumnType("boolean");

                    b.Property<List<CharacterInventoryItemDto>>("Inventory")
                        .HasColumnType("jsonb");

                    b.Property<bool>("IsPartnerAutoRelive")
                        .HasColumnType("boolean");

                    b.Property<bool>("IsPetAutoRelive")
                        .HasColumnType("boolean");

                    b.Property<byte>("JobLevel")
                        .HasColumnType("smallint");

                    b.Property<long>("JobLevelXp")
                        .HasColumnType("bigint");

                    b.Property<List<CharacterSkillDTO>>("LearnedSkills")
                        .HasColumnType("jsonb");

                    b.Property<byte>("Level")
                        .HasColumnType("smallint");

                    b.Property<long>("LevelXp")
                        .HasColumnType("bigint");

                    b.Property<CharacterLifetimeStatsDto>("LifetimeStats")
                        .HasColumnType("jsonb");

                    b.Property<int>("MapId")
                        .HasColumnType("integer");

                    b.Property<short>("MapX")
                        .HasColumnType("smallint");

                    b.Property<short>("MapY")
                        .HasColumnType("smallint");

                    b.Property<int>("MasterPoints")
                        .HasColumnType("integer");

                    b.Property<int>("MasterTicket")
                        .HasColumnType("integer");

                    b.Property<byte>("MaxPartnerCount")
                        .HasColumnType("smallint");

                    b.Property<byte>("MaxPetCount")
                        .HasColumnType("smallint");

                    b.Property<bool>("MinilandInviteBlocked")
                        .HasColumnType("boolean");

                    b.Property<string>("MinilandMessage")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)");

                    b.Property<List<CharacterMinilandObjectDto>>("MinilandObjects")
                        .HasColumnType("jsonb");

                    b.Property<short>("MinilandPoint")
                        .HasColumnType("smallint");

                    b.Property<byte>("MinilandState")
                        .HasColumnType("smallint");

                    b.Property<bool>("MouseAimLock")
                        .HasColumnType("boolean");

                    b.Property<int>("Mp")
                        .HasColumnType("integer");

                    b.Property<string>("Name")
                        .HasMaxLength(30)
                        .IsUnicode(false)
                        .HasColumnType("character varying(30)");

                    b.Property<List<MateDTO>>("NosMates")
                        .HasColumnType("jsonb");

                    b.Property<List<CharacterPartnerInventoryItemDto>>("PartnerInventory")
                        .HasColumnType("jsonb");

                    b.Property<List<PartnerWarehouseItemDto>>("PartnerWarehouse")
                        .HasColumnType("jsonb");

                    b.Property<string>("Prefix")
                        .HasMaxLength(25)
                        .HasColumnType("character varying(25)");

                    b.Property<bool>("QuickGetUp")
                        .HasColumnType("boolean");

                    b.Property<List<CharacterQuicklistEntryDto>>("Quicklist")
                        .HasColumnType("jsonb");

                    b.Property<long>("RagePoint")
                        .HasColumnType("bigint");

                    b.Property<CharacterRaidRestrictionDto>("RaidRestrictionDto")
                        .HasColumnType("jsonb");

                    b.Property<RainbowBattleLeaverBusterDto>("RainbowBattleLeaverBusterDto")
                        .HasColumnType("jsonb");

                    b.Property<long>("Reput")
                        .HasColumnType("bigint");

                    b.Property<int>("RespawnType")
                        .HasColumnType("integer");

                    b.Property<CharacterReturnDto>("ReturnPoint")
                        .HasColumnType("jsonb");

                    b.Property<byte>("Slot")
                        .HasColumnType("smallint");

                    b.Property<int>("SpPointsBasic")
                        .HasColumnType("integer");

                    b.Property<int>("SpPointsBonus")
                        .HasColumnType("integer");

                    b.Property<List<CharacterStaticBuffDto>>("StaticBuffs")
                        .HasColumnType("jsonb");

                    b.Property<int>("TalentLose")
                        .HasColumnType("integer");

                    b.Property<int>("TalentSurrender")
                        .HasColumnType("integer");

                    b.Property<int>("TalentWin")
                        .HasColumnType("integer");

                    b.Property<List<CharacterTitleDto>>("Titles")
                        .HasColumnType("jsonb");

                    b.Property<bool>("UiBlocked")
                        .HasColumnType("boolean");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<bool>("WhisperBlocked")
                        .HasColumnType("boolean");

                    b.HasKey("Id");

                    b.HasIndex("AccountId");

                    b.ToTable("characters", "characters");
                });

            modelBuilder.Entity("Plugin.Database.Entities.ServerData.DbTimeSpaceRecord", b =>
                {
                    b.Property<long>("TimeSpaceId")
                        .HasColumnType("bigint");

                    b.Property<string>("CharacterName")
                        .HasColumnType("text");

                    b.Property<DateTime>("Date")
                        .HasColumnType("timestamp without time zone");

                    b.Property<long>("Record")
                        .HasColumnType("bigint");

                    b.HasKey("TimeSpaceId");

                    b.ToTable("time_space_records", "characters");
                });

            modelBuilder.Entity("Plugin.Database.Families.DbFamily", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<FamilyAchievementsDto>("Achievements")
                        .HasColumnType("jsonb");

                    b.Property<bool>("AssistantCanGetHistory")
                        .HasColumnType("boolean");

                    b.Property<bool>("AssistantCanInvite")
                        .HasColumnType("boolean");

                    b.Property<bool>("AssistantCanNotice")
                        .HasColumnType("boolean");

                    b.Property<bool>("AssistantCanShout")
                        .HasColumnType("boolean");

                    b.Property<byte>("AssistantWarehouseAuthorityType")
                        .HasColumnType("smallint");

                    b.Property<DateTime?>("CreatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<long>("Experience")
                        .HasColumnType("bigint");

                    b.Property<byte>("Faction")
                        .HasColumnType("smallint");

                    b.Property<byte>("HeadGender")
                        .HasColumnType("smallint");

                    b.Property<byte>("Level")
                        .HasColumnType("smallint");

                    b.Property<bool>("MemberCanGetHistory")
                        .HasColumnType("boolean");

                    b.Property<byte>("MemberWarehouseAuthorityType")
                        .HasColumnType("smallint");

                    b.Property<string>("Message")
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)");

                    b.Property<FamilyMissionsDto>("Missions")
                        .HasColumnType("jsonb");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(30)
                        .IsUnicode(true)
                        .HasColumnType("character varying(30)");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<FamilyUpgradeDto>("Upgrades")
                        .HasColumnType("jsonb");

                    b.HasKey("Id");

                    b.ToTable("families", "families");
                });

            modelBuilder.Entity("Plugin.Database.Families.DbFamilyLog", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Actor")
                        .HasMaxLength(32)
                        .HasColumnType("character varying(32)");

                    b.Property<string>("Argument1")
                        .HasMaxLength(16)
                        .HasColumnType("character varying(16)");

                    b.Property<string>("Argument2")
                        .HasMaxLength(16)
                        .HasColumnType("character varying(16)");

                    b.Property<string>("Argument3")
                        .HasMaxLength(16)
                        .HasColumnType("character varying(16)");

                    b.Property<DateTime?>("CreatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<long>("FamilyId")
                        .HasColumnType("bigint");

                    b.Property<byte>("FamilyLogType")
                        .HasColumnType("smallint");

                    b.Property<DateTime>("Timestamp")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.HasKey("Id");

                    b.HasIndex("FamilyId");

                    b.ToTable("families_logs", "families");
                });

            modelBuilder.Entity("Plugin.Database.Families.DbFamilyMembership", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<byte>("Authority")
                        .HasColumnType("smallint");

                    b.Property<long?>("CharacterId")
                        .HasColumnType("bigint");

                    b.Property<DateTime?>("CreatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<string>("DailyMessage")
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<long>("Experience")
                        .HasColumnType("bigint");

                    b.Property<long>("FamilyId")
                        .HasColumnType("bigint");

                    b.Property<DateTime>("JoinDate")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime>("LastOnlineDate")
                        .HasColumnType("timestamp without time zone");

                    b.Property<byte>("Title")
                        .HasColumnType("smallint");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.HasKey("Id");

                    b.HasIndex("CharacterId");

                    b.HasIndex("FamilyId");

                    b.ToTable("families_memberships", "families");
                });

            modelBuilder.Entity("Plugin.Database.Families.FamilyWarehouseItemEntity", b =>
                {
                    b.Property<long>("FamilyId")
                        .HasColumnType("bigint");

                    b.Property<short>("Slot")
                        .HasColumnType("smallint");

                    b.Property<DateTime?>("CreatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<ItemInstanceDTO>("ItemInstance")
                        .HasColumnType("jsonb");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.HasKey("FamilyId", "Slot");

                    b.ToTable("families_warehouses", "families");
                });

            modelBuilder.Entity("Plugin.Database.Families.FamilyWarehouseLogEntity", b =>
                {
                    b.Property<long>("FamilyId")
                        .HasColumnType("bigint");

                    b.Property<DateTime?>("CreatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<List<FamilyWarehouseLogEntryDto>>("LogEntries")
                        .HasColumnType("jsonb");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.HasKey("FamilyId");

                    b.ToTable("families_warehouses_logs", "families");
                });

            modelBuilder.Entity("Plugin.Database.Mail.DbCharacterMail", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<DateTime?>("CreatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime>("Date")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<ItemInstanceDTO>("ItemInstance")
                        .HasColumnType("jsonb");

                    b.Property<int>("MailGiftType")
                        .HasColumnType("integer");

                    b.Property<long>("ReceiverId")
                        .HasColumnType("bigint");

                    b.Property<string>("SenderName")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.HasKey("Id");

                    b.HasIndex("ReceiverId");

                    b.ToTable("characters_mails", "mails");
                });

            modelBuilder.Entity("Plugin.Database.Mail.DbCharacterNote", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<DateTime?>("CreatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime>("Date")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<string>("EquipmentPackets")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)");

                    b.Property<bool>("IsOpened")
                        .HasColumnType("boolean");

                    b.Property<bool>("IsSenderCopy")
                        .HasColumnType("boolean");

                    b.Property<string>("Message")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)");

                    b.Property<long>("ReceiverId")
                        .HasColumnType("bigint");

                    b.Property<string>("ReceiverName")
                        .HasColumnType("text");

                    b.Property<byte>("SenderClass")
                        .HasColumnType("smallint");

                    b.Property<byte>("SenderGender")
                        .HasColumnType("smallint");

                    b.Property<byte>("SenderHairColor")
                        .HasColumnType("smallint");

                    b.Property<byte>("SenderHairStyle")
                        .HasColumnType("smallint");

                    b.Property<long>("SenderId")
                        .HasColumnType("bigint");

                    b.Property<string>("SenderName")
                        .HasColumnType("text");

                    b.Property<string>("Title")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.HasKey("Id");

                    b.HasIndex("ReceiverId");

                    b.HasIndex("SenderId");

                    b.ToTable("characters_notes", "mails");
                });

            modelBuilder.Entity("Plugin.Database.Warehouse.AccountWarehouseItemEntity", b =>
                {
                    b.Property<long>("AccountId")
                        .HasColumnType("bigint");

                    b.Property<short>("Slot")
                        .HasColumnType("smallint");

                    b.Property<DateTime?>("CreatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("timestamp without time zone");

                    b.Property<ItemInstanceDTO>("ItemInstance")
                        .HasColumnType("jsonb");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("timestamp without time zone");

                    b.HasKey("AccountId", "Slot");

                    b.ToTable("accounts_warehouse", "accounts");
                });

            modelBuilder.Entity("Plugin.Database.Bazaar.DbBazaarItemEntity", b =>
                {
                    b.HasOne("Plugin.Database.Entities.PlayersData.DbCharacter", "DbCharacter")
                        .WithMany("BazaarItem")
                        .HasForeignKey("CharacterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("DbCharacter");
                });

            modelBuilder.Entity("Plugin.Database.Entities.Account.AccountBanEntity", b =>
                {
                    b.HasOne("Plugin.Database.Entities.Account.AccountEntity", "AccountEntity")
                        .WithMany("AccountBans")
                        .HasForeignKey("AccountId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AccountEntity");
                });

            modelBuilder.Entity("Plugin.Database.Entities.Account.AccountPenaltyEntity", b =>
                {
                    b.HasOne("Plugin.Database.Entities.Account.AccountEntity", "AccountEntity")
                        .WithMany("AccountPenalties")
                        .HasForeignKey("AccountId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AccountEntity");
                });

            modelBuilder.Entity("Plugin.Database.Entities.PlayersData.CharacterRelationEntity", b =>
                {
                    b.HasOne("Plugin.Database.Entities.PlayersData.DbCharacter", "Source")
                        .WithMany("SourceRelations")
                        .HasForeignKey("CharacterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Plugin.Database.Entities.PlayersData.DbCharacter", "Target")
                        .WithMany("TargetRelations")
                        .HasForeignKey("RelatedCharacterId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Source");

                    b.Navigation("Target");
                });

            modelBuilder.Entity("Plugin.Database.Entities.PlayersData.DbCharacter", b =>
                {
                    b.HasOne("Plugin.Database.Entities.Account.AccountEntity", "AccountEntity")
                        .WithMany("Character")
                        .HasForeignKey("AccountId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AccountEntity");
                });

            modelBuilder.Entity("Plugin.Database.Families.DbFamilyLog", b =>
                {
                    b.HasOne("Plugin.Database.Families.DbFamily", "Family")
                        .WithMany("FamilyLogs")
                        .HasForeignKey("FamilyId")
                        .OnDelete(DeleteBehavior.NoAction)
                        .IsRequired();

                    b.Navigation("Family");
                });

            modelBuilder.Entity("Plugin.Database.Families.DbFamilyMembership", b =>
                {
                    b.HasOne("Plugin.Database.Entities.PlayersData.DbCharacter", "DbCharacter")
                        .WithMany("FamilyCharacter")
                        .HasForeignKey("CharacterId")
                        .OnDelete(DeleteBehavior.SetNull);

                    b.HasOne("Plugin.Database.Families.DbFamily", "Family")
                        .WithMany("FamilyCharacters")
                        .HasForeignKey("FamilyId")
                        .OnDelete(DeleteBehavior.NoAction)
                        .IsRequired();

                    b.Navigation("DbCharacter");

                    b.Navigation("Family");
                });

            modelBuilder.Entity("Plugin.Database.Families.FamilyWarehouseItemEntity", b =>
                {
                    b.HasOne("Plugin.Database.Families.DbFamily", "Family")
                        .WithMany("WarehouseItems")
                        .HasForeignKey("FamilyId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Family");
                });

            modelBuilder.Entity("Plugin.Database.Families.FamilyWarehouseLogEntity", b =>
                {
                    b.HasOne("Plugin.Database.Families.DbFamily", "Family")
                        .WithOne("WarehouseLogs")
                        .HasForeignKey("Plugin.Database.Families.FamilyWarehouseLogEntity", "FamilyId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Family");
                });

            modelBuilder.Entity("Plugin.Database.Mail.DbCharacterMail", b =>
                {
                    b.HasOne("Plugin.Database.Entities.PlayersData.DbCharacter", "Receiver")
                        .WithMany("ReceivedMails")
                        .HasForeignKey("ReceiverId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Receiver");
                });

            modelBuilder.Entity("Plugin.Database.Mail.DbCharacterNote", b =>
                {
                    b.HasOne("Plugin.Database.Entities.PlayersData.DbCharacter", "Receiver")
                        .WithMany("ReceivedNotes")
                        .HasForeignKey("ReceiverId")
                        .OnDelete(DeleteBehavior.NoAction)
                        .IsRequired();

                    b.HasOne("Plugin.Database.Entities.PlayersData.DbCharacter", "Sender")
                        .WithMany("SentNotes")
                        .HasForeignKey("SenderId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Receiver");

                    b.Navigation("Sender");
                });

            modelBuilder.Entity("Plugin.Database.Warehouse.AccountWarehouseItemEntity", b =>
                {
                    b.HasOne("Plugin.Database.Entities.Account.AccountEntity", "Account")
                        .WithMany("WarehouseItems")
                        .HasForeignKey("AccountId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Account");
                });

            modelBuilder.Entity("Plugin.Database.Entities.Account.AccountEntity", b =>
                {
                    b.Navigation("AccountBans");

                    b.Navigation("AccountPenalties");

                    b.Navigation("Character");

                    b.Navigation("WarehouseItems");
                });

            modelBuilder.Entity("Plugin.Database.Entities.PlayersData.DbCharacter", b =>
                {
                    b.Navigation("BazaarItem");

                    b.Navigation("FamilyCharacter");

                    b.Navigation("ReceivedMails");

                    b.Navigation("ReceivedNotes");

                    b.Navigation("SentNotes");

                    b.Navigation("SourceRelations");

                    b.Navigation("TargetRelations");
                });

            modelBuilder.Entity("Plugin.Database.Families.DbFamily", b =>
                {
                    b.Navigation("FamilyCharacters");

                    b.Navigation("FamilyLogs");

                    b.Navigation("WarehouseItems");

                    b.Navigation("WarehouseLogs");
                });
#pragma warning restore 612, 618
        }
    }
}
