using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace Admin.WebApi.Data.Migrations { /// public partial class InitialAdmin : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "admin_accounts", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Account = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Name = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Email = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), PasswordHash = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Role = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Enabled = table.Column(type: "tinyint(1)", nullable: false), Stamp = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), FailedAttempts = table.Column(type: "int", nullable: false), LockedUntil = table.Column(type: "datetime(6)", nullable: true), CreatedAt = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_admin_accounts", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "admin_audit", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ActorId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ActorName = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Action = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), TargetId = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), TargetName = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Before = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), After = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Reason = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), ReportId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), OperationId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), Result = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), CreatedAt = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_admin_audit", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "admin_operations", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ActorId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ActorName = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), TargetId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Type = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Action = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Reason = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), ReportId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), Status = table.Column(type: "varchar(30)", maxLength: 30, nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Attempts = table.Column(type: "int", nullable: false), Error = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreatedAt = table.Column(type: "datetime(6)", nullable: false), NextAttemptAt = table.Column(type: "datetime(6)", nullable: false), CompletedAt = table.Column(type: "datetime(6)", nullable: true) }, constraints: table => { table.PrimaryKey("PK_admin_operations", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "admin_password_resets", columns: table => new { Id = table.Column(type: "varchar(64)", maxLength: 64, nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), AccountId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ExpiresAt = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_admin_password_resets", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "admin_reports", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ReporterId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), TargetId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), TargetName = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Type = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Reason = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Description = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Evidence = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Status = table.Column(type: "varchar(30)", maxLength: 30, nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), AssigneeId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), Result = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreatedAt = table.Column(type: "datetime(6)", nullable: false), ClosedAt = table.Column(type: "datetime(6)", nullable: true), Version = table.Column(type: "bigint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_admin_reports", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "admin_settings", columns: table => new { Id = table.Column(type: "varchar(64)", maxLength: 64, nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Version = table.Column(type: "bigint", nullable: false), Value = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Draft = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), TestedVersion = table.Column(type: "bigint", nullable: true), Secret = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), DraftSecret = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), UpdatedAt = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_admin_settings", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateIndex( name: "IX_admin_accounts_Account", table: "admin_accounts", column: "Account", unique: true); migrationBuilder.CreateIndex( name: "IX_admin_audit_CreatedAt", table: "admin_audit", column: "CreatedAt"); migrationBuilder.CreateIndex( name: "IX_admin_audit_OperationId", table: "admin_audit", column: "OperationId", unique: true); migrationBuilder.CreateIndex( name: "IX_admin_operations_Status_NextAttemptAt", table: "admin_operations", columns: new[] { "Status", "NextAttemptAt" }); migrationBuilder.CreateIndex( name: "IX_admin_reports_ReporterId_CreatedAt", table: "admin_reports", columns: new[] { "ReporterId", "CreatedAt" }); migrationBuilder.CreateIndex( name: "IX_admin_reports_Status_CreatedAt", table: "admin_reports", columns: new[] { "Status", "CreatedAt" }); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "admin_accounts"); migrationBuilder.DropTable( name: "admin_audit"); migrationBuilder.DropTable( name: "admin_operations"); migrationBuilder.DropTable( name: "admin_password_resets"); migrationBuilder.DropTable( name: "admin_reports"); migrationBuilder.DropTable( name: "admin_settings"); } } }