feat(Core): add realms-related table entities

This commit is contained in:
2026-06-14 16:40:53 +02:00
parent 6d228214f9
commit f5701d2cdd
20 changed files with 2302 additions and 1 deletions
+6
View File
@@ -6,4 +6,10 @@ namespace Core.Data;
public class DataContext(DbContextOptions<DataContext> options) : DbContext(options) public class DataContext(DbContextOptions<DataContext> options) : DbContext(options)
{ {
public DbSet<AppConfig> AppConfig { get; set; } public DbSet<AppConfig> AppConfig { get; set; }
public DbSet<Player> Players { get; set; }
public DbSet<Realm> Realms { get; set; }
public DbSet<Slot> Slots { get; set; }
public DbSet<SlotOptions> SlotOptions { get; set; }
public DbSet<Subscription> Subscriptions { get; set; }
public DbSet<WorldSettings> WorldSettings { get; set; }
} }
+10
View File
@@ -0,0 +1,10 @@
namespace Core.Entities;
public class Player
{
public required int Id { get; set; }
public required string Uuid { get; set; }
public required string Name { get; set; }
public required bool Operator { get; set; }
public required bool Accepted { get; set; }
}
+16
View File
@@ -0,0 +1,16 @@
namespace Core.Entities;
public class Realm
{
public required int Id { get; set; }
public required Subscription Subscription { get; set; }
public required string Name { get; set; }
public required string Description { get; set; }
public required string State { get; set; }
public required Player Owner { get; set; }
public required List<Player> Players { get; set; }
public required List<Slot> Slots { get; set; }
public required string WorldType { get; set; }
public required Slot ActiveSlot { get; set; }
public Realm? ParentWorld { get; set; }
}
+9
View File
@@ -0,0 +1,9 @@
namespace Core.Entities;
public class Slot
{
public required int Id { get; set; }
public required int SlotId { get; set; }
public required SlotOptions Options { get; set; }
public required WorldSettings Settings { get; set; }
}
+12
View File
@@ -0,0 +1,12 @@
namespace Core.Entities;
public class SlotOptions
{
public int Id { get; set; }
public int SpawnProtection { get; set; }
public bool ForceGamemode { get; set; }
public int Difficulty { get; set; }
public int Gamemode { get; set; }
public required string SlotName { get; set; }
public required string Version { get; set; }
}
+8
View File
@@ -0,0 +1,8 @@
namespace Core.Entities;
public class Subscription
{
public required int Id { get; set; }
public required string SubscriptionId { get; set; }
public required int DaysLeft { get; set; }
}
+7
View File
@@ -0,0 +1,7 @@
namespace Core.Entities;
public class WorldSettings
{
public required int Id { get; set; }
public bool Hardcore { get; set; }
}
+70
View File
@@ -0,0 +1,70 @@
// <auto-generated />
using Core.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Core.Migrations
{
[DbContext(typeof(DataContext))]
[Migration("20260614142844_Players_Init")]
partial class Players_Init
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "10.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Core.Entities.AppConfig", b =>
{
b.Property<string>("Key")
.HasColumnType("text");
b.Property<object>("Value")
.IsRequired()
.HasColumnType("jsonb");
b.HasKey("Key");
b.ToTable("AppConfig");
});
modelBuilder.Entity("Core.Entities.Player", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Accepted")
.HasColumnType("boolean");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("Operator")
.HasColumnType("boolean");
b.Property<string>("Uuid")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Players");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,38 @@
using Microsoft.EntityFrameworkCore.Migrations;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Core.Migrations
{
/// <inheritdoc />
public partial class Players_Init : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Players",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Uuid = table.Column<string>(type: "text", nullable: false),
Name = table.Column<string>(type: "text", nullable: false),
Operator = table.Column<bool>(type: "boolean", nullable: false),
Accepted = table.Column<bool>(type: "boolean", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Players", x => x.Id);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Players");
}
}
}
+219
View File
@@ -0,0 +1,219 @@
// <auto-generated />
using Core.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Core.Migrations
{
[DbContext(typeof(DataContext))]
[Migration("20260614143145_Realms_Init")]
partial class Realms_Init
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "10.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Core.Entities.AppConfig", b =>
{
b.Property<string>("Key")
.HasColumnType("text");
b.Property<object>("Value")
.IsRequired()
.HasColumnType("jsonb");
b.HasKey("Key");
b.ToTable("AppConfig");
});
modelBuilder.Entity("Core.Entities.Player", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Accepted")
.HasColumnType("boolean");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("Operator")
.HasColumnType("boolean");
b.Property<int?>("RealmId")
.HasColumnType("integer");
b.Property<string>("Uuid")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("RealmId");
b.ToTable("Players");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ActiveSlotId")
.HasColumnType("integer");
b.Property<string>("Description")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<int>("OwnerId")
.HasColumnType("integer");
b.Property<int?>("ParentWorldId")
.HasColumnType("integer");
b.Property<string>("State")
.IsRequired()
.HasColumnType("text");
b.Property<int>("SubscriptionId")
.HasColumnType("integer");
b.Property<string>("WorldType")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ActiveSlotId");
b.HasIndex("OwnerId");
b.HasIndex("ParentWorldId");
b.HasIndex("SubscriptionId");
b.ToTable("Realms");
});
modelBuilder.Entity("Core.Entities.Slot", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int?>("RealmId")
.HasColumnType("integer");
b.Property<int>("SlotId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("RealmId");
b.ToTable("Slot");
});
modelBuilder.Entity("Core.Entities.Subscription", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("DaysLeft")
.HasColumnType("integer");
b.Property<string>("SubscriptionId")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Subscription");
});
modelBuilder.Entity("Core.Entities.Player", b =>
{
b.HasOne("Core.Entities.Realm", null)
.WithMany("Players")
.HasForeignKey("RealmId");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.HasOne("Core.Entities.Slot", "ActiveSlot")
.WithMany()
.HasForeignKey("ActiveSlotId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Player", "Owner")
.WithMany()
.HasForeignKey("OwnerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Realm", "ParentWorld")
.WithMany()
.HasForeignKey("ParentWorldId");
b.HasOne("Core.Entities.Subscription", "Subscription")
.WithMany()
.HasForeignKey("SubscriptionId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("ActiveSlot");
b.Navigation("Owner");
b.Navigation("ParentWorld");
b.Navigation("Subscription");
});
modelBuilder.Entity("Core.Entities.Slot", b =>
{
b.HasOne("Core.Entities.Realm", null)
.WithMany("Slots")
.HasForeignKey("RealmId");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.Navigation("Players");
b.Navigation("Slots");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,165 @@
using Microsoft.EntityFrameworkCore.Migrations;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Core.Migrations
{
/// <inheritdoc />
public partial class Realms_Init : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<int>(
name: "RealmId",
table: "Players",
type: "integer",
nullable: true);
migrationBuilder.CreateTable(
name: "Subscription",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
SubscriptionId = table.Column<string>(type: "text", nullable: false),
DaysLeft = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Subscription", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Realms",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
SubscriptionId = table.Column<int>(type: "integer", nullable: false),
Name = table.Column<string>(type: "text", nullable: false),
Description = table.Column<string>(type: "text", nullable: false),
State = table.Column<string>(type: "text", nullable: false),
OwnerId = table.Column<int>(type: "integer", nullable: false),
WorldType = table.Column<string>(type: "text", nullable: false),
ActiveSlotId = table.Column<int>(type: "integer", nullable: false),
ParentWorldId = table.Column<int>(type: "integer", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Realms", x => x.Id);
table.ForeignKey(
name: "FK_Realms_Players_OwnerId",
column: x => x.OwnerId,
principalTable: "Players",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Realms_Realms_ParentWorldId",
column: x => x.ParentWorldId,
principalTable: "Realms",
principalColumn: "Id");
table.ForeignKey(
name: "FK_Realms_Subscription_SubscriptionId",
column: x => x.SubscriptionId,
principalTable: "Subscription",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Slot",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
SlotId = table.Column<int>(type: "integer", nullable: false),
RealmId = table.Column<int>(type: "integer", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Slot", x => x.Id);
table.ForeignKey(
name: "FK_Slot_Realms_RealmId",
column: x => x.RealmId,
principalTable: "Realms",
principalColumn: "Id");
});
migrationBuilder.CreateIndex(
name: "IX_Players_RealmId",
table: "Players",
column: "RealmId");
migrationBuilder.CreateIndex(
name: "IX_Realms_ActiveSlotId",
table: "Realms",
column: "ActiveSlotId");
migrationBuilder.CreateIndex(
name: "IX_Realms_OwnerId",
table: "Realms",
column: "OwnerId");
migrationBuilder.CreateIndex(
name: "IX_Realms_ParentWorldId",
table: "Realms",
column: "ParentWorldId");
migrationBuilder.CreateIndex(
name: "IX_Realms_SubscriptionId",
table: "Realms",
column: "SubscriptionId");
migrationBuilder.CreateIndex(
name: "IX_Slot_RealmId",
table: "Slot",
column: "RealmId");
migrationBuilder.AddForeignKey(
name: "FK_Players_Realms_RealmId",
table: "Players",
column: "RealmId",
principalTable: "Realms",
principalColumn: "Id");
migrationBuilder.AddForeignKey(
name: "FK_Realms_Slot_ActiveSlotId",
table: "Realms",
column: "ActiveSlotId",
principalTable: "Slot",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Players_Realms_RealmId",
table: "Players");
migrationBuilder.DropForeignKey(
name: "FK_Realms_Slot_ActiveSlotId",
table: "Realms");
migrationBuilder.DropTable(
name: "Slot");
migrationBuilder.DropTable(
name: "Realms");
migrationBuilder.DropTable(
name: "Subscription");
migrationBuilder.DropIndex(
name: "IX_Players_RealmId",
table: "Players");
migrationBuilder.DropColumn(
name: "RealmId",
table: "Players");
}
}
}
+294
View File
@@ -0,0 +1,294 @@
// <auto-generated />
using Core.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Core.Migrations
{
[DbContext(typeof(DataContext))]
[Migration("20260614143809_Slots_Init")]
partial class Slots_Init
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "10.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Core.Entities.AppConfig", b =>
{
b.Property<string>("Key")
.HasColumnType("text");
b.Property<object>("Value")
.IsRequired()
.HasColumnType("jsonb");
b.HasKey("Key");
b.ToTable("AppConfig");
});
modelBuilder.Entity("Core.Entities.Player", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Accepted")
.HasColumnType("boolean");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("Operator")
.HasColumnType("boolean");
b.Property<int?>("RealmId")
.HasColumnType("integer");
b.Property<string>("Uuid")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("RealmId");
b.ToTable("Players");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ActiveSlotId")
.HasColumnType("integer");
b.Property<string>("Description")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<int>("OwnerId")
.HasColumnType("integer");
b.Property<int?>("ParentWorldId")
.HasColumnType("integer");
b.Property<string>("State")
.IsRequired()
.HasColumnType("text");
b.Property<int>("SubscriptionId")
.HasColumnType("integer");
b.Property<string>("WorldType")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ActiveSlotId");
b.HasIndex("OwnerId");
b.HasIndex("ParentWorldId");
b.HasIndex("SubscriptionId");
b.ToTable("Realms");
});
modelBuilder.Entity("Core.Entities.Slot", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("OptionsId")
.HasColumnType("integer");
b.Property<int?>("RealmId")
.HasColumnType("integer");
b.Property<int>("SettingsId")
.HasColumnType("integer");
b.Property<int>("SlotId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("OptionsId");
b.HasIndex("RealmId");
b.HasIndex("SettingsId");
b.ToTable("Slots");
});
modelBuilder.Entity("Core.Entities.SlotOptions", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Difficulty")
.HasColumnType("integer");
b.Property<bool>("ForceGamemode")
.HasColumnType("boolean");
b.Property<int>("Gamemode")
.HasColumnType("integer");
b.Property<string>("SlotName")
.IsRequired()
.HasColumnType("text");
b.Property<int>("SpawnProtection")
.HasColumnType("integer");
b.Property<string>("Version")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("SlotOptions");
});
modelBuilder.Entity("Core.Entities.Subscription", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("DaysLeft")
.HasColumnType("integer");
b.Property<string>("SubscriptionId")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Subscription");
});
modelBuilder.Entity("Core.Entities.WorldSettings", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Hardcore")
.HasColumnType("boolean");
b.HasKey("Id");
b.ToTable("WorldSettings");
});
modelBuilder.Entity("Core.Entities.Player", b =>
{
b.HasOne("Core.Entities.Realm", null)
.WithMany("Players")
.HasForeignKey("RealmId");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.HasOne("Core.Entities.Slot", "ActiveSlot")
.WithMany()
.HasForeignKey("ActiveSlotId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Player", "Owner")
.WithMany()
.HasForeignKey("OwnerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Realm", "ParentWorld")
.WithMany()
.HasForeignKey("ParentWorldId");
b.HasOne("Core.Entities.Subscription", "Subscription")
.WithMany()
.HasForeignKey("SubscriptionId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("ActiveSlot");
b.Navigation("Owner");
b.Navigation("ParentWorld");
b.Navigation("Subscription");
});
modelBuilder.Entity("Core.Entities.Slot", b =>
{
b.HasOne("Core.Entities.SlotOptions", "Options")
.WithMany()
.HasForeignKey("OptionsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Realm", null)
.WithMany("Slots")
.HasForeignKey("RealmId");
b.HasOne("Core.Entities.WorldSettings", "Settings")
.WithMany()
.HasForeignKey("SettingsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Options");
b.Navigation("Settings");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.Navigation("Players");
b.Navigation("Slots");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,202 @@
using Microsoft.EntityFrameworkCore.Migrations;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Core.Migrations
{
/// <inheritdoc />
public partial class Slots_Init : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Realms_Slot_ActiveSlotId",
table: "Realms");
migrationBuilder.DropForeignKey(
name: "FK_Slot_Realms_RealmId",
table: "Slot");
migrationBuilder.DropPrimaryKey(
name: "PK_Slot",
table: "Slot");
migrationBuilder.RenameTable(
name: "Slot",
newName: "Slots");
migrationBuilder.RenameIndex(
name: "IX_Slot_RealmId",
table: "Slots",
newName: "IX_Slots_RealmId");
migrationBuilder.AddColumn<int>(
name: "OptionsId",
table: "Slots",
type: "integer",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<int>(
name: "SettingsId",
table: "Slots",
type: "integer",
nullable: false,
defaultValue: 0);
migrationBuilder.AddPrimaryKey(
name: "PK_Slots",
table: "Slots",
column: "Id");
migrationBuilder.CreateTable(
name: "SlotOptions",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
SpawnProtection = table.Column<int>(type: "integer", nullable: false),
ForceGamemode = table.Column<bool>(type: "boolean", nullable: false),
Difficulty = table.Column<int>(type: "integer", nullable: false),
Gamemode = table.Column<int>(type: "integer", nullable: false),
SlotName = table.Column<string>(type: "text", nullable: false),
Version = table.Column<string>(type: "text", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_SlotOptions", x => x.Id);
});
migrationBuilder.CreateTable(
name: "WorldSettings",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Hardcore = table.Column<bool>(type: "boolean", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_WorldSettings", x => x.Id);
});
migrationBuilder.CreateIndex(
name: "IX_Slots_OptionsId",
table: "Slots",
column: "OptionsId");
migrationBuilder.CreateIndex(
name: "IX_Slots_SettingsId",
table: "Slots",
column: "SettingsId");
migrationBuilder.AddForeignKey(
name: "FK_Realms_Slots_ActiveSlotId",
table: "Realms",
column: "ActiveSlotId",
principalTable: "Slots",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_Slots_Realms_RealmId",
table: "Slots",
column: "RealmId",
principalTable: "Realms",
principalColumn: "Id");
migrationBuilder.AddForeignKey(
name: "FK_Slots_SlotOptions_OptionsId",
table: "Slots",
column: "OptionsId",
principalTable: "SlotOptions",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_Slots_WorldSettings_SettingsId",
table: "Slots",
column: "SettingsId",
principalTable: "WorldSettings",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Realms_Slots_ActiveSlotId",
table: "Realms");
migrationBuilder.DropForeignKey(
name: "FK_Slots_Realms_RealmId",
table: "Slots");
migrationBuilder.DropForeignKey(
name: "FK_Slots_SlotOptions_OptionsId",
table: "Slots");
migrationBuilder.DropForeignKey(
name: "FK_Slots_WorldSettings_SettingsId",
table: "Slots");
migrationBuilder.DropTable(
name: "SlotOptions");
migrationBuilder.DropTable(
name: "WorldSettings");
migrationBuilder.DropPrimaryKey(
name: "PK_Slots",
table: "Slots");
migrationBuilder.DropIndex(
name: "IX_Slots_OptionsId",
table: "Slots");
migrationBuilder.DropIndex(
name: "IX_Slots_SettingsId",
table: "Slots");
migrationBuilder.DropColumn(
name: "OptionsId",
table: "Slots");
migrationBuilder.DropColumn(
name: "SettingsId",
table: "Slots");
migrationBuilder.RenameTable(
name: "Slots",
newName: "Slot");
migrationBuilder.RenameIndex(
name: "IX_Slots_RealmId",
table: "Slot",
newName: "IX_Slot_RealmId");
migrationBuilder.AddPrimaryKey(
name: "PK_Slot",
table: "Slot",
column: "Id");
migrationBuilder.AddForeignKey(
name: "FK_Realms_Slot_ActiveSlotId",
table: "Realms",
column: "ActiveSlotId",
principalTable: "Slot",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_Slot_Realms_RealmId",
table: "Slot",
column: "RealmId",
principalTable: "Realms",
principalColumn: "Id");
}
}
}
@@ -0,0 +1,294 @@
// <auto-generated />
using Core.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Core.Migrations
{
[DbContext(typeof(DataContext))]
[Migration("20260614143845_SlotOptions_Init")]
partial class SlotOptions_Init
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "10.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Core.Entities.AppConfig", b =>
{
b.Property<string>("Key")
.HasColumnType("text");
b.Property<object>("Value")
.IsRequired()
.HasColumnType("jsonb");
b.HasKey("Key");
b.ToTable("AppConfig");
});
modelBuilder.Entity("Core.Entities.Player", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Accepted")
.HasColumnType("boolean");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("Operator")
.HasColumnType("boolean");
b.Property<int?>("RealmId")
.HasColumnType("integer");
b.Property<string>("Uuid")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("RealmId");
b.ToTable("Players");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ActiveSlotId")
.HasColumnType("integer");
b.Property<string>("Description")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<int>("OwnerId")
.HasColumnType("integer");
b.Property<int?>("ParentWorldId")
.HasColumnType("integer");
b.Property<string>("State")
.IsRequired()
.HasColumnType("text");
b.Property<int>("SubscriptionId")
.HasColumnType("integer");
b.Property<string>("WorldType")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ActiveSlotId");
b.HasIndex("OwnerId");
b.HasIndex("ParentWorldId");
b.HasIndex("SubscriptionId");
b.ToTable("Realms");
});
modelBuilder.Entity("Core.Entities.Slot", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("OptionsId")
.HasColumnType("integer");
b.Property<int?>("RealmId")
.HasColumnType("integer");
b.Property<int>("SettingsId")
.HasColumnType("integer");
b.Property<int>("SlotId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("OptionsId");
b.HasIndex("RealmId");
b.HasIndex("SettingsId");
b.ToTable("Slots");
});
modelBuilder.Entity("Core.Entities.SlotOptions", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Difficulty")
.HasColumnType("integer");
b.Property<bool>("ForceGamemode")
.HasColumnType("boolean");
b.Property<int>("Gamemode")
.HasColumnType("integer");
b.Property<string>("SlotName")
.IsRequired()
.HasColumnType("text");
b.Property<int>("SpawnProtection")
.HasColumnType("integer");
b.Property<string>("Version")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("SlotOptions");
});
modelBuilder.Entity("Core.Entities.Subscription", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("DaysLeft")
.HasColumnType("integer");
b.Property<string>("SubscriptionId")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Subscription");
});
modelBuilder.Entity("Core.Entities.WorldSettings", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Hardcore")
.HasColumnType("boolean");
b.HasKey("Id");
b.ToTable("WorldSettings");
});
modelBuilder.Entity("Core.Entities.Player", b =>
{
b.HasOne("Core.Entities.Realm", null)
.WithMany("Players")
.HasForeignKey("RealmId");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.HasOne("Core.Entities.Slot", "ActiveSlot")
.WithMany()
.HasForeignKey("ActiveSlotId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Player", "Owner")
.WithMany()
.HasForeignKey("OwnerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Realm", "ParentWorld")
.WithMany()
.HasForeignKey("ParentWorldId");
b.HasOne("Core.Entities.Subscription", "Subscription")
.WithMany()
.HasForeignKey("SubscriptionId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("ActiveSlot");
b.Navigation("Owner");
b.Navigation("ParentWorld");
b.Navigation("Subscription");
});
modelBuilder.Entity("Core.Entities.Slot", b =>
{
b.HasOne("Core.Entities.SlotOptions", "Options")
.WithMany()
.HasForeignKey("OptionsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Realm", null)
.WithMany("Slots")
.HasForeignKey("RealmId");
b.HasOne("Core.Entities.WorldSettings", "Settings")
.WithMany()
.HasForeignKey("SettingsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Options");
b.Navigation("Settings");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.Navigation("Players");
b.Navigation("Slots");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,22 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Core.Migrations
{
/// <inheritdoc />
public partial class SlotOptions_Init : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}
@@ -0,0 +1,294 @@
// <auto-generated />
using Core.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Core.Migrations
{
[DbContext(typeof(DataContext))]
[Migration("20260614143913_Subscriptions_Init")]
partial class Subscriptions_Init
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "10.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Core.Entities.AppConfig", b =>
{
b.Property<string>("Key")
.HasColumnType("text");
b.Property<object>("Value")
.IsRequired()
.HasColumnType("jsonb");
b.HasKey("Key");
b.ToTable("AppConfig");
});
modelBuilder.Entity("Core.Entities.Player", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Accepted")
.HasColumnType("boolean");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("Operator")
.HasColumnType("boolean");
b.Property<int?>("RealmId")
.HasColumnType("integer");
b.Property<string>("Uuid")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("RealmId");
b.ToTable("Players");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ActiveSlotId")
.HasColumnType("integer");
b.Property<string>("Description")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<int>("OwnerId")
.HasColumnType("integer");
b.Property<int?>("ParentWorldId")
.HasColumnType("integer");
b.Property<string>("State")
.IsRequired()
.HasColumnType("text");
b.Property<int>("SubscriptionId")
.HasColumnType("integer");
b.Property<string>("WorldType")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ActiveSlotId");
b.HasIndex("OwnerId");
b.HasIndex("ParentWorldId");
b.HasIndex("SubscriptionId");
b.ToTable("Realms");
});
modelBuilder.Entity("Core.Entities.Slot", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("OptionsId")
.HasColumnType("integer");
b.Property<int?>("RealmId")
.HasColumnType("integer");
b.Property<int>("SettingsId")
.HasColumnType("integer");
b.Property<int>("SlotId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("OptionsId");
b.HasIndex("RealmId");
b.HasIndex("SettingsId");
b.ToTable("Slots");
});
modelBuilder.Entity("Core.Entities.SlotOptions", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Difficulty")
.HasColumnType("integer");
b.Property<bool>("ForceGamemode")
.HasColumnType("boolean");
b.Property<int>("Gamemode")
.HasColumnType("integer");
b.Property<string>("SlotName")
.IsRequired()
.HasColumnType("text");
b.Property<int>("SpawnProtection")
.HasColumnType("integer");
b.Property<string>("Version")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("SlotOptions");
});
modelBuilder.Entity("Core.Entities.Subscription", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("DaysLeft")
.HasColumnType("integer");
b.Property<string>("SubscriptionId")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Subscriptions");
});
modelBuilder.Entity("Core.Entities.WorldSettings", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Hardcore")
.HasColumnType("boolean");
b.HasKey("Id");
b.ToTable("WorldSettings");
});
modelBuilder.Entity("Core.Entities.Player", b =>
{
b.HasOne("Core.Entities.Realm", null)
.WithMany("Players")
.HasForeignKey("RealmId");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.HasOne("Core.Entities.Slot", "ActiveSlot")
.WithMany()
.HasForeignKey("ActiveSlotId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Player", "Owner")
.WithMany()
.HasForeignKey("OwnerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Realm", "ParentWorld")
.WithMany()
.HasForeignKey("ParentWorldId");
b.HasOne("Core.Entities.Subscription", "Subscription")
.WithMany()
.HasForeignKey("SubscriptionId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("ActiveSlot");
b.Navigation("Owner");
b.Navigation("ParentWorld");
b.Navigation("Subscription");
});
modelBuilder.Entity("Core.Entities.Slot", b =>
{
b.HasOne("Core.Entities.SlotOptions", "Options")
.WithMany()
.HasForeignKey("OptionsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Realm", null)
.WithMany("Slots")
.HasForeignKey("RealmId");
b.HasOne("Core.Entities.WorldSettings", "Settings")
.WithMany()
.HasForeignKey("SettingsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Options");
b.Navigation("Settings");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.Navigation("Players");
b.Navigation("Slots");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,68 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Core.Migrations
{
/// <inheritdoc />
public partial class Subscriptions_Init : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Realms_Subscription_SubscriptionId",
table: "Realms");
migrationBuilder.DropPrimaryKey(
name: "PK_Subscription",
table: "Subscription");
migrationBuilder.RenameTable(
name: "Subscription",
newName: "Subscriptions");
migrationBuilder.AddPrimaryKey(
name: "PK_Subscriptions",
table: "Subscriptions",
column: "Id");
migrationBuilder.AddForeignKey(
name: "FK_Realms_Subscriptions_SubscriptionId",
table: "Realms",
column: "SubscriptionId",
principalTable: "Subscriptions",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Realms_Subscriptions_SubscriptionId",
table: "Realms");
migrationBuilder.DropPrimaryKey(
name: "PK_Subscriptions",
table: "Subscriptions");
migrationBuilder.RenameTable(
name: "Subscriptions",
newName: "Subscription");
migrationBuilder.AddPrimaryKey(
name: "PK_Subscription",
table: "Subscription",
column: "Id");
migrationBuilder.AddForeignKey(
name: "FK_Realms_Subscription_SubscriptionId",
table: "Realms",
column: "SubscriptionId",
principalTable: "Subscription",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
}
}
}
@@ -0,0 +1,294 @@
// <auto-generated />
using Core.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Core.Migrations
{
[DbContext(typeof(DataContext))]
[Migration("20260614143954_WorldSettings_Init")]
partial class WorldSettings_Init
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "10.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Core.Entities.AppConfig", b =>
{
b.Property<string>("Key")
.HasColumnType("text");
b.Property<object>("Value")
.IsRequired()
.HasColumnType("jsonb");
b.HasKey("Key");
b.ToTable("AppConfig");
});
modelBuilder.Entity("Core.Entities.Player", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Accepted")
.HasColumnType("boolean");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("Operator")
.HasColumnType("boolean");
b.Property<int?>("RealmId")
.HasColumnType("integer");
b.Property<string>("Uuid")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("RealmId");
b.ToTable("Players");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ActiveSlotId")
.HasColumnType("integer");
b.Property<string>("Description")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<int>("OwnerId")
.HasColumnType("integer");
b.Property<int?>("ParentWorldId")
.HasColumnType("integer");
b.Property<string>("State")
.IsRequired()
.HasColumnType("text");
b.Property<int>("SubscriptionId")
.HasColumnType("integer");
b.Property<string>("WorldType")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ActiveSlotId");
b.HasIndex("OwnerId");
b.HasIndex("ParentWorldId");
b.HasIndex("SubscriptionId");
b.ToTable("Realms");
});
modelBuilder.Entity("Core.Entities.Slot", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("OptionsId")
.HasColumnType("integer");
b.Property<int?>("RealmId")
.HasColumnType("integer");
b.Property<int>("SettingsId")
.HasColumnType("integer");
b.Property<int>("SlotId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("OptionsId");
b.HasIndex("RealmId");
b.HasIndex("SettingsId");
b.ToTable("Slots");
});
modelBuilder.Entity("Core.Entities.SlotOptions", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Difficulty")
.HasColumnType("integer");
b.Property<bool>("ForceGamemode")
.HasColumnType("boolean");
b.Property<int>("Gamemode")
.HasColumnType("integer");
b.Property<string>("SlotName")
.IsRequired()
.HasColumnType("text");
b.Property<int>("SpawnProtection")
.HasColumnType("integer");
b.Property<string>("Version")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("SlotOptions");
});
modelBuilder.Entity("Core.Entities.Subscription", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("DaysLeft")
.HasColumnType("integer");
b.Property<string>("SubscriptionId")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Subscriptions");
});
modelBuilder.Entity("Core.Entities.WorldSettings", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Hardcore")
.HasColumnType("boolean");
b.HasKey("Id");
b.ToTable("WorldSettings");
});
modelBuilder.Entity("Core.Entities.Player", b =>
{
b.HasOne("Core.Entities.Realm", null)
.WithMany("Players")
.HasForeignKey("RealmId");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.HasOne("Core.Entities.Slot", "ActiveSlot")
.WithMany()
.HasForeignKey("ActiveSlotId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Player", "Owner")
.WithMany()
.HasForeignKey("OwnerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Realm", "ParentWorld")
.WithMany()
.HasForeignKey("ParentWorldId");
b.HasOne("Core.Entities.Subscription", "Subscription")
.WithMany()
.HasForeignKey("SubscriptionId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("ActiveSlot");
b.Navigation("Owner");
b.Navigation("ParentWorld");
b.Navigation("Subscription");
});
modelBuilder.Entity("Core.Entities.Slot", b =>
{
b.HasOne("Core.Entities.SlotOptions", "Options")
.WithMany()
.HasForeignKey("OptionsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Realm", null)
.WithMany("Slots")
.HasForeignKey("RealmId");
b.HasOne("Core.Entities.WorldSettings", "Settings")
.WithMany()
.HasForeignKey("SettingsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Options");
b.Navigation("Settings");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.Navigation("Players");
b.Navigation("Slots");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,22 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Core.Migrations
{
/// <inheritdoc />
public partial class WorldSettings_Init : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}
+252 -1
View File
@@ -26,7 +26,7 @@ namespace Core.Migrations
b.Property<string>("Key") b.Property<string>("Key")
.HasColumnType("text"); .HasColumnType("text");
b.Property<string>("Value") b.Property<object>("Value")
.IsRequired() .IsRequired()
.HasColumnType("jsonb"); .HasColumnType("jsonb");
@@ -34,6 +34,257 @@ namespace Core.Migrations
b.ToTable("AppConfig"); b.ToTable("AppConfig");
}); });
modelBuilder.Entity("Core.Entities.Player", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Accepted")
.HasColumnType("boolean");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("Operator")
.HasColumnType("boolean");
b.Property<int?>("RealmId")
.HasColumnType("integer");
b.Property<string>("Uuid")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("RealmId");
b.ToTable("Players");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ActiveSlotId")
.HasColumnType("integer");
b.Property<string>("Description")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<int>("OwnerId")
.HasColumnType("integer");
b.Property<int?>("ParentWorldId")
.HasColumnType("integer");
b.Property<string>("State")
.IsRequired()
.HasColumnType("text");
b.Property<int>("SubscriptionId")
.HasColumnType("integer");
b.Property<string>("WorldType")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ActiveSlotId");
b.HasIndex("OwnerId");
b.HasIndex("ParentWorldId");
b.HasIndex("SubscriptionId");
b.ToTable("Realms");
});
modelBuilder.Entity("Core.Entities.Slot", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("OptionsId")
.HasColumnType("integer");
b.Property<int?>("RealmId")
.HasColumnType("integer");
b.Property<int>("SettingsId")
.HasColumnType("integer");
b.Property<int>("SlotId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("OptionsId");
b.HasIndex("RealmId");
b.HasIndex("SettingsId");
b.ToTable("Slots");
});
modelBuilder.Entity("Core.Entities.SlotOptions", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Difficulty")
.HasColumnType("integer");
b.Property<bool>("ForceGamemode")
.HasColumnType("boolean");
b.Property<int>("Gamemode")
.HasColumnType("integer");
b.Property<string>("SlotName")
.IsRequired()
.HasColumnType("text");
b.Property<int>("SpawnProtection")
.HasColumnType("integer");
b.Property<string>("Version")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("SlotOptions");
});
modelBuilder.Entity("Core.Entities.Subscription", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("DaysLeft")
.HasColumnType("integer");
b.Property<string>("SubscriptionId")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Subscriptions");
});
modelBuilder.Entity("Core.Entities.WorldSettings", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Hardcore")
.HasColumnType("boolean");
b.HasKey("Id");
b.ToTable("WorldSettings");
});
modelBuilder.Entity("Core.Entities.Player", b =>
{
b.HasOne("Core.Entities.Realm", null)
.WithMany("Players")
.HasForeignKey("RealmId");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.HasOne("Core.Entities.Slot", "ActiveSlot")
.WithMany()
.HasForeignKey("ActiveSlotId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Player", "Owner")
.WithMany()
.HasForeignKey("OwnerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Realm", "ParentWorld")
.WithMany()
.HasForeignKey("ParentWorldId");
b.HasOne("Core.Entities.Subscription", "Subscription")
.WithMany()
.HasForeignKey("SubscriptionId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("ActiveSlot");
b.Navigation("Owner");
b.Navigation("ParentWorld");
b.Navigation("Subscription");
});
modelBuilder.Entity("Core.Entities.Slot", b =>
{
b.HasOne("Core.Entities.SlotOptions", "Options")
.WithMany()
.HasForeignKey("OptionsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Core.Entities.Realm", null)
.WithMany("Slots")
.HasForeignKey("RealmId");
b.HasOne("Core.Entities.WorldSettings", "Settings")
.WithMany()
.HasForeignKey("SettingsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Options");
b.Navigation("Settings");
});
modelBuilder.Entity("Core.Entities.Realm", b =>
{
b.Navigation("Players");
b.Navigation("Slots");
});
#pragma warning restore 612, 618 #pragma warning restore 612, 618
} }
} }