diff --git a/Turbo.Database/Context/DesignTimeTurboDbContext.cs b/Turbo.Database/Context/DesignTimeTurboDbContext.cs new file mode 100644 index 00000000..bb9ff8c1 --- /dev/null +++ b/Turbo.Database/Context/DesignTimeTurboDbContext.cs @@ -0,0 +1,36 @@ +using System.IO; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; +using Microsoft.Extensions.Configuration; + +namespace Turbo.Database.Context +{ + public class TurboDbContextFactory : IDesignTimeDbContextFactory + { + public TurboDbContext CreateDbContext(string[] args) + { + var optionsBuilder = new DbContextOptionsBuilder(); + + var basePath = Path.Combine(Directory.GetCurrentDirectory(), ".."); + var configuration = new ConfigurationBuilder() + .SetBasePath(basePath) + .AddJsonFile("appsettings.json", optional: false) + .AddJsonFile("appsettings.Development.json", optional: true) + .AddEnvironmentVariables() + .Build(); + + var connectionString = configuration["Turbo:Database:ConnectionString"]; + + optionsBuilder.UseMySql( + connectionString, + ServerVersion.AutoDetect(connectionString), + options => + { + options.MigrationsAssembly("Turbo.Database"); + } + ); + + return new TurboDbContext(optionsBuilder.Options); + } + } +} diff --git a/Turbo.Database/Context/TurboDbContext.cs b/Turbo.Database/Context/TurboDbContext.cs index 3b5e29b3..00ee3c43 100644 --- a/Turbo.Database/Context/TurboDbContext.cs +++ b/Turbo.Database/Context/TurboDbContext.cs @@ -12,47 +12,47 @@ namespace Turbo.Database.Context; public class TurboDbContext(DbContextOptions options) : DbContextBase(options) { - public required DbSet CatalogOffers { get; init; } + public DbSet CatalogOffers { get; init; } - public required DbSet CatalogPages { get; init; } + public DbSet CatalogPages { get; init; } - public required DbSet CatalogProducts { get; init; } - public required DbSet FurnitureDefinitions { get; init; } + public DbSet CatalogProducts { get; init; } + public DbSet FurnitureDefinitions { get; init; } - public required DbSet Furnitures { get; init; } + public DbSet Furnitures { get; init; } - public required DbSet FurnitureTeleportLinks { get; init; } + public DbSet FurnitureTeleportLinks { get; init; } - public required DbSet PlayerBadges { get; init; } + public DbSet PlayerBadges { get; init; } - public required DbSet PlayerCurrencies { get; init; } - public required DbSet Players { get; init; } + public DbSet PlayerCurrencies { get; init; } + public DbSet Players { get; init; } - public required DbSet RoomBans { get; init; } + public DbSet RoomBans { get; init; } - public required DbSet Rooms { get; init; } + public DbSet Rooms { get; init; } - public required DbSet RoomModels { get; init; } + public DbSet RoomModels { get; init; } - public required DbSet RoomMutes { get; init; } + public DbSet RoomMutes { get; init; } - public required DbSet RoomRights { get; init; } + public DbSet RoomRights { get; init; } - public required DbSet RoomEntryLogs { get; init; } + public DbSet RoomEntryLogs { get; init; } - public required DbSet Chatlogs { get; init; } - public required DbSet SecurityTickets { get; init; } + public DbSet Chatlogs { get; init; } + public DbSet SecurityTickets { get; init; } - public required DbSet NavigatorTopLevelContexts { get; init; } + public DbSet NavigatorTopLevelContexts { get; init; } - public required DbSet NavigatorFlatCategories { get; init; } + public DbSet NavigatorFlatCategories { get; init; } - public required DbSet NavigatorEventCategories { get; init; } + public DbSet NavigatorEventCategories { get; init; } - public required DbSet PlayerChatStyles { get; init; } - public required DbSet PlayerOwnedChatStyles { get; init; } + public DbSet PlayerChatStyles { get; init; } + public DbSet PlayerOwnedChatStyles { get; init; } - public required DbSet PerformanceLogs { get; init; } + public DbSet PerformanceLogs { get; init; } - public required DbSet PlayerFavouriteRooms { get; init; } + public DbSet PlayerFavouriteRooms { get; init; } } diff --git a/Turbo.Database/Entities/Furniture/FurnitureDefinitionEntity.cs b/Turbo.Database/Entities/Furniture/FurnitureDefinitionEntity.cs index f4acb8f6..34126d71 100644 --- a/Turbo.Database/Entities/Furniture/FurnitureDefinitionEntity.cs +++ b/Turbo.Database/Entities/Furniture/FurnitureDefinitionEntity.cs @@ -29,7 +29,7 @@ public class FurnitureDefinitionEntity : TurboEntity public required FurnitureCategory FurniCategory { get; set; } [Column("logic")] - [MaxLength(30)] + [MaxLength(50)] [DefaultValue("none")] // RoomObjectLogicType.FurnitureDefault public required string Logic { get; set; } diff --git a/Turbo.Database/Entities/Room/RoomModelEntity.cs b/Turbo.Database/Entities/Room/RoomModelEntity.cs index bb762cc9..bb6c10a4 100644 --- a/Turbo.Database/Entities/Room/RoomModelEntity.cs +++ b/Turbo.Database/Entities/Room/RoomModelEntity.cs @@ -12,7 +12,7 @@ public class RoomModelEntity : TurboEntity [Column("name")] public required string Name { get; set; } - [Column("model")] + [Column("model", TypeName = "longtext")] public required string Model { get; set; } [Column("door_x")] diff --git a/Turbo.Database/Extensions/ServiceCollectionExtensions.cs b/Turbo.Database/Extensions/ServiceCollectionExtensions.cs index 8cae617f..d956a1e3 100644 --- a/Turbo.Database/Extensions/ServiceCollectionExtensions.cs +++ b/Turbo.Database/Extensions/ServiceCollectionExtensions.cs @@ -33,7 +33,7 @@ HostApplicationBuilder builder ServerVersion.AutoDetect(connectionString), options => { - options.MigrationsAssembly("Turbo.Main"); + options.MigrationsAssembly("Turbo.Database"); } ); } diff --git a/Turbo.Main/Migrations/20250907051021_InitialCreate.Designer.cs b/Turbo.Database/Migrations/20250907051021_InitialCreate.Designer.cs similarity index 99% rename from Turbo.Main/Migrations/20250907051021_InitialCreate.Designer.cs rename to Turbo.Database/Migrations/20250907051021_InitialCreate.Designer.cs index 3704e760..1b082b3b 100644 --- a/Turbo.Main/Migrations/20250907051021_InitialCreate.Designer.cs +++ b/Turbo.Database/Migrations/20250907051021_InitialCreate.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; @@ -9,7 +9,7 @@ #nullable disable -namespace Turbo.Main.Migrations +namespace Turbo.Database.Migrations { [DbContext(typeof(TurboDbContext))] [Migration("20250907051021_InitialCreate")] diff --git a/Turbo.Main/Migrations/20250907051021_InitialCreate.cs b/Turbo.Database/Migrations/20250907051021_InitialCreate.cs similarity index 99% rename from Turbo.Main/Migrations/20250907051021_InitialCreate.cs rename to Turbo.Database/Migrations/20250907051021_InitialCreate.cs index 8ce385b5..91369466 100644 --- a/Turbo.Main/Migrations/20250907051021_InitialCreate.cs +++ b/Turbo.Database/Migrations/20250907051021_InitialCreate.cs @@ -4,7 +4,7 @@ #nullable disable -namespace Turbo.Main.Migrations +namespace Turbo.Database.Migrations { /// public partial class InitialCreate : Migration diff --git a/Turbo.Database/Migrations/20260205185839_AddedModels.Designer.cs b/Turbo.Database/Migrations/20260205185839_AddedModels.Designer.cs new file mode 100644 index 00000000..2fa50920 --- /dev/null +++ b/Turbo.Database/Migrations/20260205185839_AddedModels.Designer.cs @@ -0,0 +1,2287 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Turbo.Database.Context; + +#nullable disable + +namespace Turbo.Database.Migrations +{ + [DbContext(typeof(TurboDbContext))] + [Migration("20260205185839_AddedModels")] + partial class AddedModels + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogOfferEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CanBundle") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_bundle"); + + b.Property("CanGift") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_gift"); + + b.Property("CatalogPageEntityId") + .HasColumnType("int") + .HasColumnName("page_id"); + + b.Property("ClubLevel") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("club_level"); + + b.Property("CostCredits") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("cost_credits"); + + b.Property("CostCurrency") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("cost_currency"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("CurrencyType") + .HasColumnType("int") + .HasColumnName("currency_type"); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("LocalizationId") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("localization_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.HasIndex("CatalogPageEntityId"); + + b.ToTable("catalog_offers"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogPageEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Icon") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("icon"); + + b.PrimitiveCollection("ImageData") + .HasColumnType("longtext") + .HasColumnName("image_data"); + + b.Property("Layout") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasDefaultValue("default_3x3") + .HasColumnName("layout"); + + b.Property("Localization") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnName("localization"); + + b.Property("Name") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnName("name"); + + b.Property("ParentEntityId") + .HasColumnType("int") + .HasColumnName("parent_id"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.PrimitiveCollection("TextData") + .HasColumnType("longtext") + .HasColumnName("text_data"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.HasIndex("ParentEntityId"); + + b.ToTable("catalog_pages"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogProductEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CatalogOfferEntityId") + .HasColumnType("int") + .HasColumnName("offer_id"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("ExtraParam") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("extra_param"); + + b.Property("FurnitureDefinitionEntityId") + .HasColumnType("int") + .HasColumnName("definition_id"); + + b.Property("ProductType") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("product_type"); + + b.Property("Quantity") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("quantity"); + + b.Property("UniqueRemaining") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("unique_remaining"); + + b.Property("UniqueSize") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("unique_size"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("CatalogOfferEntityId"); + + b.HasIndex("FurnitureDefinitionEntityId"); + + b.ToTable("catalog_products"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureDefinitionEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CanGroup") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_group"); + + b.Property("CanLay") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("can_lay"); + + b.Property("CanRecycle") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("can_recycle"); + + b.Property("CanSell") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_sell"); + + b.Property("CanSit") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("can_sit"); + + b.Property("CanStack") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_stack"); + + b.Property("CanTrade") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_trade"); + + b.Property("CanWalk") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("can_walk"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("ExtraData") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("extra_data"); + + b.Property("FurniCategory") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("category"); + + b.Property("Length") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("length"); + + b.Property("Logic") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(30) + .HasColumnType("varchar(30)") + .HasDefaultValue("none") + .HasColumnName("logic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("ProductType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("type"); + + b.Property("SpriteId") + .HasColumnType("int") + .HasColumnName("sprite_id"); + + b.Property("StackHeight") + .ValueGeneratedOnAdd() + .HasColumnType("double(10,3)") + .HasDefaultValue(0.0) + .HasColumnName("stack_height"); + + b.Property("TotalStates") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("total_states"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("UsagePolicy") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("usage_policy"); + + b.Property("Width") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("width"); + + b.HasKey("Id"); + + b.HasIndex("SpriteId", "ProductType", "FurniCategory") + .IsUnique(); + + b.ToTable("furniture_definitions"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("ExtraData") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("extra_data"); + + b.Property("FurnitureDefinitionEntityId") + .HasColumnType("int") + .HasColumnName("definition_id"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("Rotation") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("direction"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("WallOffset") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("wall_offset"); + + b.Property("X") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("x"); + + b.Property("Y") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("y"); + + b.Property("Z") + .ValueGeneratedOnAdd() + .HasColumnType("double(10,3)") + .HasDefaultValue(0.0) + .HasColumnName("z"); + + b.HasKey("Id"); + + b.HasIndex("FurnitureDefinitionEntityId"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId"); + + b.ToTable("furniture"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureTeleportLinkEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("FurnitureEntityOneId") + .HasColumnType("int") + .HasColumnName("furniture_one_id"); + + b.Property("FurnitureEntityTwoId") + .HasColumnType("int") + .HasColumnName("furniture_two_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("FurnitureEntityOneId") + .IsUnique(); + + b.HasIndex("FurnitureEntityTwoId") + .IsUnique(); + + b.ToTable("furniture_teleport_links"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerCategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId", "Name") + .IsUnique(); + + b.ToTable("messenger_categories"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerFriendEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("FriendPlayerEntityId") + .HasColumnType("int") + .HasColumnName("requested_id"); + + b.Property("MessengerCategoryEntityId") + .HasColumnType("int") + .HasColumnName("category_id"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RelationType") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("relation"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("FriendPlayerEntityId"); + + b.HasIndex("MessengerCategoryEntityId"); + + b.HasIndex("PlayerEntityId", "FriendPlayerEntityId") + .IsUnique(); + + b.ToTable("messenger_friends"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerRequestEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RequestedPlayerEntityId") + .HasColumnType("int") + .HasColumnName("requested_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("RequestedPlayerEntityId"); + + b.HasIndex("PlayerEntityId", "RequestedPlayerEntityId") + .IsUnique(); + + b.ToTable("messenger_requests"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Navigator.NavigatorEventCategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .HasColumnType("tinyint(1)") + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.ToTable("navigator_eventcats"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Navigator.NavigatorFlatCategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Automatic") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("automatic"); + + b.Property("AutomaticCategory") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("automatic_category"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("GlobalCategory") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("global_category"); + + b.Property("MinRank") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("min_rank"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("OrderNum") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("order_num"); + + b.Property("StaffOnly") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("staff_only"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.ToTable("navigator_flatcats"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Navigator.NavigatorTopLevelContextEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("OrderNum") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("order_num"); + + b.Property("SearchCode") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("search_code"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.HasIndex("SearchCode") + .IsUnique(); + + b.ToTable("navigator_top_level_contexts"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerBadgeEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("BadgeCode") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("badge_code"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("SlotId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("slot_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId", "BadgeCode") + .IsUnique(); + + b.ToTable("player_badges"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerChatStyleEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClientStyleId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("client_style_id"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("ClientStyleId") + .IsUnique(); + + b.ToTable("player_chat_styles"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerChatStyleOwnedEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatStyleId") + .HasColumnType("int") + .HasColumnName("chat_style_id"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("ChatStyleId"); + + b.HasIndex("PlayerEntityId", "ChatStyleId") + .IsUnique(); + + b.ToTable("player_chat_styles_owned"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerCurrencyEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Amount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("amount"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("type"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId", "Type") + .IsUnique(); + + b.ToTable("player_currencies"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Figure") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasDefaultValue("hr-115-42.hd-195-19.ch-3030-82.lg-275-1408.fa-1201.ca-1804-64") + .HasColumnName("figure"); + + b.Property("Gender") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("gender"); + + b.Property("Motto") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("motto"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("PlayerPerks") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("perk_flags"); + + b.Property("PlayerStatus") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("status"); + + b.Property("RoomChatStyleId") + .HasColumnType("int") + .HasColumnName("room_chat_style_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("players"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerFavoriteRoomsEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("RoomEntityId"); + + b.HasIndex("PlayerEntityId", "RoomEntityId") + .IsUnique(); + + b.ToTable("player_favorite_rooms"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomBanEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DateExpires") + .HasColumnType("datetime(6)") + .HasColumnName("date_expires"); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId", "PlayerEntityId") + .IsUnique(); + + b.ToTable("room_bans"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomChatlogEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Message") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("message"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("TargetPlayerEntityId") + .HasColumnType("int") + .HasColumnName("target_player_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId"); + + b.HasIndex("TargetPlayerEntityId"); + + b.ToTable("room_chatlogs"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllowBlocking") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("allow_blocking"); + + b.Property("AllowPets") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("allow_pets"); + + b.Property("AllowPetsEat") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("allow_pets_eat"); + + b.Property("BanType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("ban_type"); + + b.Property("ChatBubbleType") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("chat_bubble_type"); + + b.Property("ChatDistance") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(50) + .HasColumnName("chat_distance"); + + b.Property("ChatFloodType") + .HasColumnType("int") + .HasDefaultValue(2) + .HasColumnName("chat_flood_type"); + + b.Property("ChatModeType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("chat_mode_type"); + + b.Property("ChatSpeedType") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("chat_speed_type"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Description") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("description"); + + b.Property("DoorMode") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("door_mode"); + + b.Property("HideWalls") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("hide_walls"); + + b.Property("KickType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("kick_type"); + + b.Property("LastActive") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("last_active"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("LastActive")); + + b.Property("MuteType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("mute_type"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("NavigatorCategoryEntityId") + .HasColumnType("int") + .HasColumnName("category_id"); + + b.Property("PaintFloor") + .ValueGeneratedOnAdd() + .HasColumnType("double") + .HasDefaultValue(0.0) + .HasColumnName("paint_floor"); + + b.Property("PaintLandscape") + .ValueGeneratedOnAdd() + .HasColumnType("double") + .HasDefaultValue(0.0) + .HasColumnName("paint_landscape"); + + b.Property("PaintWall") + .ValueGeneratedOnAdd() + .HasColumnType("double") + .HasDefaultValue(0.0) + .HasColumnName("paint_wall"); + + b.Property("Password") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("password"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("PlayersMax") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(25) + .HasColumnName("players_max"); + + b.Property("RoomModelEntityId") + .HasColumnType("int") + .HasColumnName("model_id"); + + b.Property("ThicknessFloor") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("thickness_floor"); + + b.Property("ThicknessWall") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("thickness_wall"); + + b.Property("TradeType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("trade_type"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("UsersNow") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("users_now"); + + b.Property("WallHeight") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(-1) + .HasColumnName("wall_height"); + + b.HasKey("Id"); + + b.HasIndex("NavigatorCategoryEntityId"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomModelEntityId"); + + b.ToTable("rooms"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntryLogEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId"); + + b.ToTable("room_entry_logs"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomModelEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("Custom") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("custom"); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("DoorRotation") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("door_rotation"); + + b.Property("DoorX") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("door_x"); + + b.Property("DoorY") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("door_y"); + + b.Property("Enabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("enabled"); + + b.Property("Model") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("model"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("room_models"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomMuteEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DateExpires") + .HasColumnType("datetime(6)") + .HasColumnName("date_expires"); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId", "PlayerEntityId") + .IsUnique(); + + b.ToTable("room_mutes"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomRightEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId", "PlayerEntityId") + .IsUnique(); + + b.ToTable("room_rights"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Security.SecurityTicketEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("IpAddress") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("ip_address"); + + b.Property("IsLocked") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("is_locked"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("Ticket") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("ticket"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId") + .IsUnique(); + + b.HasIndex("Ticket") + .IsUnique(); + + b.ToTable("security_tickets"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Tracking.PerformanceLogEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AverageFrameRate") + .HasColumnType("int") + .HasColumnName("average_frame_rate"); + + b.Property("Browser") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("browser"); + + b.Property("ElapsedTime") + .HasColumnType("int") + .HasColumnName("elapsed_time"); + + b.Property("FlashVersion") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("flash_version"); + + b.Property("GarbageCollections") + .HasColumnType("int") + .HasColumnName("garbage_collections"); + + b.Property("IPAddress") + .IsRequired() + .HasMaxLength(45) + .HasColumnType("varchar(45)") + .HasColumnName("ip_address"); + + b.Property("IsDebugger") + .HasColumnType("tinyint(1)") + .HasColumnName("is_debugger"); + + b.Property("MemoryUsage") + .HasColumnType("int") + .HasColumnName("memory_usage"); + + b.Property("OS") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("os"); + + b.Property("UserAgent") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("user_agent"); + + b.HasKey("Id"); + + b.HasIndex("ElapsedTime"); + + b.HasIndex("IPAddress"); + + b.ToTable("performance_logs"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogOfferEntity", b => + { + b.HasOne("Turbo.Database.Entities.Catalog.CatalogPageEntity", "Page") + .WithMany("Offers") + .HasForeignKey("CatalogPageEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Page"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogPageEntity", b => + { + b.HasOne("Turbo.Database.Entities.Catalog.CatalogPageEntity", "ParentEntity") + .WithMany("Children") + .HasForeignKey("ParentEntityId"); + + b.Navigation("ParentEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogProductEntity", b => + { + b.HasOne("Turbo.Database.Entities.Catalog.CatalogOfferEntity", "Offer") + .WithMany("Products") + .HasForeignKey("CatalogOfferEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Furniture.FurnitureDefinitionEntity", "FurnitureDefinition") + .WithMany() + .HasForeignKey("FurnitureDefinitionEntityId"); + + b.Navigation("FurnitureDefinition"); + + b.Navigation("Offer"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureEntity", b => + { + b.HasOne("Turbo.Database.Entities.Furniture.FurnitureDefinitionEntity", "FurnitureDefinitionEntity") + .WithMany("Furnitures") + .HasForeignKey("FurnitureDefinitionEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("Furniture") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany() + .HasForeignKey("RoomEntityId"); + + b.Navigation("FurnitureDefinitionEntity"); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureTeleportLinkEntity", b => + { + b.HasOne("Turbo.Database.Entities.Furniture.FurnitureEntity", "FurnitureEntityOne") + .WithMany() + .HasForeignKey("FurnitureEntityOneId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Furniture.FurnitureEntity", "FurnitureEntityTwo") + .WithMany() + .HasForeignKey("FurnitureEntityTwoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FurnitureEntityOne"); + + b.Navigation("FurnitureEntityTwo"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerCategoryEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("MessengerCategories") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerFriendEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "FriendPlayerEntity") + .WithMany() + .HasForeignKey("FriendPlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Messenger.MessengerCategoryEntity", "MessengerCategoryEntity") + .WithMany() + .HasForeignKey("MessengerCategoryEntityId"); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("MessengerFriends") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FriendPlayerEntity"); + + b.Navigation("MessengerCategoryEntity"); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerRequestEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("MessengerRequestsSent") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "RequestedPlayerEntity") + .WithMany("MessengerRequests") + .HasForeignKey("RequestedPlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RequestedPlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerBadgeEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("PlayerBadges") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerChatStyleOwnedEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerChatStyleEntity", "ChatStyle") + .WithMany("OwnedChatStyles") + .HasForeignKey("ChatStyleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("PlayerOwnedChatStyles") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatStyle"); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerCurrencyEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("PlayerCurrencies") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerFavoriteRoomsEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany() + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany() + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomBanEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("RoomBans") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany("RoomBans") + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomChatlogEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("RoomChatlogs") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany("RoomChats") + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "TargetPlayerEntity") + .WithMany() + .HasForeignKey("TargetPlayerEntityId"); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + + b.Navigation("TargetPlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntity", b => + { + b.HasOne("Turbo.Database.Entities.Navigator.NavigatorFlatCategoryEntity", "NavigatorFlatCategoryEntity") + .WithMany() + .HasForeignKey("NavigatorCategoryEntityId"); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("Rooms") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomModelEntity", "RoomModelEntity") + .WithMany() + .HasForeignKey("RoomModelEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("NavigatorFlatCategoryEntity"); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomModelEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntryLogEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany() + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany() + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomMuteEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("RoomMutes") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany("RoomMutes") + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomRightEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("RoomRights") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany("RoomRights") + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Security.SecurityTicketEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("SecurityTickets") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogOfferEntity", b => + { + b.Navigation("Products"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogPageEntity", b => + { + b.Navigation("Children"); + + b.Navigation("Offers"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureDefinitionEntity", b => + { + b.Navigation("Furnitures"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerChatStyleEntity", b => + { + b.Navigation("OwnedChatStyles"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerEntity", b => + { + b.Navigation("Furniture"); + + b.Navigation("MessengerCategories"); + + b.Navigation("MessengerFriends"); + + b.Navigation("MessengerRequests"); + + b.Navigation("MessengerRequestsSent"); + + b.Navigation("PlayerBadges"); + + b.Navigation("PlayerCurrencies"); + + b.Navigation("PlayerOwnedChatStyles"); + + b.Navigation("RoomBans"); + + b.Navigation("RoomChatlogs"); + + b.Navigation("RoomMutes"); + + b.Navigation("RoomRights"); + + b.Navigation("Rooms"); + + b.Navigation("SecurityTickets"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntity", b => + { + b.Navigation("RoomBans"); + + b.Navigation("RoomChats"); + + b.Navigation("RoomMutes"); + + b.Navigation("RoomRights"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Turbo.Database/Migrations/20260205185839_AddedModels.cs b/Turbo.Database/Migrations/20260205185839_AddedModels.cs new file mode 100644 index 00000000..ac831a74 --- /dev/null +++ b/Turbo.Database/Migrations/20260205185839_AddedModels.cs @@ -0,0 +1,761 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Turbo.Database.Migrations +{ + /// + public partial class AddedModels : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_furniture_definitions_sprite_id_type", + table: "furniture_definitions"); + + migrationBuilder.DropColumn( + name: "allow_editing", + table: "rooms"); + + migrationBuilder.DropColumn( + name: "product_name", + table: "furniture_definitions"); + + migrationBuilder.DropColumn( + name: "public_name", + table: "furniture_definitions"); + + migrationBuilder.DropColumn( + name: "stuff_data", + table: "furniture"); + + migrationBuilder.RenameColumn( + name: "users_max", + table: "rooms", + newName: "players_max"); + + migrationBuilder.RenameColumn( + name: "state", + table: "rooms", + newName: "door_mode"); + + migrationBuilder.RenameColumn( + name: "chat_weight_type", + table: "rooms", + newName: "chat_bubble_type"); + + migrationBuilder.RenameColumn( + name: "chat_protection_type", + table: "rooms", + newName: "chat_flood_type"); + + migrationBuilder.RenameColumn( + name: "z", + table: "furniture_definitions", + newName: "stack_height"); + + migrationBuilder.RenameColumn( + name: "y", + table: "furniture_definitions", + newName: "length"); + + migrationBuilder.RenameColumn( + name: "x", + table: "furniture_definitions", + newName: "width"); + + migrationBuilder.AlterColumn( + name: "ticket", + table: "security_tickets", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(255)") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "ip_address", + table: "security_tickets", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "password", + table: "rooms", + type: "varchar(512)", + maxLength: 512, + nullable: true, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "name", + table: "rooms", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "description", + table: "rooms", + type: "varchar(512)", + maxLength: 512, + nullable: true, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "allow_blocking", + table: "rooms", + type: "tinyint(1)", + nullable: false, + defaultValue: false, + oldClrType: typeof(bool), + oldType: "tinyint(1)", + oldDefaultValue: true); + + migrationBuilder.AlterColumn( + name: "name", + table: "room_models", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(255)") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "model", + table: "room_models", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "name", + table: "players", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(255)") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "motto", + table: "players", + type: "varchar(512)", + maxLength: 512, + nullable: true, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "type", + table: "player_currencies", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(255)") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "badge_code", + table: "player_badges", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(255)") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "user_agent", + table: "performance_logs", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "os", + table: "performance_logs", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "flash_version", + table: "performance_logs", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "browser", + table: "performance_logs", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "search_code", + table: "navigator_top_level_contexts", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(255)") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "name", + table: "navigator_flatcats", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "global_category", + table: "navigator_flatcats", + type: "varchar(512)", + maxLength: 512, + nullable: true, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "automatic_category", + table: "navigator_flatcats", + type: "varchar(512)", + maxLength: 512, + nullable: true, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "name", + table: "navigator_eventcats", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "name", + table: "messenger_categories", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(255)") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "extra_data", + table: "furniture_definitions", + type: "varchar(512)", + maxLength: 512, + nullable: true, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "category", + table: "furniture_definitions", + type: "int", + nullable: false, + defaultValue: 1); + + migrationBuilder.AddColumn( + name: "name", + table: "furniture_definitions", + type: "varchar(512)", + maxLength: 512, + nullable: false, + defaultValue: "") + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "extra_data", + table: "furniture", + type: "varchar(512)", + maxLength: 512, + nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "extra_param", + table: "catalog_products", + type: "varchar(512)", + maxLength: 512, + nullable: true, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "sort_order", + table: "catalog_pages", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.AlterColumn( + name: "localization_id", + table: "catalog_offers", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateIndex( + name: "IX_furniture_definitions_sprite_id_type_category", + table: "furniture_definitions", + columns: new[] { "sprite_id", "type", "category" }, + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_furniture_definitions_sprite_id_type_category", + table: "furniture_definitions"); + + migrationBuilder.DropColumn( + name: "category", + table: "furniture_definitions"); + + migrationBuilder.DropColumn( + name: "name", + table: "furniture_definitions"); + + migrationBuilder.DropColumn( + name: "extra_data", + table: "furniture"); + + migrationBuilder.DropColumn( + name: "sort_order", + table: "catalog_pages"); + + migrationBuilder.RenameColumn( + name: "players_max", + table: "rooms", + newName: "users_max"); + + migrationBuilder.RenameColumn( + name: "door_mode", + table: "rooms", + newName: "state"); + + migrationBuilder.RenameColumn( + name: "chat_flood_type", + table: "rooms", + newName: "chat_protection_type"); + + migrationBuilder.RenameColumn( + name: "chat_bubble_type", + table: "rooms", + newName: "chat_weight_type"); + + migrationBuilder.RenameColumn( + name: "width", + table: "furniture_definitions", + newName: "x"); + + migrationBuilder.RenameColumn( + name: "stack_height", + table: "furniture_definitions", + newName: "z"); + + migrationBuilder.RenameColumn( + name: "length", + table: "furniture_definitions", + newName: "y"); + + migrationBuilder.AlterColumn( + name: "ticket", + table: "security_tickets", + type: "varchar(255)", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "ip_address", + table: "security_tickets", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "password", + table: "rooms", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512, + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "name", + table: "rooms", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "description", + table: "rooms", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512, + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "allow_blocking", + table: "rooms", + type: "tinyint(1)", + nullable: false, + defaultValue: true, + oldClrType: typeof(bool), + oldType: "tinyint(1)", + oldDefaultValue: false); + + migrationBuilder.AddColumn( + name: "allow_editing", + table: "rooms", + type: "tinyint(1)", + nullable: true, + defaultValue: true); + + migrationBuilder.AlterColumn( + name: "name", + table: "room_models", + type: "varchar(255)", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "model", + table: "room_models", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "name", + table: "players", + type: "varchar(255)", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "motto", + table: "players", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512, + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "type", + table: "player_currencies", + type: "varchar(255)", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "badge_code", + table: "player_badges", + type: "varchar(255)", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "user_agent", + table: "performance_logs", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "os", + table: "performance_logs", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "flash_version", + table: "performance_logs", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "browser", + table: "performance_logs", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "search_code", + table: "navigator_top_level_contexts", + type: "varchar(255)", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "name", + table: "navigator_flatcats", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "global_category", + table: "navigator_flatcats", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512, + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "automatic_category", + table: "navigator_flatcats", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512, + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "name", + table: "navigator_eventcats", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "name", + table: "messenger_categories", + type: "varchar(255)", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "extra_data", + table: "furniture_definitions", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512, + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "product_name", + table: "furniture_definitions", + type: "longtext", + nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "public_name", + table: "furniture_definitions", + type: "longtext", + nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "stuff_data", + table: "furniture", + type: "longtext", + nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "extra_param", + table: "catalog_products", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512, + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "localization_id", + table: "catalog_offers", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateIndex( + name: "IX_furniture_definitions_sprite_id_type", + table: "furniture_definitions", + columns: new[] { "sprite_id", "type" }, + unique: true); + } + } +} diff --git a/Turbo.Database/Migrations/20260205191711_UpdatedFurnitureDefinitionLogicMaxLength.Designer.cs b/Turbo.Database/Migrations/20260205191711_UpdatedFurnitureDefinitionLogicMaxLength.Designer.cs new file mode 100644 index 00000000..8ae9033a --- /dev/null +++ b/Turbo.Database/Migrations/20260205191711_UpdatedFurnitureDefinitionLogicMaxLength.Designer.cs @@ -0,0 +1,2287 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Turbo.Database.Context; + +#nullable disable + +namespace Turbo.Database.Migrations +{ + [DbContext(typeof(TurboDbContext))] + [Migration("20260205191711_UpdatedFurnitureDefinitionLogicMaxLength")] + partial class UpdatedFurnitureDefinitionLogicMaxLength + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogOfferEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CanBundle") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_bundle"); + + b.Property("CanGift") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_gift"); + + b.Property("CatalogPageEntityId") + .HasColumnType("int") + .HasColumnName("page_id"); + + b.Property("ClubLevel") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("club_level"); + + b.Property("CostCredits") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("cost_credits"); + + b.Property("CostCurrency") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("cost_currency"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("CurrencyType") + .HasColumnType("int") + .HasColumnName("currency_type"); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("LocalizationId") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("localization_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.HasIndex("CatalogPageEntityId"); + + b.ToTable("catalog_offers"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogPageEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Icon") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("icon"); + + b.PrimitiveCollection("ImageData") + .HasColumnType("longtext") + .HasColumnName("image_data"); + + b.Property("Layout") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasDefaultValue("default_3x3") + .HasColumnName("layout"); + + b.Property("Localization") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnName("localization"); + + b.Property("Name") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnName("name"); + + b.Property("ParentEntityId") + .HasColumnType("int") + .HasColumnName("parent_id"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.PrimitiveCollection("TextData") + .HasColumnType("longtext") + .HasColumnName("text_data"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.HasIndex("ParentEntityId"); + + b.ToTable("catalog_pages"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogProductEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CatalogOfferEntityId") + .HasColumnType("int") + .HasColumnName("offer_id"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("ExtraParam") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("extra_param"); + + b.Property("FurnitureDefinitionEntityId") + .HasColumnType("int") + .HasColumnName("definition_id"); + + b.Property("ProductType") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("product_type"); + + b.Property("Quantity") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("quantity"); + + b.Property("UniqueRemaining") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("unique_remaining"); + + b.Property("UniqueSize") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("unique_size"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("CatalogOfferEntityId"); + + b.HasIndex("FurnitureDefinitionEntityId"); + + b.ToTable("catalog_products"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureDefinitionEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CanGroup") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_group"); + + b.Property("CanLay") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("can_lay"); + + b.Property("CanRecycle") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("can_recycle"); + + b.Property("CanSell") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_sell"); + + b.Property("CanSit") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("can_sit"); + + b.Property("CanStack") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_stack"); + + b.Property("CanTrade") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_trade"); + + b.Property("CanWalk") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("can_walk"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("ExtraData") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("extra_data"); + + b.Property("FurniCategory") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("category"); + + b.Property("Length") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("length"); + + b.Property("Logic") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasDefaultValue("none") + .HasColumnName("logic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("ProductType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("type"); + + b.Property("SpriteId") + .HasColumnType("int") + .HasColumnName("sprite_id"); + + b.Property("StackHeight") + .ValueGeneratedOnAdd() + .HasColumnType("double(10,3)") + .HasDefaultValue(0.0) + .HasColumnName("stack_height"); + + b.Property("TotalStates") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("total_states"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("UsagePolicy") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("usage_policy"); + + b.Property("Width") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("width"); + + b.HasKey("Id"); + + b.HasIndex("SpriteId", "ProductType", "FurniCategory") + .IsUnique(); + + b.ToTable("furniture_definitions"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("ExtraData") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("extra_data"); + + b.Property("FurnitureDefinitionEntityId") + .HasColumnType("int") + .HasColumnName("definition_id"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("Rotation") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("direction"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("WallOffset") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("wall_offset"); + + b.Property("X") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("x"); + + b.Property("Y") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("y"); + + b.Property("Z") + .ValueGeneratedOnAdd() + .HasColumnType("double(10,3)") + .HasDefaultValue(0.0) + .HasColumnName("z"); + + b.HasKey("Id"); + + b.HasIndex("FurnitureDefinitionEntityId"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId"); + + b.ToTable("furniture"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureTeleportLinkEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("FurnitureEntityOneId") + .HasColumnType("int") + .HasColumnName("furniture_one_id"); + + b.Property("FurnitureEntityTwoId") + .HasColumnType("int") + .HasColumnName("furniture_two_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("FurnitureEntityOneId") + .IsUnique(); + + b.HasIndex("FurnitureEntityTwoId") + .IsUnique(); + + b.ToTable("furniture_teleport_links"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerCategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId", "Name") + .IsUnique(); + + b.ToTable("messenger_categories"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerFriendEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("FriendPlayerEntityId") + .HasColumnType("int") + .HasColumnName("requested_id"); + + b.Property("MessengerCategoryEntityId") + .HasColumnType("int") + .HasColumnName("category_id"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RelationType") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("relation"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("FriendPlayerEntityId"); + + b.HasIndex("MessengerCategoryEntityId"); + + b.HasIndex("PlayerEntityId", "FriendPlayerEntityId") + .IsUnique(); + + b.ToTable("messenger_friends"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerRequestEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RequestedPlayerEntityId") + .HasColumnType("int") + .HasColumnName("requested_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("RequestedPlayerEntityId"); + + b.HasIndex("PlayerEntityId", "RequestedPlayerEntityId") + .IsUnique(); + + b.ToTable("messenger_requests"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Navigator.NavigatorEventCategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .HasColumnType("tinyint(1)") + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.ToTable("navigator_eventcats"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Navigator.NavigatorFlatCategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Automatic") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("automatic"); + + b.Property("AutomaticCategory") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("automatic_category"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("GlobalCategory") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("global_category"); + + b.Property("MinRank") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("min_rank"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("OrderNum") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("order_num"); + + b.Property("StaffOnly") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("staff_only"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.ToTable("navigator_flatcats"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Navigator.NavigatorTopLevelContextEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("OrderNum") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("order_num"); + + b.Property("SearchCode") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("search_code"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.HasIndex("SearchCode") + .IsUnique(); + + b.ToTable("navigator_top_level_contexts"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerBadgeEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("BadgeCode") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("badge_code"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("SlotId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("slot_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId", "BadgeCode") + .IsUnique(); + + b.ToTable("player_badges"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerChatStyleEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClientStyleId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("client_style_id"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("ClientStyleId") + .IsUnique(); + + b.ToTable("player_chat_styles"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerChatStyleOwnedEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatStyleId") + .HasColumnType("int") + .HasColumnName("chat_style_id"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("ChatStyleId"); + + b.HasIndex("PlayerEntityId", "ChatStyleId") + .IsUnique(); + + b.ToTable("player_chat_styles_owned"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerCurrencyEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Amount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("amount"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("type"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId", "Type") + .IsUnique(); + + b.ToTable("player_currencies"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Figure") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasDefaultValue("hr-115-42.hd-195-19.ch-3030-82.lg-275-1408.fa-1201.ca-1804-64") + .HasColumnName("figure"); + + b.Property("Gender") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("gender"); + + b.Property("Motto") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("motto"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("PlayerPerks") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("perk_flags"); + + b.Property("PlayerStatus") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("status"); + + b.Property("RoomChatStyleId") + .HasColumnType("int") + .HasColumnName("room_chat_style_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("players"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerFavoriteRoomsEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("RoomEntityId"); + + b.HasIndex("PlayerEntityId", "RoomEntityId") + .IsUnique(); + + b.ToTable("player_favorite_rooms"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomBanEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DateExpires") + .HasColumnType("datetime(6)") + .HasColumnName("date_expires"); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId", "PlayerEntityId") + .IsUnique(); + + b.ToTable("room_bans"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomChatlogEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Message") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("message"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("TargetPlayerEntityId") + .HasColumnType("int") + .HasColumnName("target_player_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId"); + + b.HasIndex("TargetPlayerEntityId"); + + b.ToTable("room_chatlogs"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllowBlocking") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("allow_blocking"); + + b.Property("AllowPets") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("allow_pets"); + + b.Property("AllowPetsEat") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("allow_pets_eat"); + + b.Property("BanType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("ban_type"); + + b.Property("ChatBubbleType") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("chat_bubble_type"); + + b.Property("ChatDistance") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(50) + .HasColumnName("chat_distance"); + + b.Property("ChatFloodType") + .HasColumnType("int") + .HasDefaultValue(2) + .HasColumnName("chat_flood_type"); + + b.Property("ChatModeType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("chat_mode_type"); + + b.Property("ChatSpeedType") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("chat_speed_type"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Description") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("description"); + + b.Property("DoorMode") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("door_mode"); + + b.Property("HideWalls") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("hide_walls"); + + b.Property("KickType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("kick_type"); + + b.Property("LastActive") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("last_active"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("LastActive")); + + b.Property("MuteType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("mute_type"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("NavigatorCategoryEntityId") + .HasColumnType("int") + .HasColumnName("category_id"); + + b.Property("PaintFloor") + .ValueGeneratedOnAdd() + .HasColumnType("double") + .HasDefaultValue(0.0) + .HasColumnName("paint_floor"); + + b.Property("PaintLandscape") + .ValueGeneratedOnAdd() + .HasColumnType("double") + .HasDefaultValue(0.0) + .HasColumnName("paint_landscape"); + + b.Property("PaintWall") + .ValueGeneratedOnAdd() + .HasColumnType("double") + .HasDefaultValue(0.0) + .HasColumnName("paint_wall"); + + b.Property("Password") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("password"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("PlayersMax") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(25) + .HasColumnName("players_max"); + + b.Property("RoomModelEntityId") + .HasColumnType("int") + .HasColumnName("model_id"); + + b.Property("ThicknessFloor") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("thickness_floor"); + + b.Property("ThicknessWall") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("thickness_wall"); + + b.Property("TradeType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("trade_type"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("UsersNow") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("users_now"); + + b.Property("WallHeight") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(-1) + .HasColumnName("wall_height"); + + b.HasKey("Id"); + + b.HasIndex("NavigatorCategoryEntityId"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomModelEntityId"); + + b.ToTable("rooms"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntryLogEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId"); + + b.ToTable("room_entry_logs"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomModelEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("Custom") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("custom"); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("DoorRotation") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("door_rotation"); + + b.Property("DoorX") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("door_x"); + + b.Property("DoorY") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("door_y"); + + b.Property("Enabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("enabled"); + + b.Property("Model") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("model"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("room_models"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomMuteEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DateExpires") + .HasColumnType("datetime(6)") + .HasColumnName("date_expires"); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId", "PlayerEntityId") + .IsUnique(); + + b.ToTable("room_mutes"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomRightEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId", "PlayerEntityId") + .IsUnique(); + + b.ToTable("room_rights"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Security.SecurityTicketEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("IpAddress") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("ip_address"); + + b.Property("IsLocked") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("is_locked"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("Ticket") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("ticket"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId") + .IsUnique(); + + b.HasIndex("Ticket") + .IsUnique(); + + b.ToTable("security_tickets"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Tracking.PerformanceLogEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AverageFrameRate") + .HasColumnType("int") + .HasColumnName("average_frame_rate"); + + b.Property("Browser") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("browser"); + + b.Property("ElapsedTime") + .HasColumnType("int") + .HasColumnName("elapsed_time"); + + b.Property("FlashVersion") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("flash_version"); + + b.Property("GarbageCollections") + .HasColumnType("int") + .HasColumnName("garbage_collections"); + + b.Property("IPAddress") + .IsRequired() + .HasMaxLength(45) + .HasColumnType("varchar(45)") + .HasColumnName("ip_address"); + + b.Property("IsDebugger") + .HasColumnType("tinyint(1)") + .HasColumnName("is_debugger"); + + b.Property("MemoryUsage") + .HasColumnType("int") + .HasColumnName("memory_usage"); + + b.Property("OS") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("os"); + + b.Property("UserAgent") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("user_agent"); + + b.HasKey("Id"); + + b.HasIndex("ElapsedTime"); + + b.HasIndex("IPAddress"); + + b.ToTable("performance_logs"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogOfferEntity", b => + { + b.HasOne("Turbo.Database.Entities.Catalog.CatalogPageEntity", "Page") + .WithMany("Offers") + .HasForeignKey("CatalogPageEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Page"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogPageEntity", b => + { + b.HasOne("Turbo.Database.Entities.Catalog.CatalogPageEntity", "ParentEntity") + .WithMany("Children") + .HasForeignKey("ParentEntityId"); + + b.Navigation("ParentEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogProductEntity", b => + { + b.HasOne("Turbo.Database.Entities.Catalog.CatalogOfferEntity", "Offer") + .WithMany("Products") + .HasForeignKey("CatalogOfferEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Furniture.FurnitureDefinitionEntity", "FurnitureDefinition") + .WithMany() + .HasForeignKey("FurnitureDefinitionEntityId"); + + b.Navigation("FurnitureDefinition"); + + b.Navigation("Offer"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureEntity", b => + { + b.HasOne("Turbo.Database.Entities.Furniture.FurnitureDefinitionEntity", "FurnitureDefinitionEntity") + .WithMany("Furnitures") + .HasForeignKey("FurnitureDefinitionEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("Furniture") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany() + .HasForeignKey("RoomEntityId"); + + b.Navigation("FurnitureDefinitionEntity"); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureTeleportLinkEntity", b => + { + b.HasOne("Turbo.Database.Entities.Furniture.FurnitureEntity", "FurnitureEntityOne") + .WithMany() + .HasForeignKey("FurnitureEntityOneId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Furniture.FurnitureEntity", "FurnitureEntityTwo") + .WithMany() + .HasForeignKey("FurnitureEntityTwoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FurnitureEntityOne"); + + b.Navigation("FurnitureEntityTwo"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerCategoryEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("MessengerCategories") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerFriendEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "FriendPlayerEntity") + .WithMany() + .HasForeignKey("FriendPlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Messenger.MessengerCategoryEntity", "MessengerCategoryEntity") + .WithMany() + .HasForeignKey("MessengerCategoryEntityId"); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("MessengerFriends") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FriendPlayerEntity"); + + b.Navigation("MessengerCategoryEntity"); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerRequestEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("MessengerRequestsSent") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "RequestedPlayerEntity") + .WithMany("MessengerRequests") + .HasForeignKey("RequestedPlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RequestedPlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerBadgeEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("PlayerBadges") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerChatStyleOwnedEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerChatStyleEntity", "ChatStyle") + .WithMany("OwnedChatStyles") + .HasForeignKey("ChatStyleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("PlayerOwnedChatStyles") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatStyle"); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerCurrencyEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("PlayerCurrencies") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerFavoriteRoomsEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany() + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany() + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomBanEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("RoomBans") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany("RoomBans") + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomChatlogEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("RoomChatlogs") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany("RoomChats") + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "TargetPlayerEntity") + .WithMany() + .HasForeignKey("TargetPlayerEntityId"); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + + b.Navigation("TargetPlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntity", b => + { + b.HasOne("Turbo.Database.Entities.Navigator.NavigatorFlatCategoryEntity", "NavigatorFlatCategoryEntity") + .WithMany() + .HasForeignKey("NavigatorCategoryEntityId"); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("Rooms") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomModelEntity", "RoomModelEntity") + .WithMany() + .HasForeignKey("RoomModelEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("NavigatorFlatCategoryEntity"); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomModelEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntryLogEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany() + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany() + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomMuteEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("RoomMutes") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany("RoomMutes") + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomRightEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("RoomRights") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany("RoomRights") + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Security.SecurityTicketEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("SecurityTickets") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogOfferEntity", b => + { + b.Navigation("Products"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogPageEntity", b => + { + b.Navigation("Children"); + + b.Navigation("Offers"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureDefinitionEntity", b => + { + b.Navigation("Furnitures"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerChatStyleEntity", b => + { + b.Navigation("OwnedChatStyles"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerEntity", b => + { + b.Navigation("Furniture"); + + b.Navigation("MessengerCategories"); + + b.Navigation("MessengerFriends"); + + b.Navigation("MessengerRequests"); + + b.Navigation("MessengerRequestsSent"); + + b.Navigation("PlayerBadges"); + + b.Navigation("PlayerCurrencies"); + + b.Navigation("PlayerOwnedChatStyles"); + + b.Navigation("RoomBans"); + + b.Navigation("RoomChatlogs"); + + b.Navigation("RoomMutes"); + + b.Navigation("RoomRights"); + + b.Navigation("Rooms"); + + b.Navigation("SecurityTickets"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntity", b => + { + b.Navigation("RoomBans"); + + b.Navigation("RoomChats"); + + b.Navigation("RoomMutes"); + + b.Navigation("RoomRights"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Turbo.Database/Migrations/20260205191711_UpdatedFurnitureDefinitionLogicMaxLength.cs b/Turbo.Database/Migrations/20260205191711_UpdatedFurnitureDefinitionLogicMaxLength.cs new file mode 100644 index 00000000..06cf91df --- /dev/null +++ b/Turbo.Database/Migrations/20260205191711_UpdatedFurnitureDefinitionLogicMaxLength.cs @@ -0,0 +1,46 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Turbo.Database.Migrations +{ + /// + public partial class UpdatedFurnitureDefinitionLogicMaxLength : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "logic", + table: "furniture_definitions", + type: "varchar(50)", + maxLength: 50, + nullable: false, + defaultValue: "none", + oldClrType: typeof(string), + oldType: "varchar(30)", + oldMaxLength: 30, + oldDefaultValue: "none") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "logic", + table: "furniture_definitions", + type: "varchar(30)", + maxLength: 30, + nullable: false, + defaultValue: "none", + oldClrType: typeof(string), + oldType: "varchar(50)", + oldMaxLength: 50, + oldDefaultValue: "none") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + } + } +} diff --git a/Turbo.Database/Migrations/20260205193638_SetRoomModelLongtext.Designer.cs b/Turbo.Database/Migrations/20260205193638_SetRoomModelLongtext.Designer.cs new file mode 100644 index 00000000..aa561199 --- /dev/null +++ b/Turbo.Database/Migrations/20260205193638_SetRoomModelLongtext.Designer.cs @@ -0,0 +1,2287 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Turbo.Database.Context; + +#nullable disable + +namespace Turbo.Database.Migrations +{ + [DbContext(typeof(TurboDbContext))] + [Migration("20260205193638_SetRoomModelLongtext")] + partial class SetRoomModelLongtext + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogOfferEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CanBundle") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_bundle"); + + b.Property("CanGift") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_gift"); + + b.Property("CatalogPageEntityId") + .HasColumnType("int") + .HasColumnName("page_id"); + + b.Property("ClubLevel") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("club_level"); + + b.Property("CostCredits") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("cost_credits"); + + b.Property("CostCurrency") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("cost_currency"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("CurrencyType") + .HasColumnType("int") + .HasColumnName("currency_type"); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("LocalizationId") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("localization_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.HasIndex("CatalogPageEntityId"); + + b.ToTable("catalog_offers"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogPageEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Icon") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("icon"); + + b.PrimitiveCollection("ImageData") + .HasColumnType("longtext") + .HasColumnName("image_data"); + + b.Property("Layout") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasDefaultValue("default_3x3") + .HasColumnName("layout"); + + b.Property("Localization") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnName("localization"); + + b.Property("Name") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasColumnName("name"); + + b.Property("ParentEntityId") + .HasColumnType("int") + .HasColumnName("parent_id"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.PrimitiveCollection("TextData") + .HasColumnType("longtext") + .HasColumnName("text_data"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.HasIndex("ParentEntityId"); + + b.ToTable("catalog_pages"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogProductEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CatalogOfferEntityId") + .HasColumnType("int") + .HasColumnName("offer_id"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("ExtraParam") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("extra_param"); + + b.Property("FurnitureDefinitionEntityId") + .HasColumnType("int") + .HasColumnName("definition_id"); + + b.Property("ProductType") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("product_type"); + + b.Property("Quantity") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("quantity"); + + b.Property("UniqueRemaining") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("unique_remaining"); + + b.Property("UniqueSize") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("unique_size"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("CatalogOfferEntityId"); + + b.HasIndex("FurnitureDefinitionEntityId"); + + b.ToTable("catalog_products"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureDefinitionEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CanGroup") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_group"); + + b.Property("CanLay") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("can_lay"); + + b.Property("CanRecycle") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("can_recycle"); + + b.Property("CanSell") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_sell"); + + b.Property("CanSit") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("can_sit"); + + b.Property("CanStack") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_stack"); + + b.Property("CanTrade") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("can_trade"); + + b.Property("CanWalk") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("can_walk"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("ExtraData") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("extra_data"); + + b.Property("FurniCategory") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("category"); + + b.Property("Length") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("length"); + + b.Property("Logic") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasDefaultValue("none") + .HasColumnName("logic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("ProductType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("type"); + + b.Property("SpriteId") + .HasColumnType("int") + .HasColumnName("sprite_id"); + + b.Property("StackHeight") + .ValueGeneratedOnAdd() + .HasColumnType("double(10,3)") + .HasDefaultValue(0.0) + .HasColumnName("stack_height"); + + b.Property("TotalStates") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("total_states"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("UsagePolicy") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("usage_policy"); + + b.Property("Width") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("width"); + + b.HasKey("Id"); + + b.HasIndex("SpriteId", "ProductType", "FurniCategory") + .IsUnique(); + + b.ToTable("furniture_definitions"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("ExtraData") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("extra_data"); + + b.Property("FurnitureDefinitionEntityId") + .HasColumnType("int") + .HasColumnName("definition_id"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("Rotation") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("direction"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("WallOffset") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("wall_offset"); + + b.Property("X") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("x"); + + b.Property("Y") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("y"); + + b.Property("Z") + .ValueGeneratedOnAdd() + .HasColumnType("double(10,3)") + .HasDefaultValue(0.0) + .HasColumnName("z"); + + b.HasKey("Id"); + + b.HasIndex("FurnitureDefinitionEntityId"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId"); + + b.ToTable("furniture"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureTeleportLinkEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("FurnitureEntityOneId") + .HasColumnType("int") + .HasColumnName("furniture_one_id"); + + b.Property("FurnitureEntityTwoId") + .HasColumnType("int") + .HasColumnName("furniture_two_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("FurnitureEntityOneId") + .IsUnique(); + + b.HasIndex("FurnitureEntityTwoId") + .IsUnique(); + + b.ToTable("furniture_teleport_links"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerCategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId", "Name") + .IsUnique(); + + b.ToTable("messenger_categories"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerFriendEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("FriendPlayerEntityId") + .HasColumnType("int") + .HasColumnName("requested_id"); + + b.Property("MessengerCategoryEntityId") + .HasColumnType("int") + .HasColumnName("category_id"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RelationType") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("relation"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("FriendPlayerEntityId"); + + b.HasIndex("MessengerCategoryEntityId"); + + b.HasIndex("PlayerEntityId", "FriendPlayerEntityId") + .IsUnique(); + + b.ToTable("messenger_friends"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerRequestEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RequestedPlayerEntityId") + .HasColumnType("int") + .HasColumnName("requested_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("RequestedPlayerEntityId"); + + b.HasIndex("PlayerEntityId", "RequestedPlayerEntityId") + .IsUnique(); + + b.ToTable("messenger_requests"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Navigator.NavigatorEventCategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .HasColumnType("tinyint(1)") + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.ToTable("navigator_eventcats"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Navigator.NavigatorFlatCategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Automatic") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("automatic"); + + b.Property("AutomaticCategory") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("automatic_category"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("GlobalCategory") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("global_category"); + + b.Property("MinRank") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("min_rank"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("OrderNum") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("order_num"); + + b.Property("StaffOnly") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("staff_only"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.ToTable("navigator_flatcats"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Navigator.NavigatorTopLevelContextEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("OrderNum") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("order_num"); + + b.Property("SearchCode") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("search_code"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("Visible") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("visible"); + + b.HasKey("Id"); + + b.HasIndex("SearchCode") + .IsUnique(); + + b.ToTable("navigator_top_level_contexts"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerBadgeEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("BadgeCode") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("badge_code"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("SlotId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("slot_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId", "BadgeCode") + .IsUnique(); + + b.ToTable("player_badges"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerChatStyleEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClientStyleId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("client_style_id"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("ClientStyleId") + .IsUnique(); + + b.ToTable("player_chat_styles"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerChatStyleOwnedEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatStyleId") + .HasColumnType("int") + .HasColumnName("chat_style_id"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("ChatStyleId"); + + b.HasIndex("PlayerEntityId", "ChatStyleId") + .IsUnique(); + + b.ToTable("player_chat_styles_owned"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerCurrencyEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Amount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("amount"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("type"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId", "Type") + .IsUnique(); + + b.ToTable("player_currencies"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Figure") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasDefaultValue("hr-115-42.hd-195-19.ch-3030-82.lg-275-1408.fa-1201.ca-1804-64") + .HasColumnName("figure"); + + b.Property("Gender") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("gender"); + + b.Property("Motto") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("motto"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("PlayerPerks") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("perk_flags"); + + b.Property("PlayerStatus") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("status"); + + b.Property("RoomChatStyleId") + .HasColumnType("int") + .HasColumnName("room_chat_style_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("players"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerFavoriteRoomsEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("RoomEntityId"); + + b.HasIndex("PlayerEntityId", "RoomEntityId") + .IsUnique(); + + b.ToTable("player_favorite_rooms"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomBanEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DateExpires") + .HasColumnType("datetime(6)") + .HasColumnName("date_expires"); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId", "PlayerEntityId") + .IsUnique(); + + b.ToTable("room_bans"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomChatlogEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Message") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("message"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("TargetPlayerEntityId") + .HasColumnType("int") + .HasColumnName("target_player_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId"); + + b.HasIndex("TargetPlayerEntityId"); + + b.ToTable("room_chatlogs"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllowBlocking") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("allow_blocking"); + + b.Property("AllowPets") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("allow_pets"); + + b.Property("AllowPetsEat") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("allow_pets_eat"); + + b.Property("BanType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("ban_type"); + + b.Property("ChatBubbleType") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("chat_bubble_type"); + + b.Property("ChatDistance") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(50) + .HasColumnName("chat_distance"); + + b.Property("ChatFloodType") + .HasColumnType("int") + .HasDefaultValue(2) + .HasColumnName("chat_flood_type"); + + b.Property("ChatModeType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("chat_mode_type"); + + b.Property("ChatSpeedType") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("chat_speed_type"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("Description") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("description"); + + b.Property("DoorMode") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("door_mode"); + + b.Property("HideWalls") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("hide_walls"); + + b.Property("KickType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("kick_type"); + + b.Property("LastActive") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("last_active"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("LastActive")); + + b.Property("MuteType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("mute_type"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("NavigatorCategoryEntityId") + .HasColumnType("int") + .HasColumnName("category_id"); + + b.Property("PaintFloor") + .ValueGeneratedOnAdd() + .HasColumnType("double") + .HasDefaultValue(0.0) + .HasColumnName("paint_floor"); + + b.Property("PaintLandscape") + .ValueGeneratedOnAdd() + .HasColumnType("double") + .HasDefaultValue(0.0) + .HasColumnName("paint_landscape"); + + b.Property("PaintWall") + .ValueGeneratedOnAdd() + .HasColumnType("double") + .HasDefaultValue(0.0) + .HasColumnName("paint_wall"); + + b.Property("Password") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("password"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("PlayersMax") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(25) + .HasColumnName("players_max"); + + b.Property("RoomModelEntityId") + .HasColumnType("int") + .HasColumnName("model_id"); + + b.Property("ThicknessFloor") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("thickness_floor"); + + b.Property("ThicknessWall") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("thickness_wall"); + + b.Property("TradeType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("trade_type"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.Property("UsersNow") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("users_now"); + + b.Property("WallHeight") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(-1) + .HasColumnName("wall_height"); + + b.HasKey("Id"); + + b.HasIndex("NavigatorCategoryEntityId"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomModelEntityId"); + + b.ToTable("rooms"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntryLogEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId"); + + b.ToTable("room_entry_logs"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomModelEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("Custom") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("custom"); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("DoorRotation") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("door_rotation"); + + b.Property("DoorX") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("door_x"); + + b.Property("DoorY") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("door_y"); + + b.Property("Enabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true) + .HasColumnName("enabled"); + + b.Property("Model") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("longtext") + .HasColumnName("model"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("room_models"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomMuteEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DateExpires") + .HasColumnType("datetime(6)") + .HasColumnName("date_expires"); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId", "PlayerEntityId") + .IsUnique(); + + b.ToTable("room_mutes"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomRightEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("RoomEntityId") + .HasColumnType("int") + .HasColumnName("room_id"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId"); + + b.HasIndex("RoomEntityId", "PlayerEntityId") + .IsUnique(); + + b.ToTable("room_rights"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Security.SecurityTicketEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("DeletedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("deleted_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + + b.Property("IpAddress") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("ip_address"); + + b.Property("IsLocked") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("is_locked"); + + b.Property("PlayerEntityId") + .HasColumnType("int") + .HasColumnName("player_id"); + + b.Property("Ticket") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("ticket"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("PlayerEntityId") + .IsUnique(); + + b.HasIndex("Ticket") + .IsUnique(); + + b.ToTable("security_tickets"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Tracking.PerformanceLogEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("id"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AverageFrameRate") + .HasColumnType("int") + .HasColumnName("average_frame_rate"); + + b.Property("Browser") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("browser"); + + b.Property("ElapsedTime") + .HasColumnType("int") + .HasColumnName("elapsed_time"); + + b.Property("FlashVersion") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("flash_version"); + + b.Property("GarbageCollections") + .HasColumnType("int") + .HasColumnName("garbage_collections"); + + b.Property("IPAddress") + .IsRequired() + .HasMaxLength(45) + .HasColumnType("varchar(45)") + .HasColumnName("ip_address"); + + b.Property("IsDebugger") + .HasColumnType("tinyint(1)") + .HasColumnName("is_debugger"); + + b.Property("MemoryUsage") + .HasColumnType("int") + .HasColumnName("memory_usage"); + + b.Property("OS") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("os"); + + b.Property("UserAgent") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("user_agent"); + + b.HasKey("Id"); + + b.HasIndex("ElapsedTime"); + + b.HasIndex("IPAddress"); + + b.ToTable("performance_logs"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogOfferEntity", b => + { + b.HasOne("Turbo.Database.Entities.Catalog.CatalogPageEntity", "Page") + .WithMany("Offers") + .HasForeignKey("CatalogPageEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Page"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogPageEntity", b => + { + b.HasOne("Turbo.Database.Entities.Catalog.CatalogPageEntity", "ParentEntity") + .WithMany("Children") + .HasForeignKey("ParentEntityId"); + + b.Navigation("ParentEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogProductEntity", b => + { + b.HasOne("Turbo.Database.Entities.Catalog.CatalogOfferEntity", "Offer") + .WithMany("Products") + .HasForeignKey("CatalogOfferEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Furniture.FurnitureDefinitionEntity", "FurnitureDefinition") + .WithMany() + .HasForeignKey("FurnitureDefinitionEntityId"); + + b.Navigation("FurnitureDefinition"); + + b.Navigation("Offer"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureEntity", b => + { + b.HasOne("Turbo.Database.Entities.Furniture.FurnitureDefinitionEntity", "FurnitureDefinitionEntity") + .WithMany("Furnitures") + .HasForeignKey("FurnitureDefinitionEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("Furniture") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany() + .HasForeignKey("RoomEntityId"); + + b.Navigation("FurnitureDefinitionEntity"); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureTeleportLinkEntity", b => + { + b.HasOne("Turbo.Database.Entities.Furniture.FurnitureEntity", "FurnitureEntityOne") + .WithMany() + .HasForeignKey("FurnitureEntityOneId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Furniture.FurnitureEntity", "FurnitureEntityTwo") + .WithMany() + .HasForeignKey("FurnitureEntityTwoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FurnitureEntityOne"); + + b.Navigation("FurnitureEntityTwo"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerCategoryEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("MessengerCategories") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerFriendEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "FriendPlayerEntity") + .WithMany() + .HasForeignKey("FriendPlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Messenger.MessengerCategoryEntity", "MessengerCategoryEntity") + .WithMany() + .HasForeignKey("MessengerCategoryEntityId"); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("MessengerFriends") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FriendPlayerEntity"); + + b.Navigation("MessengerCategoryEntity"); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Messenger.MessengerRequestEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("MessengerRequestsSent") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "RequestedPlayerEntity") + .WithMany("MessengerRequests") + .HasForeignKey("RequestedPlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RequestedPlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerBadgeEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("PlayerBadges") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerChatStyleOwnedEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerChatStyleEntity", "ChatStyle") + .WithMany("OwnedChatStyles") + .HasForeignKey("ChatStyleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("PlayerOwnedChatStyles") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatStyle"); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerCurrencyEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("PlayerCurrencies") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerFavoriteRoomsEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany() + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany() + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomBanEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("RoomBans") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany("RoomBans") + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomChatlogEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("RoomChatlogs") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany("RoomChats") + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "TargetPlayerEntity") + .WithMany() + .HasForeignKey("TargetPlayerEntityId"); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + + b.Navigation("TargetPlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntity", b => + { + b.HasOne("Turbo.Database.Entities.Navigator.NavigatorFlatCategoryEntity", "NavigatorFlatCategoryEntity") + .WithMany() + .HasForeignKey("NavigatorCategoryEntityId"); + + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("Rooms") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomModelEntity", "RoomModelEntity") + .WithMany() + .HasForeignKey("RoomModelEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("NavigatorFlatCategoryEntity"); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomModelEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntryLogEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany() + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany() + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomMuteEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("RoomMutes") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany("RoomMutes") + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomRightEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("RoomRights") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Turbo.Database.Entities.Room.RoomEntity", "RoomEntity") + .WithMany("RoomRights") + .HasForeignKey("RoomEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + + b.Navigation("RoomEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Security.SecurityTicketEntity", b => + { + b.HasOne("Turbo.Database.Entities.Players.PlayerEntity", "PlayerEntity") + .WithMany("SecurityTickets") + .HasForeignKey("PlayerEntityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerEntity"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogOfferEntity", b => + { + b.Navigation("Products"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Catalog.CatalogPageEntity", b => + { + b.Navigation("Children"); + + b.Navigation("Offers"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Furniture.FurnitureDefinitionEntity", b => + { + b.Navigation("Furnitures"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerChatStyleEntity", b => + { + b.Navigation("OwnedChatStyles"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Players.PlayerEntity", b => + { + b.Navigation("Furniture"); + + b.Navigation("MessengerCategories"); + + b.Navigation("MessengerFriends"); + + b.Navigation("MessengerRequests"); + + b.Navigation("MessengerRequestsSent"); + + b.Navigation("PlayerBadges"); + + b.Navigation("PlayerCurrencies"); + + b.Navigation("PlayerOwnedChatStyles"); + + b.Navigation("RoomBans"); + + b.Navigation("RoomChatlogs"); + + b.Navigation("RoomMutes"); + + b.Navigation("RoomRights"); + + b.Navigation("Rooms"); + + b.Navigation("SecurityTickets"); + }); + + modelBuilder.Entity("Turbo.Database.Entities.Room.RoomEntity", b => + { + b.Navigation("RoomBans"); + + b.Navigation("RoomChats"); + + b.Navigation("RoomMutes"); + + b.Navigation("RoomRights"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Turbo.Database/Migrations/20260205193638_SetRoomModelLongtext.cs b/Turbo.Database/Migrations/20260205193638_SetRoomModelLongtext.cs new file mode 100644 index 00000000..4babe7ea --- /dev/null +++ b/Turbo.Database/Migrations/20260205193638_SetRoomModelLongtext.cs @@ -0,0 +1,42 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Turbo.Database.Migrations +{ + /// + public partial class SetRoomModelLongtext : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "model", + table: "room_models", + type: "longtext", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(512)", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "model", + table: "room_models", + type: "varchar(512)", + maxLength: 512, + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldMaxLength: 512) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + } + } +} diff --git a/Turbo.Main/Migrations/TurboDbContextModelSnapshot.cs b/Turbo.Database/Migrations/TurboDbContextModelSnapshot.cs similarity index 95% rename from Turbo.Main/Migrations/TurboDbContextModelSnapshot.cs rename to Turbo.Database/Migrations/TurboDbContextModelSnapshot.cs index afc59519..b1c9ce21 100644 --- a/Turbo.Main/Migrations/TurboDbContextModelSnapshot.cs +++ b/Turbo.Database/Migrations/TurboDbContextModelSnapshot.cs @@ -8,7 +8,7 @@ #nullable disable -namespace Turbo.Main.Migrations +namespace Turbo.Database.Migrations { [DbContext(typeof(TurboDbContext))] partial class TurboDbContextModelSnapshot : ModelSnapshot @@ -85,7 +85,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("LocalizationId") .IsRequired() - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("localization_id"); b.Property("UpdatedAt") @@ -164,6 +165,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("int") .HasColumnName("parent_id"); + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + b.PrimitiveCollection("TextData") .HasColumnType("longtext") .HasColumnName("text_data"); @@ -216,7 +223,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); b.Property("ExtraParam") - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("extra_param"); b.Property("FurnitureDefinitionEntityId") @@ -335,42 +343,55 @@ protected override void BuildModel(ModelBuilder modelBuilder) MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); b.Property("ExtraData") - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("extra_data"); + b.Property("FurniCategory") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("category"); + + b.Property("Length") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("length"); + b.Property("Logic") .IsRequired() .ValueGeneratedOnAdd() - .HasMaxLength(30) - .HasColumnType("varchar(30)") + .HasMaxLength(50) + .HasColumnType("varchar(50)") .HasDefaultValue("none") .HasColumnName("logic"); - b.Property("ProductName") + b.Property("Name") .IsRequired() - .HasColumnType("longtext") - .HasColumnName("product_name"); + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("name"); - b.Property("PublicName") - .IsRequired() - .HasColumnType("longtext") - .HasColumnName("public_name"); + b.Property("ProductType") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("type"); b.Property("SpriteId") .HasColumnType("int") .HasColumnName("sprite_id"); - b.Property("TotalStates") + b.Property("StackHeight") .ValueGeneratedOnAdd() - .HasColumnType("int") - .HasDefaultValue(0) - .HasColumnName("total_states"); + .HasColumnType("double(10,3)") + .HasDefaultValue(0.0) + .HasColumnName("stack_height"); - b.Property("Type") + b.Property("TotalStates") .ValueGeneratedOnAdd() .HasColumnType("int") .HasDefaultValue(0) - .HasColumnName("type"); + .HasColumnName("total_states"); b.Property("UpdatedAt") .ValueGeneratedOnAddOrUpdate() @@ -384,27 +405,15 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasDefaultValue(1) .HasColumnName("usage_policy"); - b.Property("X") + b.Property("Width") .ValueGeneratedOnAdd() .HasColumnType("int") .HasDefaultValue(0) - .HasColumnName("x"); - - b.Property("Y") - .ValueGeneratedOnAdd() - .HasColumnType("int") - .HasDefaultValue(1) - .HasColumnName("y"); - - b.Property("Z") - .ValueGeneratedOnAdd() - .HasColumnType("double(10,3)") - .HasDefaultValue(0.0) - .HasColumnName("z"); + .HasColumnName("width"); b.HasKey("Id"); - b.HasIndex("SpriteId", "Type") + b.HasIndex("SpriteId", "ProductType", "FurniCategory") .IsUnique(); b.ToTable("furniture_definitions"); @@ -433,6 +442,11 @@ protected override void BuildModel(ModelBuilder modelBuilder) MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); + b.Property("ExtraData") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("extra_data"); + b.Property("FurnitureDefinitionEntityId") .HasColumnType("int") .HasColumnName("definition_id"); @@ -450,10 +464,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasDefaultValue(0) .HasColumnName("direction"); - b.Property("StuffData") - .HasColumnType("longtext") - .HasColumnName("stuff_data"); - b.Property("UpdatedAt") .ValueGeneratedOnAddOrUpdate() .HasColumnType("datetime(6)") @@ -570,7 +580,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Name") .IsRequired() - .HasColumnType("varchar(255)") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("name"); b.Property("PlayerEntityId") @@ -725,7 +736,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Name") .IsRequired() - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("name"); b.Property("UpdatedAt") @@ -760,7 +772,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnName("automatic"); b.Property("AutomaticCategory") - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("automatic_category"); b.Property("CreatedAt") @@ -778,7 +791,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); b.Property("GlobalCategory") - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("global_category"); b.Property("MinRank") @@ -789,7 +803,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Name") .IsRequired() - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("name"); b.Property("OrderNum") @@ -853,7 +868,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("SearchCode") .IsRequired() - .HasColumnType("varchar(255)") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("search_code"); b.Property("UpdatedAt") @@ -888,7 +904,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("BadgeCode") .IsRequired() - .HasColumnType("varchar(255)") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("badge_code"); b.Property("CreatedAt") @@ -1057,7 +1074,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Type") .IsRequired() - .HasColumnType("varchar(255)") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("type"); b.Property("UpdatedAt") @@ -1112,12 +1130,14 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnName("gender"); b.Property("Motto") - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("motto"); b.Property("Name") .IsRequired() - .HasColumnType("varchar(255)") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("name"); b.Property("PlayerPerks") @@ -1317,11 +1337,11 @@ protected override void BuildModel(ModelBuilder modelBuilder) MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - b.Property("AllowEditing") + b.Property("AllowBlocking") .ValueGeneratedOnAdd() .HasColumnType("tinyint(1)") - .HasDefaultValue(true) - .HasColumnName("allow_editing"); + .HasDefaultValue(false) + .HasColumnName("allow_blocking"); b.Property("AllowPets") .ValueGeneratedOnAdd() @@ -1335,43 +1355,37 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasDefaultValue(false) .HasColumnName("allow_pets_eat"); - b.Property("AllowWalkThrough") - .ValueGeneratedOnAdd() - .HasColumnType("tinyint(1)") - .HasDefaultValue(true) - .HasColumnName("allow_blocking"); - b.Property("BanType") .HasColumnType("int") .HasDefaultValue(0) .HasColumnName("ban_type"); + b.Property("ChatBubbleType") + .HasColumnType("int") + .HasDefaultValue(1) + .HasColumnName("chat_bubble_type"); + b.Property("ChatDistance") .ValueGeneratedOnAdd() .HasColumnType("int") .HasDefaultValue(50) .HasColumnName("chat_distance"); + b.Property("ChatFloodType") + .HasColumnType("int") + .HasDefaultValue(2) + .HasColumnName("chat_flood_type"); + b.Property("ChatModeType") .HasColumnType("int") .HasDefaultValue(0) .HasColumnName("chat_mode_type"); - b.Property("ChatProtectionType") - .HasColumnType("int") - .HasDefaultValue(2) - .HasColumnName("chat_protection_type"); - b.Property("ChatSpeedType") .HasColumnType("int") .HasDefaultValue(1) .HasColumnName("chat_speed_type"); - b.Property("ChatWeightType") - .HasColumnType("int") - .HasDefaultValue(1) - .HasColumnName("chat_weight_type"); - b.Property("CreatedAt") .ValueGeneratedOnAdd() .HasColumnType("datetime(6)") @@ -1387,9 +1401,15 @@ protected override void BuildModel(ModelBuilder modelBuilder) MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DeletedAt")); b.Property("Description") - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("description"); + b.Property("DoorMode") + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("door_mode"); + b.Property("HideWalls") .ValueGeneratedOnAdd() .HasColumnType("tinyint(1)") @@ -1415,7 +1435,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Name") .IsRequired() - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("name"); b.Property("NavigatorCategoryEntityId") @@ -1441,21 +1462,23 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnName("paint_wall"); b.Property("Password") - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("password"); b.Property("PlayerEntityId") .HasColumnType("int") .HasColumnName("player_id"); - b.Property("RoomModelEntityId") + b.Property("PlayersMax") + .ValueGeneratedOnAdd() .HasColumnType("int") - .HasColumnName("model_id"); + .HasDefaultValue(25) + .HasColumnName("players_max"); - b.Property("RoomState") + b.Property("RoomModelEntityId") .HasColumnType("int") - .HasDefaultValue(0) - .HasColumnName("state"); + .HasColumnName("model_id"); b.Property("ThicknessFloor") .HasColumnType("int") @@ -1479,12 +1502,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); - b.Property("UsersMax") - .ValueGeneratedOnAdd() - .HasColumnType("int") - .HasDefaultValue(25) - .HasColumnName("users_max"); - b.Property("UsersNow") .ValueGeneratedOnAdd() .HasColumnType("int") @@ -1609,12 +1626,14 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Model") .IsRequired() + .HasMaxLength(512) .HasColumnType("longtext") .HasColumnName("model"); b.Property("Name") .IsRequired() - .HasColumnType("varchar(255)") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("name"); b.Property("UpdatedAt") @@ -1757,7 +1776,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("IpAddress") .IsRequired() - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("ip_address"); b.Property("IsLocked") @@ -1772,7 +1792,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Ticket") .IsRequired() - .HasColumnType("varchar(255)") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("ticket"); b.Property("UpdatedAt") @@ -1808,7 +1829,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Browser") .IsRequired() - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("browser"); b.Property("ElapsedTime") @@ -1817,7 +1839,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("FlashVersion") .IsRequired() - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("flash_version"); b.Property("GarbageCollections") @@ -1840,12 +1863,14 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("OS") .IsRequired() - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("os"); b.Property("UserAgent") .IsRequired() - .HasColumnType("longtext") + .HasMaxLength(512) + .HasColumnType("varchar(512)") .HasColumnName("user_agent"); b.HasKey("Id");