using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace Bit.MySqlMigrations.Migrations; /// public partial class NotificationCenter : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "Notification", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Priority = table.Column(type: "tinyint unsigned", nullable: false), Global = table.Column(type: "tinyint(1)", nullable: false), ClientType = table.Column(type: "tinyint unsigned", nullable: false), UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), Title = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Body = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Notification", x => x.Id); table.ForeignKey( name: "FK_Notification_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id"); table.ForeignKey( name: "FK_Notification_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id"); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "NotificationStatus", columns: table => new { NotificationId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), UserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ReadDate = table.Column(type: "datetime(6)", nullable: true), DeletedDate = table.Column(type: "datetime(6)", nullable: true) }, constraints: table => { table.PrimaryKey("PK_NotificationStatus", x => new { x.UserId, x.NotificationId }); table.ForeignKey( name: "FK_NotificationStatus_Notification_NotificationId", column: x => x.NotificationId, principalTable: "Notification", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_NotificationStatus_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateIndex( name: "IX_Notification_ClientType_Global_UserId_OrganizationId_Priorit~", table: "Notification", columns: new[] { "ClientType", "Global", "UserId", "OrganizationId", "Priority", "CreationDate" }, descending: new[] { false, false, false, false, true, true }); migrationBuilder.CreateIndex( name: "IX_Notification_OrganizationId", table: "Notification", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_Notification_UserId", table: "Notification", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_NotificationStatus_NotificationId", table: "NotificationStatus", column: "NotificationId"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "NotificationStatus"); migrationBuilder.DropTable( name: "Notification"); } }