Fix admin log key order. (#23052)
The keys for admin logs were set as (log_id, round_id). This made no sense because logs are usually accessed per round.
This commit is contained in:
committed by
GitHub
parent
c7ad10d0ad
commit
a39999fb9c
1756
Content.Server.Database/Migrations/Postgres/20231226154937_AdminLogPk.Designer.cs
generated
Normal file
1756
Content.Server.Database/Migrations/Postgres/20231226154937_AdminLogPk.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,105 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Content.Server.Database.Migrations.Postgres
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class AdminLogPk : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_admin_log_player_admin_log_log_id_round_id",
|
||||||
|
table: "admin_log_player");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_admin_log_player",
|
||||||
|
table: "admin_log_player");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_admin_log_player_log_id_round_id",
|
||||||
|
table: "admin_log_player");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_admin_log",
|
||||||
|
table: "admin_log");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_admin_log_round_id",
|
||||||
|
table: "admin_log");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_admin_log_player",
|
||||||
|
table: "admin_log_player",
|
||||||
|
columns: new[] { "round_id", "log_id", "player_user_id" });
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_admin_log",
|
||||||
|
table: "admin_log",
|
||||||
|
columns: new[] { "round_id", "admin_log_id" });
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_admin_log_player_player_user_id",
|
||||||
|
table: "admin_log_player",
|
||||||
|
column: "player_user_id");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_admin_log_player_admin_log_round_id_log_id",
|
||||||
|
table: "admin_log_player",
|
||||||
|
columns: new[] { "round_id", "log_id" },
|
||||||
|
principalTable: "admin_log",
|
||||||
|
principalColumns: new[] { "round_id", "admin_log_id" },
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_admin_log_player_admin_log_round_id_log_id",
|
||||||
|
table: "admin_log_player");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_admin_log_player",
|
||||||
|
table: "admin_log_player");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_admin_log_player_player_user_id",
|
||||||
|
table: "admin_log_player");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_admin_log",
|
||||||
|
table: "admin_log");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_admin_log_player",
|
||||||
|
table: "admin_log_player",
|
||||||
|
columns: new[] { "player_user_id", "log_id", "round_id" });
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_admin_log",
|
||||||
|
table: "admin_log",
|
||||||
|
columns: new[] { "admin_log_id", "round_id" });
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_admin_log_player_log_id_round_id",
|
||||||
|
table: "admin_log_player",
|
||||||
|
columns: new[] { "log_id", "round_id" });
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_admin_log_round_id",
|
||||||
|
table: "admin_log",
|
||||||
|
column: "round_id");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_admin_log_player_admin_log_log_id_round_id",
|
||||||
|
table: "admin_log_player",
|
||||||
|
columns: new[] { "log_id", "round_id" },
|
||||||
|
principalTable: "admin_log",
|
||||||
|
principalColumns: new[] { "admin_log_id", "round_id" },
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -84,14 +84,14 @@ namespace Content.Server.Database.Migrations.Postgres
|
|||||||
|
|
||||||
modelBuilder.Entity("Content.Server.Database.AdminLog", b =>
|
modelBuilder.Entity("Content.Server.Database.AdminLog", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("Id")
|
|
||||||
.HasColumnType("integer")
|
|
||||||
.HasColumnName("admin_log_id");
|
|
||||||
|
|
||||||
b.Property<int>("RoundId")
|
b.Property<int>("RoundId")
|
||||||
.HasColumnType("integer")
|
.HasColumnType("integer")
|
||||||
.HasColumnName("round_id");
|
.HasColumnName("round_id");
|
||||||
|
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.HasColumnType("integer")
|
||||||
|
.HasColumnName("admin_log_id");
|
||||||
|
|
||||||
b.Property<DateTime>("Date")
|
b.Property<DateTime>("Date")
|
||||||
.HasColumnType("timestamp with time zone")
|
.HasColumnType("timestamp with time zone")
|
||||||
.HasColumnName("date");
|
.HasColumnName("date");
|
||||||
@@ -114,7 +114,7 @@ namespace Content.Server.Database.Migrations.Postgres
|
|||||||
.HasColumnType("integer")
|
.HasColumnType("integer")
|
||||||
.HasColumnName("type");
|
.HasColumnName("type");
|
||||||
|
|
||||||
b.HasKey("Id", "RoundId")
|
b.HasKey("RoundId", "Id")
|
||||||
.HasName("PK_admin_log");
|
.HasName("PK_admin_log");
|
||||||
|
|
||||||
b.HasIndex("Date");
|
b.HasIndex("Date");
|
||||||
@@ -124,9 +124,6 @@ namespace Content.Server.Database.Migrations.Postgres
|
|||||||
|
|
||||||
NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN");
|
NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN");
|
||||||
|
|
||||||
b.HasIndex("RoundId")
|
|
||||||
.HasDatabaseName("IX_admin_log_round_id");
|
|
||||||
|
|
||||||
b.HasIndex("Type")
|
b.HasIndex("Type")
|
||||||
.HasDatabaseName("IX_admin_log_type");
|
.HasDatabaseName("IX_admin_log_type");
|
||||||
|
|
||||||
@@ -135,22 +132,23 @@ namespace Content.Server.Database.Migrations.Postgres
|
|||||||
|
|
||||||
modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b =>
|
modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b =>
|
||||||
{
|
{
|
||||||
b.Property<Guid>("PlayerUserId")
|
b.Property<int>("RoundId")
|
||||||
.HasColumnType("uuid")
|
.HasColumnType("integer")
|
||||||
.HasColumnName("player_user_id");
|
.HasColumnName("round_id");
|
||||||
|
|
||||||
b.Property<int>("LogId")
|
b.Property<int>("LogId")
|
||||||
.HasColumnType("integer")
|
.HasColumnType("integer")
|
||||||
.HasColumnName("log_id");
|
.HasColumnName("log_id");
|
||||||
|
|
||||||
b.Property<int>("RoundId")
|
b.Property<Guid>("PlayerUserId")
|
||||||
.HasColumnType("integer")
|
.HasColumnType("uuid")
|
||||||
.HasColumnName("round_id");
|
.HasColumnName("player_user_id");
|
||||||
|
|
||||||
b.HasKey("PlayerUserId", "LogId", "RoundId")
|
b.HasKey("RoundId", "LogId", "PlayerUserId")
|
||||||
.HasName("PK_admin_log_player");
|
.HasName("PK_admin_log_player");
|
||||||
|
|
||||||
b.HasIndex("LogId", "RoundId");
|
b.HasIndex("PlayerUserId")
|
||||||
|
.HasDatabaseName("IX_admin_log_player_player_user_id");
|
||||||
|
|
||||||
b.ToTable("admin_log_player", (string)null);
|
b.ToTable("admin_log_player", (string)null);
|
||||||
});
|
});
|
||||||
@@ -1303,10 +1301,10 @@ namespace Content.Server.Database.Migrations.Postgres
|
|||||||
|
|
||||||
b.HasOne("Content.Server.Database.AdminLog", "Log")
|
b.HasOne("Content.Server.Database.AdminLog", "Log")
|
||||||
.WithMany("Players")
|
.WithMany("Players")
|
||||||
.HasForeignKey("LogId", "RoundId")
|
.HasForeignKey("RoundId", "LogId")
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasConstraintName("FK_admin_log_player_admin_log_log_id_round_id");
|
.HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id");
|
||||||
|
|
||||||
b.Navigation("Log");
|
b.Navigation("Log");
|
||||||
|
|
||||||
|
|||||||
1688
Content.Server.Database/Migrations/Sqlite/20231226154929_AdminLogPk.Designer.cs
generated
Normal file
1688
Content.Server.Database/Migrations/Sqlite/20231226154929_AdminLogPk.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,105 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Content.Server.Database.Migrations.Sqlite
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class AdminLogPk : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_admin_log_player_admin_log_log_id_round_id",
|
||||||
|
table: "admin_log_player");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_admin_log_player",
|
||||||
|
table: "admin_log_player");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_admin_log_player_log_id_round_id",
|
||||||
|
table: "admin_log_player");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_admin_log",
|
||||||
|
table: "admin_log");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_admin_log_round_id",
|
||||||
|
table: "admin_log");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_admin_log_player",
|
||||||
|
table: "admin_log_player",
|
||||||
|
columns: new[] { "round_id", "log_id", "player_user_id" });
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_admin_log",
|
||||||
|
table: "admin_log",
|
||||||
|
columns: new[] { "round_id", "admin_log_id" });
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_admin_log_player_player_user_id",
|
||||||
|
table: "admin_log_player",
|
||||||
|
column: "player_user_id");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_admin_log_player_admin_log_round_id_log_id",
|
||||||
|
table: "admin_log_player",
|
||||||
|
columns: new[] { "round_id", "log_id" },
|
||||||
|
principalTable: "admin_log",
|
||||||
|
principalColumns: new[] { "round_id", "admin_log_id" },
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_admin_log_player_admin_log_round_id_log_id",
|
||||||
|
table: "admin_log_player");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_admin_log_player",
|
||||||
|
table: "admin_log_player");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_admin_log_player_player_user_id",
|
||||||
|
table: "admin_log_player");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_admin_log",
|
||||||
|
table: "admin_log");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_admin_log_player",
|
||||||
|
table: "admin_log_player",
|
||||||
|
columns: new[] { "player_user_id", "log_id", "round_id" });
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_admin_log",
|
||||||
|
table: "admin_log",
|
||||||
|
columns: new[] { "admin_log_id", "round_id" });
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_admin_log_player_log_id_round_id",
|
||||||
|
table: "admin_log_player",
|
||||||
|
columns: new[] { "log_id", "round_id" });
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_admin_log_round_id",
|
||||||
|
table: "admin_log",
|
||||||
|
column: "round_id");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_admin_log_player_admin_log_log_id_round_id",
|
||||||
|
table: "admin_log_player",
|
||||||
|
columns: new[] { "log_id", "round_id" },
|
||||||
|
principalTable: "admin_log",
|
||||||
|
principalColumns: new[] { "admin_log_id", "round_id" },
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -75,14 +75,14 @@ namespace Content.Server.Database.Migrations.Sqlite
|
|||||||
|
|
||||||
modelBuilder.Entity("Content.Server.Database.AdminLog", b =>
|
modelBuilder.Entity("Content.Server.Database.AdminLog", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("Id")
|
|
||||||
.HasColumnType("INTEGER")
|
|
||||||
.HasColumnName("admin_log_id");
|
|
||||||
|
|
||||||
b.Property<int>("RoundId")
|
b.Property<int>("RoundId")
|
||||||
.HasColumnType("INTEGER")
|
.HasColumnType("INTEGER")
|
||||||
.HasColumnName("round_id");
|
.HasColumnName("round_id");
|
||||||
|
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.HasColumnType("INTEGER")
|
||||||
|
.HasColumnName("admin_log_id");
|
||||||
|
|
||||||
b.Property<DateTime>("Date")
|
b.Property<DateTime>("Date")
|
||||||
.HasColumnType("TEXT")
|
.HasColumnType("TEXT")
|
||||||
.HasColumnName("date");
|
.HasColumnName("date");
|
||||||
@@ -105,14 +105,11 @@ namespace Content.Server.Database.Migrations.Sqlite
|
|||||||
.HasColumnType("INTEGER")
|
.HasColumnType("INTEGER")
|
||||||
.HasColumnName("type");
|
.HasColumnName("type");
|
||||||
|
|
||||||
b.HasKey("Id", "RoundId")
|
b.HasKey("RoundId", "Id")
|
||||||
.HasName("PK_admin_log");
|
.HasName("PK_admin_log");
|
||||||
|
|
||||||
b.HasIndex("Date");
|
b.HasIndex("Date");
|
||||||
|
|
||||||
b.HasIndex("RoundId")
|
|
||||||
.HasDatabaseName("IX_admin_log_round_id");
|
|
||||||
|
|
||||||
b.HasIndex("Type")
|
b.HasIndex("Type")
|
||||||
.HasDatabaseName("IX_admin_log_type");
|
.HasDatabaseName("IX_admin_log_type");
|
||||||
|
|
||||||
@@ -121,22 +118,23 @@ namespace Content.Server.Database.Migrations.Sqlite
|
|||||||
|
|
||||||
modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b =>
|
modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b =>
|
||||||
{
|
{
|
||||||
b.Property<Guid>("PlayerUserId")
|
b.Property<int>("RoundId")
|
||||||
.HasColumnType("TEXT")
|
.HasColumnType("INTEGER")
|
||||||
.HasColumnName("player_user_id");
|
.HasColumnName("round_id");
|
||||||
|
|
||||||
b.Property<int>("LogId")
|
b.Property<int>("LogId")
|
||||||
.HasColumnType("INTEGER")
|
.HasColumnType("INTEGER")
|
||||||
.HasColumnName("log_id");
|
.HasColumnName("log_id");
|
||||||
|
|
||||||
b.Property<int>("RoundId")
|
b.Property<Guid>("PlayerUserId")
|
||||||
.HasColumnType("INTEGER")
|
.HasColumnType("TEXT")
|
||||||
.HasColumnName("round_id");
|
.HasColumnName("player_user_id");
|
||||||
|
|
||||||
b.HasKey("PlayerUserId", "LogId", "RoundId")
|
b.HasKey("RoundId", "LogId", "PlayerUserId")
|
||||||
.HasName("PK_admin_log_player");
|
.HasName("PK_admin_log_player");
|
||||||
|
|
||||||
b.HasIndex("LogId", "RoundId");
|
b.HasIndex("PlayerUserId")
|
||||||
|
.HasDatabaseName("IX_admin_log_player_player_user_id");
|
||||||
|
|
||||||
b.ToTable("admin_log_player", (string)null);
|
b.ToTable("admin_log_player", (string)null);
|
||||||
});
|
});
|
||||||
@@ -1235,10 +1233,10 @@ namespace Content.Server.Database.Migrations.Sqlite
|
|||||||
|
|
||||||
b.HasOne("Content.Server.Database.AdminLog", "Log")
|
b.HasOne("Content.Server.Database.AdminLog", "Log")
|
||||||
.WithMany("Players")
|
.WithMany("Players")
|
||||||
.HasForeignKey("LogId", "RoundId")
|
.HasForeignKey("RoundId", "LogId")
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasConstraintName("FK_admin_log_player_admin_log_log_id_round_id");
|
.HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id");
|
||||||
|
|
||||||
b.Navigation("Log");
|
b.Navigation("Log");
|
||||||
|
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ namespace Content.Server.Database
|
|||||||
.IsUnique();
|
.IsUnique();
|
||||||
|
|
||||||
modelBuilder.Entity<AdminLog>()
|
modelBuilder.Entity<AdminLog>()
|
||||||
.HasKey(log => new {log.Id, log.RoundId});
|
.HasKey(log => new {log.RoundId, log.Id});
|
||||||
|
|
||||||
modelBuilder.Entity<AdminLog>()
|
modelBuilder.Entity<AdminLog>()
|
||||||
.Property(log => log.Id);
|
.Property(log => log.Id);
|
||||||
@@ -111,6 +111,9 @@ namespace Content.Server.Database
|
|||||||
.HasForeignKey(player => player.PlayerUserId)
|
.HasForeignKey(player => player.PlayerUserId)
|
||||||
.HasPrincipalKey(player => player.UserId);
|
.HasPrincipalKey(player => player.UserId);
|
||||||
|
|
||||||
|
modelBuilder.Entity<AdminLogPlayer>()
|
||||||
|
.HasIndex(p => p.PlayerUserId);
|
||||||
|
|
||||||
modelBuilder.Entity<Round>()
|
modelBuilder.Entity<Round>()
|
||||||
.HasIndex(round => round.StartDate);
|
.HasIndex(round => round.StartDate);
|
||||||
|
|
||||||
@@ -119,7 +122,7 @@ namespace Content.Server.Database
|
|||||||
.HasDefaultValue(default(DateTime));
|
.HasDefaultValue(default(DateTime));
|
||||||
|
|
||||||
modelBuilder.Entity<AdminLogPlayer>()
|
modelBuilder.Entity<AdminLogPlayer>()
|
||||||
.HasKey(logPlayer => new {logPlayer.PlayerUserId, logPlayer.LogId, logPlayer.RoundId});
|
.HasKey(logPlayer => new {logPlayer.RoundId, logPlayer.LogId, logPlayer.PlayerUserId});
|
||||||
|
|
||||||
modelBuilder.Entity<ServerBan>()
|
modelBuilder.Entity<ServerBan>()
|
||||||
.HasIndex(p => p.PlayerUserId);
|
.HasIndex(p => p.PlayerUserId);
|
||||||
@@ -511,10 +514,11 @@ namespace Content.Server.Database
|
|||||||
[Index(nameof(Type))]
|
[Index(nameof(Type))]
|
||||||
public class AdminLog
|
public class AdminLog
|
||||||
{
|
{
|
||||||
|
[Key, ForeignKey("Round")] public int RoundId { get; set; }
|
||||||
|
|
||||||
[Key]
|
[Key]
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
[Key, ForeignKey("Round")] public int RoundId { get; set; }
|
|
||||||
public Round Round { get; set; } = default!;
|
public Round Round { get; set; } = default!;
|
||||||
|
|
||||||
[Required] public LogType Type { get; set; }
|
[Required] public LogType Type { get; set; }
|
||||||
@@ -532,12 +536,13 @@ namespace Content.Server.Database
|
|||||||
|
|
||||||
public class AdminLogPlayer
|
public class AdminLogPlayer
|
||||||
{
|
{
|
||||||
|
[Required, Key] public int RoundId { get; set; }
|
||||||
|
[Required, Key] public int LogId { get; set; }
|
||||||
|
|
||||||
[Required, Key, ForeignKey("Player")] public Guid PlayerUserId { get; set; }
|
[Required, Key, ForeignKey("Player")] public Guid PlayerUserId { get; set; }
|
||||||
public Player Player { get; set; } = default!;
|
public Player Player { get; set; } = default!;
|
||||||
|
|
||||||
[Required, Key] public int LogId { get; set; }
|
[ForeignKey("RoundId,LogId")] public AdminLog Log { get; set; } = default!;
|
||||||
[Required, Key] public int RoundId { get; set; }
|
|
||||||
[ForeignKey("LogId,RoundId")] public AdminLog Log { get; set; } = default!;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used by SS14.Admin
|
// Used by SS14.Admin
|
||||||
|
|||||||
Reference in New Issue
Block a user