Better notes and bans (#14228)
Co-authored-by: Chief-Engineer <119664036+Chief-Engineer@users.noreply.github.com>
This commit is contained in:
1770
Content.Server.Database/Migrations/Postgres/20230503001749_AdminNotesImprovement.Designer.cs
generated
Normal file
1770
Content.Server.Database/Migrations/Postgres/20230503001749_AdminNotesImprovement.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,714 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Content.Server.Database.Migrations.Postgres
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class AdminNotesImprovement : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_created_by_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_deleted_by_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_last_edited_by_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_player_user_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "user_id",
|
||||
table: "server_role_ban",
|
||||
newName: "player_user_id");
|
||||
|
||||
migrationBuilder.RenameIndex(
|
||||
name: "IX_server_role_ban_user_id",
|
||||
table: "server_role_ban",
|
||||
newName: "IX_server_role_ban_player_user_id");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "user_id",
|
||||
table: "server_ban",
|
||||
newName: "player_user_id");
|
||||
|
||||
migrationBuilder.RenameIndex(
|
||||
name: "IX_server_ban_user_id",
|
||||
table: "server_ban",
|
||||
newName: "IX_server_ban_player_user_id");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "shown_to_player",
|
||||
table: "admin_notes",
|
||||
newName: "secret");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "admin_notes",
|
||||
keyColumn: "secret",
|
||||
keyValue: false,
|
||||
column: "secret",
|
||||
value: true);
|
||||
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "hidden",
|
||||
table: "server_role_ban",
|
||||
type: "boolean",
|
||||
nullable: false,
|
||||
defaultValue: true);
|
||||
|
||||
migrationBuilder.AddColumn<DateTime>(
|
||||
name: "last_edited_at",
|
||||
table: "server_role_ban",
|
||||
type: "timestamp with time zone",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<Guid>(
|
||||
name: "last_edited_by_id",
|
||||
table: "server_role_ban",
|
||||
type: "uuid",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<TimeSpan>(
|
||||
name: "playtime_at_note",
|
||||
table: "server_role_ban",
|
||||
type: "interval",
|
||||
nullable: false,
|
||||
defaultValue: new TimeSpan(0, 0, 0, 0, 0));
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "round_id",
|
||||
table: "server_role_ban",
|
||||
type: "integer",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "severity",
|
||||
table: "server_role_ban",
|
||||
type: "integer",
|
||||
nullable: false,
|
||||
defaultValue: 2);
|
||||
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "hidden",
|
||||
table: "server_ban",
|
||||
type: "boolean",
|
||||
nullable: false,
|
||||
defaultValue: false);
|
||||
|
||||
migrationBuilder.AddColumn<DateTime>(
|
||||
name: "last_edited_at",
|
||||
table: "server_ban",
|
||||
type: "timestamp with time zone",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<Guid>(
|
||||
name: "last_edited_by_id",
|
||||
table: "server_ban",
|
||||
type: "uuid",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<TimeSpan>(
|
||||
name: "playtime_at_note",
|
||||
table: "server_ban",
|
||||
type: "interval",
|
||||
nullable: false,
|
||||
defaultValue: new TimeSpan(0, 0, 0, 0, 0));
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "round_id",
|
||||
table: "server_ban",
|
||||
type: "integer",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "severity",
|
||||
table: "server_ban",
|
||||
type: "integer",
|
||||
nullable: false,
|
||||
defaultValue: 3);
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "player_user_id",
|
||||
table: "admin_notes",
|
||||
type: "uuid",
|
||||
nullable: true,
|
||||
oldClrType: typeof(Guid),
|
||||
oldType: "uuid");
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "last_edited_by_id",
|
||||
table: "admin_notes",
|
||||
type: "uuid",
|
||||
nullable: true,
|
||||
oldClrType: typeof(Guid),
|
||||
oldType: "uuid");
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "created_by_id",
|
||||
table: "admin_notes",
|
||||
type: "uuid",
|
||||
nullable: true,
|
||||
oldClrType: typeof(Guid),
|
||||
oldType: "uuid");
|
||||
|
||||
migrationBuilder.AddColumn<DateTime>(
|
||||
name: "expiration_time",
|
||||
table: "admin_notes",
|
||||
type: "timestamp with time zone",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "severity",
|
||||
table: "admin_notes",
|
||||
type: "integer",
|
||||
nullable: false,
|
||||
defaultValue: 1);
|
||||
|
||||
migrationBuilder.AddColumn<TimeSpan>(
|
||||
name: "playtime_at_note",
|
||||
table: "admin_notes",
|
||||
type: "interval",
|
||||
nullable: false,
|
||||
defaultValue: new TimeSpan(0, 0, 0, 0, 0));
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "admin_messages",
|
||||
columns: table => new
|
||||
{
|
||||
admin_messages_id = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
round_id = table.Column<int>(type: "integer", nullable: true),
|
||||
player_user_id = table.Column<Guid>(type: "uuid", nullable: true),
|
||||
playtime_at_note = table.Column<TimeSpan>(type: "interval", nullable: false),
|
||||
message = table.Column<string>(type: "character varying(4096)", maxLength: 4096, nullable: false),
|
||||
created_by_id = table.Column<Guid>(type: "uuid", nullable: true),
|
||||
created_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
last_edited_by_id = table.Column<Guid>(type: "uuid", nullable: true),
|
||||
last_edited_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
||||
expiration_time = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
||||
deleted = table.Column<bool>(type: "boolean", nullable: false),
|
||||
deleted_by_id = table.Column<Guid>(type: "uuid", nullable: true),
|
||||
deleted_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
||||
seen = table.Column<bool>(type: "boolean", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_admin_messages", x => x.admin_messages_id);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_messages_player_created_by_id",
|
||||
column: x => x.created_by_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_messages_player_deleted_by_id",
|
||||
column: x => x.deleted_by_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_messages_player_last_edited_by_id",
|
||||
column: x => x.last_edited_by_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_messages_player_player_user_id",
|
||||
column: x => x.player_user_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_messages_round_round_id",
|
||||
column: x => x.round_id,
|
||||
principalTable: "round",
|
||||
principalColumn: "round_id");
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "admin_watchlists",
|
||||
columns: table => new
|
||||
{
|
||||
admin_watchlists_id = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
round_id = table.Column<int>(type: "integer", nullable: true),
|
||||
player_user_id = table.Column<Guid>(type: "uuid", nullable: true),
|
||||
playtime_at_note = table.Column<TimeSpan>(type: "interval", nullable: false),
|
||||
message = table.Column<string>(type: "character varying(4096)", maxLength: 4096, nullable: false),
|
||||
created_by_id = table.Column<Guid>(type: "uuid", nullable: true),
|
||||
created_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
last_edited_by_id = table.Column<Guid>(type: "uuid", nullable: true),
|
||||
last_edited_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
expiration_time = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
||||
deleted = table.Column<bool>(type: "boolean", nullable: false),
|
||||
deleted_by_id = table.Column<Guid>(type: "uuid", nullable: true),
|
||||
deleted_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_admin_watchlists", x => x.admin_watchlists_id);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_watchlists_player_created_by_id",
|
||||
column: x => x.created_by_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_watchlists_player_deleted_by_id",
|
||||
column: x => x.deleted_by_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_watchlists_player_last_edited_by_id",
|
||||
column: x => x.last_edited_by_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_watchlists_player_player_user_id",
|
||||
column: x => x.player_user_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_watchlists_round_round_id",
|
||||
column: x => x.round_id,
|
||||
principalTable: "round",
|
||||
principalColumn: "round_id");
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_server_role_ban_banning_admin",
|
||||
table: "server_role_ban",
|
||||
column: "banning_admin");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_server_role_ban_last_edited_by_id",
|
||||
table: "server_role_ban",
|
||||
column: "last_edited_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_server_role_ban_round_id",
|
||||
table: "server_role_ban",
|
||||
column: "round_id");
|
||||
|
||||
migrationBuilder.AddCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_role_ban",
|
||||
sql: "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_server_ban_banning_admin",
|
||||
table: "server_ban",
|
||||
column: "banning_admin");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_server_ban_last_edited_by_id",
|
||||
table: "server_ban",
|
||||
column: "last_edited_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_server_ban_round_id",
|
||||
table: "server_ban",
|
||||
column: "round_id");
|
||||
|
||||
migrationBuilder.AddCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_ban",
|
||||
sql: "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_messages_created_by_id",
|
||||
table: "admin_messages",
|
||||
column: "created_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_messages_deleted_by_id",
|
||||
table: "admin_messages",
|
||||
column: "deleted_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_messages_last_edited_by_id",
|
||||
table: "admin_messages",
|
||||
column: "last_edited_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_messages_player_user_id",
|
||||
table: "admin_messages",
|
||||
column: "player_user_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_messages_round_id",
|
||||
table: "admin_messages",
|
||||
column: "round_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_watchlists_created_by_id",
|
||||
table: "admin_watchlists",
|
||||
column: "created_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_watchlists_deleted_by_id",
|
||||
table: "admin_watchlists",
|
||||
column: "deleted_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_watchlists_last_edited_by_id",
|
||||
table: "admin_watchlists",
|
||||
column: "last_edited_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_watchlists_player_user_id",
|
||||
table: "admin_watchlists",
|
||||
column: "player_user_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_watchlists_round_id",
|
||||
table: "admin_watchlists",
|
||||
column: "round_id");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_created_by_id",
|
||||
table: "admin_notes",
|
||||
column: "created_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_deleted_by_id",
|
||||
table: "admin_notes",
|
||||
column: "deleted_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_last_edited_by_id",
|
||||
table: "admin_notes",
|
||||
column: "last_edited_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_player_user_id",
|
||||
table: "admin_notes",
|
||||
column: "player_user_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_server_ban_player_banning_admin",
|
||||
table: "server_ban",
|
||||
column: "banning_admin",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_server_ban_player_last_edited_by_id",
|
||||
table: "server_ban",
|
||||
column: "last_edited_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_server_ban_round_round_id",
|
||||
table: "server_ban",
|
||||
column: "round_id",
|
||||
principalTable: "round",
|
||||
principalColumn: "round_id");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_server_role_ban_player_banning_admin",
|
||||
table: "server_role_ban",
|
||||
column: "banning_admin",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_server_role_ban_player_last_edited_by_id",
|
||||
table: "server_role_ban",
|
||||
column: "last_edited_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_server_role_ban_round_round_id",
|
||||
table: "server_role_ban",
|
||||
column: "round_id",
|
||||
principalTable: "round",
|
||||
principalColumn: "round_id");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_created_by_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_deleted_by_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_last_edited_by_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_player_user_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_server_ban_player_banning_admin",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_server_ban_player_last_edited_by_id",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_server_ban_round_round_id",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_server_role_ban_player_banning_admin",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_server_role_ban_player_last_edited_by_id",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_server_role_ban_round_round_id",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "admin_messages");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "admin_watchlists");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_server_role_ban_banning_admin",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_server_role_ban_last_edited_by_id",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_server_role_ban_round_id",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_server_ban_banning_admin",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_server_ban_last_edited_by_id",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_server_ban_round_id",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "hidden",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "last_edited_at",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "last_edited_by_id",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "playtime_at_note",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "round_id",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "severity",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "hidden",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "last_edited_at",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "last_edited_by_id",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "playtime_at_note",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "round_id",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "severity",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "expiration_time",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "severity",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "playtime_at_note",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "player_user_id",
|
||||
table: "server_role_ban",
|
||||
newName: "user_id");
|
||||
|
||||
migrationBuilder.RenameIndex(
|
||||
name: "IX_server_role_ban_player_user_id",
|
||||
table: "server_role_ban",
|
||||
newName: "IX_server_role_ban_user_id");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "player_user_id",
|
||||
table: "server_ban",
|
||||
newName: "user_id");
|
||||
|
||||
migrationBuilder.RenameIndex(
|
||||
name: "IX_server_ban_player_user_id",
|
||||
table: "server_ban",
|
||||
newName: "IX_server_ban_user_id");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "secret",
|
||||
table: "admin_notes",
|
||||
newName: "shown_to_player");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "admin_notes",
|
||||
keyColumn: "shown_to_player",
|
||||
keyValue: true,
|
||||
column: "shown_to_player",
|
||||
value: false);
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "player_user_id",
|
||||
table: "admin_notes",
|
||||
type: "uuid",
|
||||
nullable: false,
|
||||
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
|
||||
oldClrType: typeof(Guid),
|
||||
oldType: "uuid",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "last_edited_by_id",
|
||||
table: "admin_notes",
|
||||
type: "uuid",
|
||||
nullable: false,
|
||||
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
|
||||
oldClrType: typeof(Guid),
|
||||
oldType: "uuid",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "created_by_id",
|
||||
table: "admin_notes",
|
||||
type: "uuid",
|
||||
nullable: false,
|
||||
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
|
||||
oldClrType: typeof(Guid),
|
||||
oldType: "uuid",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AddCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_role_ban",
|
||||
sql: "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
|
||||
migrationBuilder.AddCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_ban",
|
||||
sql: "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_created_by_id",
|
||||
table: "admin_notes",
|
||||
column: "created_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_deleted_by_id",
|
||||
table: "admin_notes",
|
||||
column: "deleted_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_last_edited_by_id",
|
||||
table: "admin_notes",
|
||||
column: "last_edited_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_player_user_id",
|
||||
table: "admin_notes",
|
||||
column: "player_user_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
// <auto-generated />
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Text.Json;
|
||||
@@ -188,12 +188,12 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
b.ToTable("admin_log_player", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.AdminNote", b =>
|
||||
modelBuilder.Entity("Content.Server.Database.AdminMessage", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("admin_notes_id");
|
||||
.HasColumnName("admin_messages_id");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
@@ -201,7 +201,7 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("created_at");
|
||||
|
||||
b.Property<Guid>("CreatedById")
|
||||
b.Property<Guid?>("CreatedById")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("created_by_id");
|
||||
|
||||
@@ -217,11 +217,15 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("deleted_by_id");
|
||||
|
||||
b.Property<DateTime>("LastEditedAt")
|
||||
b.Property<DateTime?>("ExpirationTime")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("expiration_time");
|
||||
|
||||
b.Property<DateTime?>("LastEditedAt")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("last_edited_at");
|
||||
|
||||
b.Property<Guid>("LastEditedById")
|
||||
b.Property<Guid?>("LastEditedById")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("last_edited_by_id");
|
||||
|
||||
@@ -231,17 +235,107 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
.HasColumnType("character varying(4096)")
|
||||
.HasColumnName("message");
|
||||
|
||||
b.Property<Guid>("PlayerUserId")
|
||||
b.Property<Guid?>("PlayerUserId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("player_user_id");
|
||||
|
||||
b.Property<TimeSpan>("PlaytimeAtNote")
|
||||
.HasColumnType("interval")
|
||||
.HasColumnName("playtime_at_note");
|
||||
|
||||
b.Property<int?>("RoundId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("round_id");
|
||||
|
||||
b.Property<bool>("ShownToPlayer")
|
||||
b.Property<bool>("Seen")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("shown_to_player");
|
||||
.HasColumnName("seen");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("PK_admin_messages");
|
||||
|
||||
b.HasIndex("CreatedById");
|
||||
|
||||
b.HasIndex("DeletedById");
|
||||
|
||||
b.HasIndex("LastEditedById");
|
||||
|
||||
b.HasIndex("PlayerUserId")
|
||||
.HasDatabaseName("IX_admin_messages_player_user_id");
|
||||
|
||||
b.HasIndex("RoundId")
|
||||
.HasDatabaseName("IX_admin_messages_round_id");
|
||||
|
||||
b.ToTable("admin_messages", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.AdminNote", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("admin_notes_id");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<DateTime>("CreatedAt")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("created_at");
|
||||
|
||||
b.Property<Guid?>("CreatedById")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("created_by_id");
|
||||
|
||||
b.Property<bool>("Deleted")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("deleted");
|
||||
|
||||
b.Property<DateTime?>("DeletedAt")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("deleted_at");
|
||||
|
||||
b.Property<Guid?>("DeletedById")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("deleted_by_id");
|
||||
|
||||
b.Property<DateTime?>("ExpirationTime")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("expiration_time");
|
||||
|
||||
b.Property<DateTime?>("LastEditedAt")
|
||||
.IsRequired()
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("last_edited_at");
|
||||
|
||||
b.Property<Guid?>("LastEditedById")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("last_edited_by_id");
|
||||
|
||||
b.Property<string>("Message")
|
||||
.IsRequired()
|
||||
.HasMaxLength(4096)
|
||||
.HasColumnType("character varying(4096)")
|
||||
.HasColumnName("message");
|
||||
|
||||
b.Property<int>("Severity")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("severity");
|
||||
|
||||
b.Property<Guid?>("PlayerUserId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("player_user_id");
|
||||
|
||||
b.Property<TimeSpan>("PlaytimeAtNote")
|
||||
.HasColumnType("interval")
|
||||
.HasColumnName("playtime_at_note");
|
||||
|
||||
b.Property<int?>("RoundId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("round_id");
|
||||
|
||||
b.Property<bool>("Secret")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("secret");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("PK_admin_notes");
|
||||
@@ -310,6 +404,84 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
b.ToTable("admin_rank_flag", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("admin_watchlists_id");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<DateTime>("CreatedAt")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("created_at");
|
||||
|
||||
b.Property<Guid?>("CreatedById")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("created_by_id");
|
||||
|
||||
b.Property<bool>("Deleted")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("deleted");
|
||||
|
||||
b.Property<DateTime?>("DeletedAt")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("deleted_at");
|
||||
|
||||
b.Property<Guid?>("DeletedById")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("deleted_by_id");
|
||||
|
||||
b.Property<DateTime?>("ExpirationTime")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("expiration_time");
|
||||
|
||||
b.Property<DateTime?>("LastEditedAt")
|
||||
.IsRequired()
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("last_edited_at");
|
||||
|
||||
b.Property<Guid?>("LastEditedById")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("last_edited_by_id");
|
||||
|
||||
b.Property<string>("Message")
|
||||
.IsRequired()
|
||||
.HasMaxLength(4096)
|
||||
.HasColumnType("character varying(4096)")
|
||||
.HasColumnName("message");
|
||||
|
||||
b.Property<Guid?>("PlayerUserId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("player_user_id");
|
||||
|
||||
b.Property<TimeSpan>("PlaytimeAtNote")
|
||||
.HasColumnType("interval")
|
||||
.HasColumnName("playtime_at_note");
|
||||
|
||||
b.Property<int?>("RoundId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("round_id");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("PK_admin_watchlists");
|
||||
|
||||
b.HasIndex("CreatedById");
|
||||
|
||||
b.HasIndex("DeletedById");
|
||||
|
||||
b.HasIndex("LastEditedById");
|
||||
|
||||
b.HasIndex("PlayerUserId")
|
||||
.HasDatabaseName("IX_admin_watchlists_player_user_id");
|
||||
|
||||
b.HasIndex("RoundId")
|
||||
.HasDatabaseName("IX_admin_watchlists_round_id");
|
||||
|
||||
b.ToTable("admin_watchlists", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.Antag", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
@@ -753,27 +925,59 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
.HasColumnType("bytea")
|
||||
.HasColumnName("hwid");
|
||||
|
||||
b.Property<bool>("Hidden")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("hidden");
|
||||
|
||||
b.Property<DateTime?>("LastEditedAt")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("last_edited_at");
|
||||
|
||||
b.Property<Guid?>("LastEditedById")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("last_edited_by_id");
|
||||
|
||||
b.Property<Guid?>("PlayerUserId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("player_user_id");
|
||||
|
||||
b.Property<TimeSpan>("PlaytimeAtNote")
|
||||
.HasColumnType("interval")
|
||||
.HasColumnName("playtime_at_note");
|
||||
|
||||
b.Property<string>("Reason")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("reason");
|
||||
|
||||
b.Property<Guid?>("UserId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("user_id");
|
||||
b.Property<int?>("RoundId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("round_id");
|
||||
|
||||
b.Property<int>("Severity")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("severity");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("PK_server_ban");
|
||||
|
||||
b.HasIndex("Address");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
b.HasIndex("BanningAdmin");
|
||||
|
||||
b.HasIndex("LastEditedById");
|
||||
|
||||
b.HasIndex("PlayerUserId")
|
||||
.HasDatabaseName("IX_server_ban_player_user_id");
|
||||
|
||||
b.HasIndex("RoundId")
|
||||
.HasDatabaseName("IX_server_ban_round_id");
|
||||
|
||||
b.ToTable("server_ban", null, t =>
|
||||
{
|
||||
t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address");
|
||||
|
||||
t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -855,6 +1059,26 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
.HasColumnType("bytea")
|
||||
.HasColumnName("hwid");
|
||||
|
||||
b.Property<bool>("Hidden")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("hidden");
|
||||
|
||||
b.Property<DateTime?>("LastEditedAt")
|
||||
.HasColumnType("timestamp with time zone")
|
||||
.HasColumnName("last_edited_at");
|
||||
|
||||
b.Property<Guid?>("LastEditedById")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("last_edited_by_id");
|
||||
|
||||
b.Property<Guid?>("PlayerUserId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("player_user_id");
|
||||
|
||||
b.Property<TimeSpan>("PlaytimeAtNote")
|
||||
.HasColumnType("interval")
|
||||
.HasColumnName("playtime_at_note");
|
||||
|
||||
b.Property<string>("Reason")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
@@ -865,22 +1089,34 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("role_id");
|
||||
|
||||
b.Property<Guid?>("UserId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("user_id");
|
||||
b.Property<int?>("RoundId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("round_id");
|
||||
|
||||
b.Property<int>("Severity")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("severity");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("PK_server_role_ban");
|
||||
|
||||
b.HasIndex("Address");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
b.HasIndex("BanningAdmin");
|
||||
|
||||
b.HasIndex("LastEditedById");
|
||||
|
||||
b.HasIndex("PlayerUserId")
|
||||
.HasDatabaseName("IX_server_role_ban_player_user_id");
|
||||
|
||||
b.HasIndex("RoundId")
|
||||
.HasDatabaseName("IX_server_role_ban_round_id");
|
||||
|
||||
b.ToTable("server_role_ban", null, t =>
|
||||
{
|
||||
t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address");
|
||||
|
||||
t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1101,36 +1337,80 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
b.Navigation("Player");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.AdminMessage", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.Player", "CreatedBy")
|
||||
.WithMany("AdminMessagesCreated")
|
||||
.HasForeignKey("CreatedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_messages_player_created_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "DeletedBy")
|
||||
.WithMany("AdminMessagesDeleted")
|
||||
.HasForeignKey("DeletedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_messages_player_deleted_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "LastEditedBy")
|
||||
.WithMany("AdminMessagesLastEdited")
|
||||
.HasForeignKey("LastEditedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_messages_player_last_edited_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "Player")
|
||||
.WithMany("AdminMessagesReceived")
|
||||
.HasForeignKey("PlayerUserId")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_messages_player_player_user_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Round", "Round")
|
||||
.WithMany()
|
||||
.HasForeignKey("RoundId")
|
||||
.HasConstraintName("FK_admin_messages_round_round_id");
|
||||
|
||||
b.Navigation("CreatedBy");
|
||||
|
||||
b.Navigation("DeletedBy");
|
||||
|
||||
b.Navigation("LastEditedBy");
|
||||
|
||||
b.Navigation("Player");
|
||||
|
||||
b.Navigation("Round");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.AdminNote", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.Player", "CreatedBy")
|
||||
.WithMany("AdminNotesCreated")
|
||||
.HasForeignKey("CreatedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_notes_player_created_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "DeletedBy")
|
||||
.WithMany("AdminNotesDeleted")
|
||||
.HasForeignKey("DeletedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_notes_player_deleted_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "LastEditedBy")
|
||||
.WithMany("AdminNotesLastEdited")
|
||||
.HasForeignKey("LastEditedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_notes_player_last_edited_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "Player")
|
||||
.WithMany("AdminNotesReceived")
|
||||
.HasForeignKey("PlayerUserId")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_notes_player_player_user_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Round", "Round")
|
||||
@@ -1161,6 +1441,52 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
b.Navigation("Rank");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.Player", "CreatedBy")
|
||||
.WithMany("AdminWatchlistsCreated")
|
||||
.HasForeignKey("CreatedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_watchlists_player_created_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "DeletedBy")
|
||||
.WithMany("AdminWatchlistsDeleted")
|
||||
.HasForeignKey("DeletedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_watchlists_player_deleted_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "LastEditedBy")
|
||||
.WithMany("AdminWatchlistsLastEdited")
|
||||
.HasForeignKey("LastEditedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_watchlists_player_last_edited_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "Player")
|
||||
.WithMany("AdminWatchlistsReceived")
|
||||
.HasForeignKey("PlayerUserId")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_watchlists_player_player_user_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Round", "Round")
|
||||
.WithMany()
|
||||
.HasForeignKey("RoundId")
|
||||
.HasConstraintName("FK_admin_watchlists_round_round_id");
|
||||
|
||||
b.Navigation("CreatedBy");
|
||||
|
||||
b.Navigation("DeletedBy");
|
||||
|
||||
b.Navigation("LastEditedBy");
|
||||
|
||||
b.Navigation("Player");
|
||||
|
||||
b.Navigation("Round");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.Antag", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.Profile", "Profile")
|
||||
@@ -1209,6 +1535,34 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
b.Navigation("Server");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.ServerBan", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.Player", "CreatedBy")
|
||||
.WithMany("AdminServerBansCreated")
|
||||
.HasForeignKey("BanningAdmin")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_server_ban_player_banning_admin");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "LastEditedBy")
|
||||
.WithMany("AdminServerBansLastEdited")
|
||||
.HasForeignKey("LastEditedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_server_ban_player_last_edited_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Round", "Round")
|
||||
.WithMany()
|
||||
.HasForeignKey("RoundId")
|
||||
.HasConstraintName("FK_server_ban_round_round_id");
|
||||
|
||||
b.Navigation("CreatedBy");
|
||||
|
||||
b.Navigation("LastEditedBy");
|
||||
|
||||
b.Navigation("Round");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.ServerBanHit", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.ServerBan", "Ban")
|
||||
@@ -1230,6 +1584,34 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
b.Navigation("Connection");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.Player", "CreatedBy")
|
||||
.WithMany("AdminServerRoleBansCreated")
|
||||
.HasForeignKey("BanningAdmin")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_server_role_ban_player_banning_admin");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "LastEditedBy")
|
||||
.WithMany("AdminServerRoleBansLastEdited")
|
||||
.HasForeignKey("LastEditedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_server_role_ban_player_last_edited_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Round", "Round")
|
||||
.WithMany()
|
||||
.HasForeignKey("RoundId")
|
||||
.HasConstraintName("FK_server_role_ban_round_round_id");
|
||||
|
||||
b.Navigation("CreatedBy");
|
||||
|
||||
b.Navigation("LastEditedBy");
|
||||
|
||||
b.Navigation("Round");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.ServerRoleBan", "Ban")
|
||||
@@ -1311,6 +1693,14 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
{
|
||||
b.Navigation("AdminLogs");
|
||||
|
||||
b.Navigation("AdminMessagesCreated");
|
||||
|
||||
b.Navigation("AdminMessagesDeleted");
|
||||
|
||||
b.Navigation("AdminMessagesLastEdited");
|
||||
|
||||
b.Navigation("AdminMessagesReceived");
|
||||
|
||||
b.Navigation("AdminNotesCreated");
|
||||
|
||||
b.Navigation("AdminNotesDeleted");
|
||||
@@ -1318,6 +1708,22 @@ namespace Content.Server.Database.Migrations.Postgres
|
||||
b.Navigation("AdminNotesLastEdited");
|
||||
|
||||
b.Navigation("AdminNotesReceived");
|
||||
|
||||
b.Navigation("AdminServerBansCreated");
|
||||
|
||||
b.Navigation("AdminServerBansLastEdited");
|
||||
|
||||
b.Navigation("AdminServerRoleBansCreated");
|
||||
|
||||
b.Navigation("AdminServerRoleBansLastEdited");
|
||||
|
||||
b.Navigation("AdminWatchlistsCreated");
|
||||
|
||||
b.Navigation("AdminWatchlistsDeleted");
|
||||
|
||||
b.Navigation("AdminWatchlistsLastEdited");
|
||||
|
||||
b.Navigation("AdminWatchlistsReceived");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.Preference", b =>
|
||||
|
||||
1698
Content.Server.Database/Migrations/Sqlite/20230503001739_AdminNotesImprovement.Designer.cs
generated
Normal file
1698
Content.Server.Database/Migrations/Sqlite/20230503001739_AdminNotesImprovement.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,713 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Content.Server.Database.Migrations.Sqlite
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class AdminNotesImprovement : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_created_by_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_deleted_by_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_last_edited_by_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_player_user_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "user_id",
|
||||
table: "server_role_ban",
|
||||
newName: "player_user_id");
|
||||
|
||||
migrationBuilder.RenameIndex(
|
||||
name: "IX_server_role_ban_user_id",
|
||||
table: "server_role_ban",
|
||||
newName: "IX_server_role_ban_player_user_id");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "user_id",
|
||||
table: "server_ban",
|
||||
newName: "player_user_id");
|
||||
|
||||
migrationBuilder.RenameIndex(
|
||||
name: "IX_server_ban_user_id",
|
||||
table: "server_ban",
|
||||
newName: "IX_server_ban_player_user_id");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "shown_to_player",
|
||||
table: "admin_notes",
|
||||
newName: "secret");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "admin_notes",
|
||||
keyColumn: "secret",
|
||||
keyValue: false,
|
||||
column: "secret",
|
||||
value: true);
|
||||
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "hidden",
|
||||
table: "server_role_ban",
|
||||
type: "INTEGER",
|
||||
nullable: false,
|
||||
defaultValue: false);
|
||||
|
||||
migrationBuilder.AddColumn<DateTime>(
|
||||
name: "last_edited_at",
|
||||
table: "server_role_ban",
|
||||
type: "TEXT",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<Guid>(
|
||||
name: "last_edited_by_id",
|
||||
table: "server_role_ban",
|
||||
type: "TEXT",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<TimeSpan>(
|
||||
name: "playtime_at_note",
|
||||
table: "server_role_ban",
|
||||
type: "TEXT",
|
||||
nullable: false,
|
||||
defaultValue: new TimeSpan(0, 0, 0, 0, 0));
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "round_id",
|
||||
table: "server_role_ban",
|
||||
type: "INTEGER",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "severity",
|
||||
table: "server_role_ban",
|
||||
type: "INTEGER",
|
||||
nullable: false,
|
||||
defaultValue: 2);
|
||||
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "hidden",
|
||||
table: "server_ban",
|
||||
type: "INTEGER",
|
||||
nullable: false,
|
||||
defaultValue: false);
|
||||
|
||||
migrationBuilder.AddColumn<DateTime>(
|
||||
name: "last_edited_at",
|
||||
table: "server_ban",
|
||||
type: "TEXT",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<Guid>(
|
||||
name: "last_edited_by_id",
|
||||
table: "server_ban",
|
||||
type: "TEXT",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<TimeSpan>(
|
||||
name: "playtime_at_note",
|
||||
table: "server_ban",
|
||||
type: "TEXT",
|
||||
nullable: false,
|
||||
defaultValue: new TimeSpan(0, 0, 0, 0, 0));
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "round_id",
|
||||
table: "server_ban",
|
||||
type: "INTEGER",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "severity",
|
||||
table: "server_ban",
|
||||
type: "INTEGER",
|
||||
nullable: false,
|
||||
defaultValue: 3);
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "player_user_id",
|
||||
table: "admin_notes",
|
||||
type: "TEXT",
|
||||
nullable: true,
|
||||
oldClrType: typeof(Guid),
|
||||
oldType: "TEXT");
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "last_edited_by_id",
|
||||
table: "admin_notes",
|
||||
type: "TEXT",
|
||||
nullable: true,
|
||||
oldClrType: typeof(Guid),
|
||||
oldType: "TEXT");
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "created_by_id",
|
||||
table: "admin_notes",
|
||||
type: "TEXT",
|
||||
nullable: true,
|
||||
oldClrType: typeof(Guid),
|
||||
oldType: "TEXT");
|
||||
|
||||
migrationBuilder.AddColumn<DateTime>(
|
||||
name: "expiration_time",
|
||||
table: "admin_notes",
|
||||
type: "TEXT",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "severity",
|
||||
table: "admin_notes",
|
||||
type: "INTEGER",
|
||||
nullable: false,
|
||||
defaultValue: 1);
|
||||
|
||||
migrationBuilder.AddColumn<TimeSpan>(
|
||||
name: "playtime_at_note",
|
||||
table: "admin_notes",
|
||||
type: "TEXT",
|
||||
nullable: false,
|
||||
defaultValue: new TimeSpan(0, 0, 0, 0, 0));
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "admin_messages",
|
||||
columns: table => new
|
||||
{
|
||||
admin_messages_id = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
round_id = table.Column<int>(type: "INTEGER", nullable: true),
|
||||
player_user_id = table.Column<Guid>(type: "TEXT", nullable: true),
|
||||
playtime_at_note = table.Column<TimeSpan>(type: "TEXT", nullable: false),
|
||||
message = table.Column<string>(type: "TEXT", maxLength: 4096, nullable: false),
|
||||
created_by_id = table.Column<Guid>(type: "TEXT", nullable: true),
|
||||
created_at = table.Column<DateTime>(type: "TEXT", nullable: false),
|
||||
last_edited_by_id = table.Column<Guid>(type: "TEXT", nullable: true),
|
||||
last_edited_at = table.Column<DateTime>(type: "TEXT", nullable: true),
|
||||
expiration_time = table.Column<DateTime>(type: "TEXT", nullable: true),
|
||||
deleted = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
deleted_by_id = table.Column<Guid>(type: "TEXT", nullable: true),
|
||||
deleted_at = table.Column<DateTime>(type: "TEXT", nullable: true),
|
||||
seen = table.Column<bool>(type: "INTEGER", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_admin_messages", x => x.admin_messages_id);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_messages_player_created_by_id",
|
||||
column: x => x.created_by_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_messages_player_deleted_by_id",
|
||||
column: x => x.deleted_by_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_messages_player_last_edited_by_id",
|
||||
column: x => x.last_edited_by_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_messages_player_player_user_id",
|
||||
column: x => x.player_user_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_messages_round_round_id",
|
||||
column: x => x.round_id,
|
||||
principalTable: "round",
|
||||
principalColumn: "round_id");
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "admin_watchlists",
|
||||
columns: table => new
|
||||
{
|
||||
admin_watchlists_id = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
round_id = table.Column<int>(type: "INTEGER", nullable: true),
|
||||
player_user_id = table.Column<Guid>(type: "TEXT", nullable: true),
|
||||
playtime_at_note = table.Column<TimeSpan>(type: "TEXT", nullable: false),
|
||||
message = table.Column<string>(type: "TEXT", maxLength: 4096, nullable: false),
|
||||
created_by_id = table.Column<Guid>(type: "TEXT", nullable: true),
|
||||
created_at = table.Column<DateTime>(type: "TEXT", nullable: false),
|
||||
last_edited_by_id = table.Column<Guid>(type: "TEXT", nullable: true),
|
||||
last_edited_at = table.Column<DateTime>(type: "TEXT", nullable: false),
|
||||
expiration_time = table.Column<DateTime>(type: "TEXT", nullable: true),
|
||||
deleted = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
deleted_by_id = table.Column<Guid>(type: "TEXT", nullable: true),
|
||||
deleted_at = table.Column<DateTime>(type: "TEXT", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_admin_watchlists", x => x.admin_watchlists_id);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_watchlists_player_created_by_id",
|
||||
column: x => x.created_by_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_watchlists_player_deleted_by_id",
|
||||
column: x => x.deleted_by_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_watchlists_player_last_edited_by_id",
|
||||
column: x => x.last_edited_by_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_watchlists_player_player_user_id",
|
||||
column: x => x.player_user_id,
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
table.ForeignKey(
|
||||
name: "FK_admin_watchlists_round_round_id",
|
||||
column: x => x.round_id,
|
||||
principalTable: "round",
|
||||
principalColumn: "round_id");
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_server_role_ban_banning_admin",
|
||||
table: "server_role_ban",
|
||||
column: "banning_admin");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_server_role_ban_last_edited_by_id",
|
||||
table: "server_role_ban",
|
||||
column: "last_edited_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_server_role_ban_round_id",
|
||||
table: "server_role_ban",
|
||||
column: "round_id");
|
||||
|
||||
migrationBuilder.AddCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_role_ban",
|
||||
sql: "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_server_ban_banning_admin",
|
||||
table: "server_ban",
|
||||
column: "banning_admin");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_server_ban_last_edited_by_id",
|
||||
table: "server_ban",
|
||||
column: "last_edited_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_server_ban_round_id",
|
||||
table: "server_ban",
|
||||
column: "round_id");
|
||||
|
||||
migrationBuilder.AddCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_ban",
|
||||
sql: "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_messages_created_by_id",
|
||||
table: "admin_messages",
|
||||
column: "created_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_messages_deleted_by_id",
|
||||
table: "admin_messages",
|
||||
column: "deleted_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_messages_last_edited_by_id",
|
||||
table: "admin_messages",
|
||||
column: "last_edited_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_messages_player_user_id",
|
||||
table: "admin_messages",
|
||||
column: "player_user_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_messages_round_id",
|
||||
table: "admin_messages",
|
||||
column: "round_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_watchlists_created_by_id",
|
||||
table: "admin_watchlists",
|
||||
column: "created_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_watchlists_deleted_by_id",
|
||||
table: "admin_watchlists",
|
||||
column: "deleted_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_watchlists_last_edited_by_id",
|
||||
table: "admin_watchlists",
|
||||
column: "last_edited_by_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_watchlists_player_user_id",
|
||||
table: "admin_watchlists",
|
||||
column: "player_user_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_admin_watchlists_round_id",
|
||||
table: "admin_watchlists",
|
||||
column: "round_id");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_created_by_id",
|
||||
table: "admin_notes",
|
||||
column: "created_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_deleted_by_id",
|
||||
table: "admin_notes",
|
||||
column: "deleted_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_last_edited_by_id",
|
||||
table: "admin_notes",
|
||||
column: "last_edited_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_player_user_id",
|
||||
table: "admin_notes",
|
||||
column: "player_user_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_server_ban_player_banning_admin",
|
||||
table: "server_ban",
|
||||
column: "banning_admin",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_server_ban_player_last_edited_by_id",
|
||||
table: "server_ban",
|
||||
column: "last_edited_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_server_ban_round_round_id",
|
||||
table: "server_ban",
|
||||
column: "round_id",
|
||||
principalTable: "round",
|
||||
principalColumn: "round_id");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_server_role_ban_player_banning_admin",
|
||||
table: "server_role_ban",
|
||||
column: "banning_admin",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_server_role_ban_player_last_edited_by_id",
|
||||
table: "server_role_ban",
|
||||
column: "last_edited_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.SetNull);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_server_role_ban_round_round_id",
|
||||
table: "server_role_ban",
|
||||
column: "round_id",
|
||||
principalTable: "round",
|
||||
principalColumn: "round_id");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_created_by_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_deleted_by_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_last_edited_by_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_admin_notes_player_player_user_id",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_server_ban_player_banning_admin",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_server_ban_player_last_edited_by_id",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_server_ban_round_round_id",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_server_role_ban_player_banning_admin",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_server_role_ban_player_last_edited_by_id",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_server_role_ban_round_round_id",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "admin_messages");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "admin_watchlists");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_server_role_ban_banning_admin",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_server_role_ban_last_edited_by_id",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_server_role_ban_round_id",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_server_ban_banning_admin",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_server_ban_last_edited_by_id",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_server_ban_round_id",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "hidden",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "last_edited_at",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "last_edited_by_id",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "playtime_at_note",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "round_id",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "severity",
|
||||
table: "server_role_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "hidden",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "last_edited_at",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "last_edited_by_id",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "playtime_at_note",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "round_id",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "severity",
|
||||
table: "server_ban");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "expiration_time",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "severity",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "playtime_at_note",
|
||||
table: "admin_notes");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "player_user_id",
|
||||
table: "server_role_ban",
|
||||
newName: "user_id");
|
||||
|
||||
migrationBuilder.RenameIndex(
|
||||
name: "IX_server_role_ban_player_user_id",
|
||||
table: "server_role_ban",
|
||||
newName: "IX_server_role_ban_user_id");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "player_user_id",
|
||||
table: "server_ban",
|
||||
newName: "user_id");
|
||||
|
||||
migrationBuilder.RenameIndex(
|
||||
name: "IX_server_ban_player_user_id",
|
||||
table: "server_ban",
|
||||
newName: "IX_server_ban_user_id");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "secret",
|
||||
table: "admin_notes",
|
||||
newName: "shown_to_player");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "admin_notes",
|
||||
keyColumn: "shown_to_player",
|
||||
keyValue: true,
|
||||
column: "shown_to_player",
|
||||
value: false);
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "player_user_id",
|
||||
table: "admin_notes",
|
||||
type: "TEXT",
|
||||
nullable: false,
|
||||
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
|
||||
oldClrType: typeof(Guid),
|
||||
oldType: "TEXT",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "last_edited_by_id",
|
||||
table: "admin_notes",
|
||||
type: "TEXT",
|
||||
nullable: false,
|
||||
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
|
||||
oldClrType: typeof(Guid),
|
||||
oldType: "TEXT",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "created_by_id",
|
||||
table: "admin_notes",
|
||||
type: "TEXT",
|
||||
nullable: false,
|
||||
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
|
||||
oldClrType: typeof(Guid),
|
||||
oldType: "TEXT",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AddCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_role_ban",
|
||||
sql: "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
|
||||
migrationBuilder.AddCheckConstraint(
|
||||
name: "HaveEitherAddressOrUserIdOrHWId",
|
||||
table: "server_ban",
|
||||
sql: "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_created_by_id",
|
||||
table: "admin_notes",
|
||||
column: "created_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_deleted_by_id",
|
||||
table: "admin_notes",
|
||||
column: "deleted_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_last_edited_by_id",
|
||||
table: "admin_notes",
|
||||
column: "last_edited_by_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_admin_notes_player_player_user_id",
|
||||
table: "admin_notes",
|
||||
column: "player_user_id",
|
||||
principalTable: "player",
|
||||
principalColumn: "user_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
// <auto-generated />
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using Content.Server.Database;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
@@ -170,18 +170,18 @@ namespace Content.Server.Database.Migrations.Sqlite
|
||||
b.ToTable("admin_log_player", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.AdminNote", b =>
|
||||
modelBuilder.Entity("Content.Server.Database.AdminMessage", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("admin_notes_id");
|
||||
.HasColumnName("admin_messages_id");
|
||||
|
||||
b.Property<DateTime>("CreatedAt")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("created_at");
|
||||
|
||||
b.Property<Guid>("CreatedById")
|
||||
b.Property<Guid?>("CreatedById")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("created_by_id");
|
||||
|
||||
@@ -197,11 +197,15 @@ namespace Content.Server.Database.Migrations.Sqlite
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("deleted_by_id");
|
||||
|
||||
b.Property<DateTime>("LastEditedAt")
|
||||
b.Property<DateTime?>("ExpirationTime")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("expiration_time");
|
||||
|
||||
b.Property<DateTime?>("LastEditedAt")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("last_edited_at");
|
||||
|
||||
b.Property<Guid>("LastEditedById")
|
||||
b.Property<Guid?>("LastEditedById")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("last_edited_by_id");
|
||||
|
||||
@@ -211,17 +215,105 @@ namespace Content.Server.Database.Migrations.Sqlite
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("message");
|
||||
|
||||
b.Property<Guid>("PlayerUserId")
|
||||
b.Property<Guid?>("PlayerUserId")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("player_user_id");
|
||||
|
||||
b.Property<TimeSpan>("PlaytimeAtNote")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("playtime_at_note");
|
||||
|
||||
b.Property<int?>("RoundId")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("round_id");
|
||||
|
||||
b.Property<bool>("ShownToPlayer")
|
||||
b.Property<bool>("Seen")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("shown_to_player");
|
||||
.HasColumnName("seen");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("PK_admin_messages");
|
||||
|
||||
b.HasIndex("CreatedById");
|
||||
|
||||
b.HasIndex("DeletedById");
|
||||
|
||||
b.HasIndex("LastEditedById");
|
||||
|
||||
b.HasIndex("PlayerUserId")
|
||||
.HasDatabaseName("IX_admin_messages_player_user_id");
|
||||
|
||||
b.HasIndex("RoundId")
|
||||
.HasDatabaseName("IX_admin_messages_round_id");
|
||||
|
||||
b.ToTable("admin_messages", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.AdminNote", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("admin_notes_id");
|
||||
|
||||
b.Property<DateTime>("CreatedAt")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("created_at");
|
||||
|
||||
b.Property<Guid?>("CreatedById")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("created_by_id");
|
||||
|
||||
b.Property<bool>("Deleted")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("deleted");
|
||||
|
||||
b.Property<DateTime?>("DeletedAt")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("deleted_at");
|
||||
|
||||
b.Property<Guid?>("DeletedById")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("deleted_by_id");
|
||||
|
||||
b.Property<DateTime?>("ExpirationTime")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("expiration_time");
|
||||
|
||||
b.Property<DateTime?>("LastEditedAt")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("last_edited_at");
|
||||
|
||||
b.Property<Guid?>("LastEditedById")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("last_edited_by_id");
|
||||
|
||||
b.Property<string>("Message")
|
||||
.IsRequired()
|
||||
.HasMaxLength(4096)
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("message");
|
||||
|
||||
b.Property<int>("Severity")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("severity");
|
||||
|
||||
b.Property<Guid?>("PlayerUserId")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("player_user_id");
|
||||
|
||||
b.Property<TimeSpan>("PlaytimeAtNote")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("playtime_at_note");
|
||||
|
||||
b.Property<int?>("RoundId")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("round_id");
|
||||
|
||||
b.Property<bool>("Secret")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("secret");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("PK_admin_notes");
|
||||
@@ -286,6 +378,82 @@ namespace Content.Server.Database.Migrations.Sqlite
|
||||
b.ToTable("admin_rank_flag", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("admin_watchlists_id");
|
||||
|
||||
b.Property<DateTime>("CreatedAt")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("created_at");
|
||||
|
||||
b.Property<Guid?>("CreatedById")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("created_by_id");
|
||||
|
||||
b.Property<bool>("Deleted")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("deleted");
|
||||
|
||||
b.Property<DateTime?>("DeletedAt")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("deleted_at");
|
||||
|
||||
b.Property<Guid?>("DeletedById")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("deleted_by_id");
|
||||
|
||||
b.Property<DateTime?>("ExpirationTime")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("expiration_time");
|
||||
|
||||
b.Property<DateTime?>("LastEditedAt")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("last_edited_at");
|
||||
|
||||
b.Property<Guid?>("LastEditedById")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("last_edited_by_id");
|
||||
|
||||
b.Property<string>("Message")
|
||||
.IsRequired()
|
||||
.HasMaxLength(4096)
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("message");
|
||||
|
||||
b.Property<Guid?>("PlayerUserId")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("player_user_id");
|
||||
|
||||
b.Property<TimeSpan>("PlaytimeAtNote")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("playtime_at_note");
|
||||
|
||||
b.Property<int?>("RoundId")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("round_id");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("PK_admin_watchlists");
|
||||
|
||||
b.HasIndex("CreatedById");
|
||||
|
||||
b.HasIndex("DeletedById");
|
||||
|
||||
b.HasIndex("LastEditedById");
|
||||
|
||||
b.HasIndex("PlayerUserId")
|
||||
.HasDatabaseName("IX_admin_watchlists_player_user_id");
|
||||
|
||||
b.HasIndex("RoundId")
|
||||
.HasDatabaseName("IX_admin_watchlists_round_id");
|
||||
|
||||
b.ToTable("admin_watchlists", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.Antag", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
@@ -701,25 +869,57 @@ namespace Content.Server.Database.Migrations.Sqlite
|
||||
.HasColumnType("BLOB")
|
||||
.HasColumnName("hwid");
|
||||
|
||||
b.Property<bool>("Hidden")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("hidden");
|
||||
|
||||
b.Property<DateTime?>("LastEditedAt")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("last_edited_at");
|
||||
|
||||
b.Property<Guid?>("LastEditedById")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("last_edited_by_id");
|
||||
|
||||
b.Property<Guid?>("PlayerUserId")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("player_user_id");
|
||||
|
||||
b.Property<TimeSpan>("PlaytimeAtNote")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("playtime_at_note");
|
||||
|
||||
b.Property<string>("Reason")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("reason");
|
||||
|
||||
b.Property<Guid?>("UserId")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("user_id");
|
||||
b.Property<int?>("RoundId")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("round_id");
|
||||
|
||||
b.Property<int>("Severity")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("severity");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("PK_server_ban");
|
||||
|
||||
b.HasIndex("Address");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
b.HasIndex("BanningAdmin");
|
||||
|
||||
b.HasIndex("LastEditedById");
|
||||
|
||||
b.HasIndex("PlayerUserId")
|
||||
.HasDatabaseName("IX_server_ban_player_user_id");
|
||||
|
||||
b.HasIndex("RoundId")
|
||||
.HasDatabaseName("IX_server_ban_round_id");
|
||||
|
||||
b.ToTable("server_ban", null, t =>
|
||||
{
|
||||
t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -797,6 +997,26 @@ namespace Content.Server.Database.Migrations.Sqlite
|
||||
.HasColumnType("BLOB")
|
||||
.HasColumnName("hwid");
|
||||
|
||||
b.Property<bool>("Hidden")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("hidden");
|
||||
|
||||
b.Property<DateTime?>("LastEditedAt")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("last_edited_at");
|
||||
|
||||
b.Property<Guid?>("LastEditedById")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("last_edited_by_id");
|
||||
|
||||
b.Property<Guid?>("PlayerUserId")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("player_user_id");
|
||||
|
||||
b.Property<TimeSpan>("PlaytimeAtNote")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("playtime_at_note");
|
||||
|
||||
b.Property<string>("Reason")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
@@ -807,20 +1027,32 @@ namespace Content.Server.Database.Migrations.Sqlite
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("role_id");
|
||||
|
||||
b.Property<Guid?>("UserId")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("user_id");
|
||||
b.Property<int?>("RoundId")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("round_id");
|
||||
|
||||
b.Property<int>("Severity")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("severity");
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("PK_server_role_ban");
|
||||
|
||||
b.HasIndex("Address");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
b.HasIndex("BanningAdmin");
|
||||
|
||||
b.HasIndex("LastEditedById");
|
||||
|
||||
b.HasIndex("PlayerUserId")
|
||||
.HasDatabaseName("IX_server_role_ban_player_user_id");
|
||||
|
||||
b.HasIndex("RoundId")
|
||||
.HasDatabaseName("IX_server_role_ban_round_id");
|
||||
|
||||
b.ToTable("server_role_ban", null, t =>
|
||||
{
|
||||
t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1033,36 +1265,80 @@ namespace Content.Server.Database.Migrations.Sqlite
|
||||
b.Navigation("Player");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.AdminMessage", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.Player", "CreatedBy")
|
||||
.WithMany("AdminMessagesCreated")
|
||||
.HasForeignKey("CreatedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_messages_player_created_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "DeletedBy")
|
||||
.WithMany("AdminMessagesDeleted")
|
||||
.HasForeignKey("DeletedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_messages_player_deleted_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "LastEditedBy")
|
||||
.WithMany("AdminMessagesLastEdited")
|
||||
.HasForeignKey("LastEditedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_messages_player_last_edited_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "Player")
|
||||
.WithMany("AdminMessagesReceived")
|
||||
.HasForeignKey("PlayerUserId")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_messages_player_player_user_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Round", "Round")
|
||||
.WithMany()
|
||||
.HasForeignKey("RoundId")
|
||||
.HasConstraintName("FK_admin_messages_round_round_id");
|
||||
|
||||
b.Navigation("CreatedBy");
|
||||
|
||||
b.Navigation("DeletedBy");
|
||||
|
||||
b.Navigation("LastEditedBy");
|
||||
|
||||
b.Navigation("Player");
|
||||
|
||||
b.Navigation("Round");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.AdminNote", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.Player", "CreatedBy")
|
||||
.WithMany("AdminNotesCreated")
|
||||
.HasForeignKey("CreatedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_notes_player_created_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "DeletedBy")
|
||||
.WithMany("AdminNotesDeleted")
|
||||
.HasForeignKey("DeletedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_notes_player_deleted_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "LastEditedBy")
|
||||
.WithMany("AdminNotesLastEdited")
|
||||
.HasForeignKey("LastEditedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_notes_player_last_edited_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "Player")
|
||||
.WithMany("AdminNotesReceived")
|
||||
.HasForeignKey("PlayerUserId")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_notes_player_player_user_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Round", "Round")
|
||||
@@ -1093,6 +1369,52 @@ namespace Content.Server.Database.Migrations.Sqlite
|
||||
b.Navigation("Rank");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.Player", "CreatedBy")
|
||||
.WithMany("AdminWatchlistsCreated")
|
||||
.HasForeignKey("CreatedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_watchlists_player_created_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "DeletedBy")
|
||||
.WithMany("AdminWatchlistsDeleted")
|
||||
.HasForeignKey("DeletedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_watchlists_player_deleted_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "LastEditedBy")
|
||||
.WithMany("AdminWatchlistsLastEdited")
|
||||
.HasForeignKey("LastEditedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_watchlists_player_last_edited_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "Player")
|
||||
.WithMany("AdminWatchlistsReceived")
|
||||
.HasForeignKey("PlayerUserId")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_admin_watchlists_player_player_user_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Round", "Round")
|
||||
.WithMany()
|
||||
.HasForeignKey("RoundId")
|
||||
.HasConstraintName("FK_admin_watchlists_round_round_id");
|
||||
|
||||
b.Navigation("CreatedBy");
|
||||
|
||||
b.Navigation("DeletedBy");
|
||||
|
||||
b.Navigation("LastEditedBy");
|
||||
|
||||
b.Navigation("Player");
|
||||
|
||||
b.Navigation("Round");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.Antag", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.Profile", "Profile")
|
||||
@@ -1141,6 +1463,34 @@ namespace Content.Server.Database.Migrations.Sqlite
|
||||
b.Navigation("Server");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.ServerBan", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.Player", "CreatedBy")
|
||||
.WithMany("AdminServerBansCreated")
|
||||
.HasForeignKey("BanningAdmin")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_server_ban_player_banning_admin");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "LastEditedBy")
|
||||
.WithMany("AdminServerBansLastEdited")
|
||||
.HasForeignKey("LastEditedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_server_ban_player_last_edited_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Round", "Round")
|
||||
.WithMany()
|
||||
.HasForeignKey("RoundId")
|
||||
.HasConstraintName("FK_server_ban_round_round_id");
|
||||
|
||||
b.Navigation("CreatedBy");
|
||||
|
||||
b.Navigation("LastEditedBy");
|
||||
|
||||
b.Navigation("Round");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.ServerBanHit", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.ServerBan", "Ban")
|
||||
@@ -1162,6 +1512,34 @@ namespace Content.Server.Database.Migrations.Sqlite
|
||||
b.Navigation("Connection");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.Player", "CreatedBy")
|
||||
.WithMany("AdminServerRoleBansCreated")
|
||||
.HasForeignKey("BanningAdmin")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_server_role_ban_player_banning_admin");
|
||||
|
||||
b.HasOne("Content.Server.Database.Player", "LastEditedBy")
|
||||
.WithMany("AdminServerRoleBansLastEdited")
|
||||
.HasForeignKey("LastEditedById")
|
||||
.HasPrincipalKey("UserId")
|
||||
.OnDelete(DeleteBehavior.SetNull)
|
||||
.HasConstraintName("FK_server_role_ban_player_last_edited_by_id");
|
||||
|
||||
b.HasOne("Content.Server.Database.Round", "Round")
|
||||
.WithMany()
|
||||
.HasForeignKey("RoundId")
|
||||
.HasConstraintName("FK_server_role_ban_round_round_id");
|
||||
|
||||
b.Navigation("CreatedBy");
|
||||
|
||||
b.Navigation("LastEditedBy");
|
||||
|
||||
b.Navigation("Round");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b =>
|
||||
{
|
||||
b.HasOne("Content.Server.Database.ServerRoleBan", "Ban")
|
||||
@@ -1243,6 +1621,14 @@ namespace Content.Server.Database.Migrations.Sqlite
|
||||
{
|
||||
b.Navigation("AdminLogs");
|
||||
|
||||
b.Navigation("AdminMessagesCreated");
|
||||
|
||||
b.Navigation("AdminMessagesDeleted");
|
||||
|
||||
b.Navigation("AdminMessagesLastEdited");
|
||||
|
||||
b.Navigation("AdminMessagesReceived");
|
||||
|
||||
b.Navigation("AdminNotesCreated");
|
||||
|
||||
b.Navigation("AdminNotesDeleted");
|
||||
@@ -1250,6 +1636,22 @@ namespace Content.Server.Database.Migrations.Sqlite
|
||||
b.Navigation("AdminNotesLastEdited");
|
||||
|
||||
b.Navigation("AdminNotesReceived");
|
||||
|
||||
b.Navigation("AdminServerBansCreated");
|
||||
|
||||
b.Navigation("AdminServerBansLastEdited");
|
||||
|
||||
b.Navigation("AdminServerRoleBansCreated");
|
||||
|
||||
b.Navigation("AdminServerRoleBansLastEdited");
|
||||
|
||||
b.Navigation("AdminWatchlistsCreated");
|
||||
|
||||
b.Navigation("AdminWatchlistsDeleted");
|
||||
|
||||
b.Navigation("AdminWatchlistsLastEdited");
|
||||
|
||||
b.Navigation("AdminWatchlistsReceived");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Content.Server.Database.Preference", b =>
|
||||
|
||||
@@ -37,6 +37,8 @@ namespace Content.Server.Database
|
||||
public DbSet<PlayTime> PlayTime { get; set; } = default!;
|
||||
public DbSet<UploadedResourceLog> UploadedResourceLog { get; set; } = default!;
|
||||
public DbSet<AdminNote> AdminNotes { get; set; } = null!;
|
||||
public DbSet<AdminWatchlist> AdminWatchlists { get; set; } = null!;
|
||||
public DbSet<AdminMessage> AdminMessages { get; set; } = null!;
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
@@ -114,20 +116,20 @@ namespace Content.Server.Database
|
||||
.HasKey(logPlayer => new {logPlayer.PlayerUserId, logPlayer.LogId, logPlayer.RoundId});
|
||||
|
||||
modelBuilder.Entity<ServerBan>()
|
||||
.HasIndex(p => p.UserId);
|
||||
.HasIndex(p => p.PlayerUserId);
|
||||
|
||||
modelBuilder.Entity<ServerBan>()
|
||||
.HasIndex(p => p.Address);
|
||||
|
||||
modelBuilder.Entity<ServerBan>()
|
||||
.HasIndex(p => p.UserId);
|
||||
.HasIndex(p => p.PlayerUserId);
|
||||
|
||||
modelBuilder.Entity<ServerUnban>()
|
||||
.HasIndex(p => p.BanId)
|
||||
.IsUnique();
|
||||
|
||||
modelBuilder.Entity<ServerBan>().ToTable(t =>
|
||||
t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL"));
|
||||
t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"));
|
||||
|
||||
// Ban exemption can't have flags 0 since that wouldn't exempt anything.
|
||||
// The row should be removed if setting to 0.
|
||||
@@ -135,20 +137,20 @@ namespace Content.Server.Database
|
||||
t.HasCheckConstraint("FlagsNotZero", "flags != 0"));
|
||||
|
||||
modelBuilder.Entity<ServerRoleBan>()
|
||||
.HasIndex(p => p.UserId);
|
||||
.HasIndex(p => p.PlayerUserId);
|
||||
|
||||
modelBuilder.Entity<ServerRoleBan>()
|
||||
.HasIndex(p => p.Address);
|
||||
|
||||
modelBuilder.Entity<ServerRoleBan>()
|
||||
.HasIndex(p => p.UserId);
|
||||
.HasIndex(p => p.PlayerUserId);
|
||||
|
||||
modelBuilder.Entity<ServerRoleUnban>()
|
||||
.HasIndex(p => p.BanId)
|
||||
.IsUnique();
|
||||
|
||||
modelBuilder.Entity<ServerRoleBan>().ToTable(t =>
|
||||
t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL"));
|
||||
t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"));
|
||||
|
||||
modelBuilder.Entity<Player>()
|
||||
.HasIndex(p => p.UserId)
|
||||
@@ -160,29 +162,118 @@ namespace Content.Server.Database
|
||||
modelBuilder.Entity<ConnectionLog>()
|
||||
.HasIndex(p => p.UserId);
|
||||
|
||||
// SetNull is necessary here so you can safely delete admins (GDPR right to erasure) while keeping the notes intact
|
||||
modelBuilder.Entity<AdminNote>()
|
||||
.HasOne(note => note.Player)
|
||||
.WithMany(player => player.AdminNotesReceived)
|
||||
.HasForeignKey(note => note.PlayerUserId)
|
||||
.HasPrincipalKey(player => player.UserId);
|
||||
.HasPrincipalKey(player => player.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<AdminNote>()
|
||||
.HasOne(version => version.CreatedBy)
|
||||
.WithMany(author => author.AdminNotesCreated)
|
||||
.HasForeignKey(note => note.CreatedById)
|
||||
.HasPrincipalKey(author => author.UserId);
|
||||
.HasPrincipalKey(author => author.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<AdminNote>()
|
||||
.HasOne(version => version.LastEditedBy)
|
||||
.WithMany(author => author.AdminNotesLastEdited)
|
||||
.HasForeignKey(note => note.LastEditedById)
|
||||
.HasPrincipalKey(author => author.UserId);
|
||||
.HasPrincipalKey(author => author.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<AdminNote>()
|
||||
.HasOne(version => version.DeletedBy)
|
||||
.WithMany(author => author.AdminNotesDeleted)
|
||||
.HasForeignKey(note => note.DeletedById)
|
||||
.HasPrincipalKey(author => author.UserId);
|
||||
.HasPrincipalKey(author => author.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<AdminWatchlist>()
|
||||
.HasOne(note => note.Player)
|
||||
.WithMany(player => player.AdminWatchlistsReceived)
|
||||
.HasForeignKey(note => note.PlayerUserId)
|
||||
.HasPrincipalKey(player => player.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<AdminWatchlist>()
|
||||
.HasOne(version => version.CreatedBy)
|
||||
.WithMany(author => author.AdminWatchlistsCreated)
|
||||
.HasForeignKey(note => note.CreatedById)
|
||||
.HasPrincipalKey(author => author.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<AdminWatchlist>()
|
||||
.HasOne(version => version.LastEditedBy)
|
||||
.WithMany(author => author.AdminWatchlistsLastEdited)
|
||||
.HasForeignKey(note => note.LastEditedById)
|
||||
.HasPrincipalKey(author => author.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<AdminWatchlist>()
|
||||
.HasOne(version => version.DeletedBy)
|
||||
.WithMany(author => author.AdminWatchlistsDeleted)
|
||||
.HasForeignKey(note => note.DeletedById)
|
||||
.HasPrincipalKey(author => author.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<AdminMessage>()
|
||||
.HasOne(note => note.Player)
|
||||
.WithMany(player => player.AdminMessagesReceived)
|
||||
.HasForeignKey(note => note.PlayerUserId)
|
||||
.HasPrincipalKey(player => player.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<AdminMessage>()
|
||||
.HasOne(version => version.CreatedBy)
|
||||
.WithMany(author => author.AdminMessagesCreated)
|
||||
.HasForeignKey(note => note.CreatedById)
|
||||
.HasPrincipalKey(author => author.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<AdminMessage>()
|
||||
.HasOne(version => version.LastEditedBy)
|
||||
.WithMany(author => author.AdminMessagesLastEdited)
|
||||
.HasForeignKey(note => note.LastEditedById)
|
||||
.HasPrincipalKey(author => author.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<AdminMessage>()
|
||||
.HasOne(version => version.DeletedBy)
|
||||
.WithMany(author => author.AdminMessagesDeleted)
|
||||
.HasForeignKey(note => note.DeletedById)
|
||||
.HasPrincipalKey(author => author.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<ServerBan>()
|
||||
.HasOne(ban => ban.CreatedBy)
|
||||
.WithMany(author => author.AdminServerBansCreated)
|
||||
.HasForeignKey(ban => ban.BanningAdmin)
|
||||
.HasPrincipalKey(author => author.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<ServerBan>()
|
||||
.HasOne(ban => ban.LastEditedBy)
|
||||
.WithMany(author => author.AdminServerBansLastEdited)
|
||||
.HasForeignKey(ban => ban.LastEditedById)
|
||||
.HasPrincipalKey(author => author.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<ServerRoleBan>()
|
||||
.HasOne(ban => ban.CreatedBy)
|
||||
.WithMany(author => author.AdminServerRoleBansCreated)
|
||||
.HasForeignKey(ban => ban.BanningAdmin)
|
||||
.HasPrincipalKey(author => author.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
|
||||
modelBuilder.Entity<ServerRoleBan>()
|
||||
.HasOne(ban => ban.LastEditedBy)
|
||||
.WithMany(author => author.AdminServerRoleBansLastEdited)
|
||||
.HasForeignKey(ban => ban.LastEditedById)
|
||||
.HasPrincipalKey(author => author.UserId)
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
}
|
||||
|
||||
public virtual IQueryable<AdminLog> SearchLogs(IQueryable<AdminLog> query, string searchText)
|
||||
@@ -313,6 +404,18 @@ namespace Content.Server.Database
|
||||
public List<AdminNote> AdminNotesCreated { get; set; } = null!;
|
||||
public List<AdminNote> AdminNotesLastEdited { get; set; } = null!;
|
||||
public List<AdminNote> AdminNotesDeleted { get; set; } = null!;
|
||||
public List<AdminWatchlist> AdminWatchlistsReceived { get; set; } = null!;
|
||||
public List<AdminWatchlist> AdminWatchlistsCreated { get; set; } = null!;
|
||||
public List<AdminWatchlist> AdminWatchlistsLastEdited { get; set; } = null!;
|
||||
public List<AdminWatchlist> AdminWatchlistsDeleted { get; set; } = null!;
|
||||
public List<AdminMessage> AdminMessagesReceived { get; set; } = null!;
|
||||
public List<AdminMessage> AdminMessagesCreated { get; set; } = null!;
|
||||
public List<AdminMessage> AdminMessagesLastEdited { get; set; } = null!;
|
||||
public List<AdminMessage> AdminMessagesDeleted { get; set; } = null!;
|
||||
public List<ServerBan> AdminServerBansCreated { get; set; } = null!;
|
||||
public List<ServerBan> AdminServerBansLastEdited { get; set; } = null!;
|
||||
public List<ServerRoleBan> AdminServerRoleBansCreated { get; set; } = null!;
|
||||
public List<ServerRoleBan> AdminServerRoleBansLastEdited { get; set; } = null!;
|
||||
}
|
||||
|
||||
[Table("whitelist")]
|
||||
@@ -427,12 +530,13 @@ namespace Content.Server.Database
|
||||
public interface IBanCommon<TUnban> where TUnban : IUnbanCommon
|
||||
{
|
||||
int Id { get; set; }
|
||||
Guid? UserId { get; set; }
|
||||
Guid? PlayerUserId { get; set; }
|
||||
(IPAddress, int)? Address { get; set; }
|
||||
byte[]? HWId { get; set; }
|
||||
DateTime BanTime { get; set; }
|
||||
DateTime? ExpirationTime { get; set; }
|
||||
string Reason { get; set; }
|
||||
NoteSeverity Severity { get; set; }
|
||||
Guid? BanningAdmin { get; set; }
|
||||
TUnban? Unban { get; set; }
|
||||
}
|
||||
@@ -477,20 +581,26 @@ namespace Content.Server.Database
|
||||
/// <remarks>
|
||||
/// At least one of UserID, IP, or HWID must be given (otherwise the ban would match nothing).
|
||||
/// </remarks>
|
||||
[Table("server_ban")]
|
||||
[Table("server_ban"), Index(nameof(PlayerUserId))]
|
||||
public class ServerBan : IBanCommon<ServerUnban>
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
[ForeignKey("Round")]
|
||||
public int? RoundId { get; set; }
|
||||
public Round? Round { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The user ID of the banned player.
|
||||
/// </summary>
|
||||
public Guid? UserId { get; set; }
|
||||
public Guid? PlayerUserId { get; set; }
|
||||
[Required] public TimeSpan PlaytimeAtNote { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// CIDR IP address range of the ban. The whole range can match the ban.
|
||||
/// </summary>
|
||||
[Column(TypeName = "inet")] public (IPAddress, int)? Address { get; set; }
|
||||
[Column(TypeName = "inet")]
|
||||
public (IPAddress, int)? Address { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Hardware ID of the banned player.
|
||||
@@ -512,11 +622,32 @@ namespace Content.Server.Database
|
||||
/// </summary>
|
||||
public string Reason { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// The severity of the incident
|
||||
/// </summary>
|
||||
public NoteSeverity Severity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// User ID of the admin that applied the ban.
|
||||
/// </summary>
|
||||
[ForeignKey("CreatedBy")]
|
||||
public Guid? BanningAdmin { get; set; }
|
||||
|
||||
public Player? CreatedBy { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// User ID of the admin that last edited the note
|
||||
/// </summary>
|
||||
[ForeignKey("LastEditedBy")]
|
||||
public Guid? LastEditedById { get; set; }
|
||||
|
||||
public Player? LastEditedBy { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When the ban was last edited
|
||||
/// </summary>
|
||||
public DateTime? LastEditedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Optional flags that allow adding exemptions to the ban via <see cref="ServerBanExemption"/>.
|
||||
/// </summary>
|
||||
@@ -538,6 +669,11 @@ namespace Content.Server.Database
|
||||
/// </remarks>
|
||||
public bool AutoDelete { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether to display this ban in the admin remarks (notes) panel
|
||||
/// </summary>
|
||||
public bool Hidden { get; set; }
|
||||
|
||||
public List<ServerBanHit> BanHits { get; set; } = null!;
|
||||
}
|
||||
|
||||
@@ -633,11 +769,14 @@ namespace Content.Server.Database
|
||||
public ConnectionLog Connection { get; set; } = null!;
|
||||
}
|
||||
|
||||
[Table("server_role_ban")]
|
||||
[Table("server_role_ban"), Index(nameof(PlayerUserId))]
|
||||
public sealed class ServerRoleBan : IBanCommon<ServerRoleUnban>
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public Guid? UserId { get; set; }
|
||||
public int? RoundId { get; set; }
|
||||
public Round? Round { get; set; }
|
||||
public Guid? PlayerUserId { get; set; }
|
||||
[Required] public TimeSpan PlaytimeAtNote { get; set; }
|
||||
[Column(TypeName = "inet")] public (IPAddress, int)? Address { get; set; }
|
||||
public byte[]? HWId { get; set; }
|
||||
|
||||
@@ -646,9 +785,17 @@ namespace Content.Server.Database
|
||||
public DateTime? ExpirationTime { get; set; }
|
||||
|
||||
public string Reason { get; set; } = null!;
|
||||
public Guid? BanningAdmin { get; set; }
|
||||
|
||||
public NoteSeverity Severity { get; set; }
|
||||
[ForeignKey("CreatedBy")] public Guid? BanningAdmin { get; set; }
|
||||
public Player? CreatedBy { get; set; }
|
||||
|
||||
[ForeignKey("LastEditedBy")] public Guid? LastEditedById { get; set; }
|
||||
public Player? LastEditedBy { get; set; }
|
||||
public DateTime? LastEditedAt { get; set; }
|
||||
|
||||
public ServerRoleUnban? Unban { get; set; }
|
||||
public bool Hidden { get; set; }
|
||||
|
||||
public string RoleId { get; set; } = null!;
|
||||
}
|
||||
@@ -695,34 +842,126 @@ namespace Content.Server.Database
|
||||
public byte[] Data { get; set; } = default!;
|
||||
}
|
||||
|
||||
public interface IAdminRemarksCommon
|
||||
{
|
||||
public int Id { get; }
|
||||
|
||||
public int? RoundId { get; }
|
||||
public Round? Round { get; }
|
||||
|
||||
public Guid? PlayerUserId { get; }
|
||||
public Player? Player { get; }
|
||||
public TimeSpan PlaytimeAtNote { get; }
|
||||
|
||||
public string Message { get; }
|
||||
|
||||
public Player? CreatedBy { get; }
|
||||
|
||||
public DateTime CreatedAt { get; }
|
||||
|
||||
public Player? LastEditedBy { get; }
|
||||
|
||||
public DateTime? LastEditedAt { get; }
|
||||
public DateTime? ExpirationTime { get; }
|
||||
|
||||
public bool Deleted { get; }
|
||||
}
|
||||
|
||||
[Index(nameof(PlayerUserId))]
|
||||
public class AdminNote
|
||||
public class AdminNote : IAdminRemarksCommon
|
||||
{
|
||||
[Required, Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; }
|
||||
|
||||
[ForeignKey("Round")] public int? RoundId { get; set; }
|
||||
public Round? Round { get; set; }
|
||||
|
||||
[Required, ForeignKey("Player")] public Guid PlayerUserId { get; set; }
|
||||
public Player Player { get; set; } = default!;
|
||||
[ForeignKey("Player")] public Guid? PlayerUserId { get; set; }
|
||||
public Player? Player { get; set; }
|
||||
[Required] public TimeSpan PlaytimeAtNote { get; set; }
|
||||
|
||||
[Required, MaxLength(4096)] public string Message { get; set; } = string.Empty;
|
||||
[Required] public NoteSeverity Severity { get; set; }
|
||||
|
||||
[Required, ForeignKey("CreatedBy")] public Guid CreatedById { get; set; }
|
||||
[Required] public Player CreatedBy { get; set; } = default!;
|
||||
[ForeignKey("CreatedBy")] public Guid? CreatedById { get; set; }
|
||||
public Player? CreatedBy { get; set; }
|
||||
|
||||
[Required] public DateTime CreatedAt { get; set; }
|
||||
|
||||
[Required, ForeignKey("LastEditedBy")] public Guid LastEditedById { get; set; }
|
||||
[Required] public Player LastEditedBy { get; set; } = default!;
|
||||
[ForeignKey("LastEditedBy")] public Guid? LastEditedById { get; set; }
|
||||
public Player? LastEditedBy { get; set; }
|
||||
|
||||
[Required] public DateTime LastEditedAt { get; set; }
|
||||
[Required] public DateTime? LastEditedAt { get; set; }
|
||||
public DateTime? ExpirationTime { get; set; }
|
||||
|
||||
public bool Deleted { get; set; }
|
||||
[ForeignKey("DeletedBy")] public Guid? DeletedById { get; set; }
|
||||
public Player? DeletedBy { get; set; }
|
||||
public DateTime? DeletedAt { get; set; }
|
||||
|
||||
public bool ShownToPlayer { get; set; }
|
||||
public bool Secret { get; set; }
|
||||
}
|
||||
|
||||
[Index(nameof(PlayerUserId))]
|
||||
public class AdminWatchlist : IAdminRemarksCommon
|
||||
{
|
||||
[Required, Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; }
|
||||
|
||||
[ForeignKey("Round")] public int? RoundId { get; set; }
|
||||
public Round? Round { get; set; }
|
||||
|
||||
[ForeignKey("Player")] public Guid? PlayerUserId { get; set; }
|
||||
public Player? Player { get; set; }
|
||||
[Required] public TimeSpan PlaytimeAtNote { get; set; }
|
||||
|
||||
[Required, MaxLength(4096)] public string Message { get; set; } = string.Empty;
|
||||
|
||||
[ForeignKey("CreatedBy")] public Guid? CreatedById { get; set; }
|
||||
public Player? CreatedBy { get; set; }
|
||||
|
||||
[Required] public DateTime CreatedAt { get; set; }
|
||||
|
||||
[ForeignKey("LastEditedBy")] public Guid? LastEditedById { get; set; }
|
||||
public Player? LastEditedBy { get; set; }
|
||||
|
||||
[Required] public DateTime? LastEditedAt { get; set; }
|
||||
public DateTime? ExpirationTime { get; set; }
|
||||
|
||||
public bool Deleted { get; set; }
|
||||
[ForeignKey("DeletedBy")] public Guid? DeletedById { get; set; }
|
||||
public Player? DeletedBy { get; set; }
|
||||
public DateTime? DeletedAt { get; set; }
|
||||
}
|
||||
|
||||
[Index(nameof(PlayerUserId))]
|
||||
public class AdminMessage : IAdminRemarksCommon
|
||||
{
|
||||
[Required, Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; }
|
||||
|
||||
[ForeignKey("Round")] public int? RoundId { get; set; }
|
||||
public Round? Round { get; set; }
|
||||
|
||||
[ForeignKey("Player")]
|
||||
public Guid? PlayerUserId { get; set; }
|
||||
public Player? Player { get; set; }
|
||||
[Required] public TimeSpan PlaytimeAtNote { get; set; }
|
||||
|
||||
[Required, MaxLength(4096)] public string Message { get; set; } = string.Empty;
|
||||
|
||||
[ForeignKey("CreatedBy")] public Guid? CreatedById { get; set; }
|
||||
public Player? CreatedBy { get; set; }
|
||||
|
||||
[Required] public DateTime CreatedAt { get; set; }
|
||||
|
||||
[ForeignKey("LastEditedBy")] public Guid? LastEditedById { get; set; }
|
||||
public Player? LastEditedBy { get; set; }
|
||||
|
||||
public DateTime? LastEditedAt { get; set; }
|
||||
public DateTime? ExpirationTime { get; set; }
|
||||
|
||||
public bool Deleted { get; set; }
|
||||
[ForeignKey("DeletedBy")] public Guid? DeletedById { get; set; }
|
||||
public Player? DeletedBy { get; set; }
|
||||
public DateTime? DeletedAt { get; set; }
|
||||
public bool Seen { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user