using System; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace ErsatzTV.Infrastructure.MySql.Migrations { /// public partial class Add_BlockScheduling : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "BlockGroup", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(type: "varchar(255)", nullable: true) .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_BlockGroup", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "TemplateGroup", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(type: "varchar(255)", nullable: true) .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_TemplateGroup", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Block", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), BlockGroupId = table.Column(type: "int", nullable: false), Name = table.Column(type: "varchar(255)", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Minutes = table.Column(type: "int", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Block", x => x.Id); table.ForeignKey( name: "FK_Block_BlockGroup_BlockGroupId", column: x => x.BlockGroupId, principalTable: "BlockGroup", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Template", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), TemplateGroupId = table.Column(type: "int", nullable: false), Name = table.Column(type: "varchar(255)", nullable: true) .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_Template", x => x.Id); table.ForeignKey( name: "FK_Template_TemplateGroup_TemplateGroupId", column: x => x.TemplateGroupId, principalTable: "TemplateGroup", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "BlockItem", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Index = table.Column(type: "int", nullable: false), BlockId = table.Column(type: "int", nullable: false), CollectionType = table.Column(type: "int", nullable: false), CollectionId = table.Column(type: "int", nullable: true), MediaItemId = table.Column(type: "int", nullable: true), MultiCollectionId = table.Column(type: "int", nullable: true), SmartCollectionId = table.Column(type: "int", nullable: true), PlaybackOrder = table.Column(type: "int", nullable: false) }, constraints: table => { table.PrimaryKey("PK_BlockItem", x => x.Id); table.ForeignKey( name: "FK_BlockItem_Block_BlockId", column: x => x.BlockId, principalTable: "Block", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_BlockItem_Collection_CollectionId", column: x => x.CollectionId, principalTable: "Collection", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_BlockItem_MediaItem_MediaItemId", column: x => x.MediaItemId, principalTable: "MediaItem", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_BlockItem_MultiCollection_MultiCollectionId", column: x => x.MultiCollectionId, principalTable: "MultiCollection", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_BlockItem_SmartCollection_SmartCollectionId", column: x => x.SmartCollectionId, principalTable: "SmartCollection", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "PlayoutHistory", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), PlayoutId = table.Column(type: "int", nullable: false), BlockId = table.Column(type: "int", nullable: false), Key = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), When = table.Column(type: "datetime(6)", nullable: false), Details = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_PlayoutHistory", x => x.Id); table.ForeignKey( name: "FK_PlayoutHistory_Block_BlockId", column: x => x.BlockId, principalTable: "Block", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_PlayoutHistory_Playout_PlayoutId", column: x => x.PlayoutId, principalTable: "Playout", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "PlayoutTemplate", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), PlayoutId = table.Column(type: "int", nullable: false), TemplateId = table.Column(type: "int", nullable: false), Index = table.Column(type: "int", nullable: false), DaysOfWeek = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), DaysOfMonth = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), MonthsOfYear = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), StartDate = table.Column(type: "datetime(6)", nullable: false), EndDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_PlayoutTemplate", x => x.Id); table.ForeignKey( name: "FK_PlayoutTemplate_Playout_PlayoutId", column: x => x.PlayoutId, principalTable: "Playout", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_PlayoutTemplate_Template_TemplateId", column: x => x.TemplateId, principalTable: "Template", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "TemplateItem", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), TemplateId = table.Column(type: "int", nullable: false), BlockId = table.Column(type: "int", nullable: false), StartTime = table.Column(type: "time(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_TemplateItem", x => x.Id); table.ForeignKey( name: "FK_TemplateItem_Block_BlockId", column: x => x.BlockId, principalTable: "Block", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_TemplateItem_Template_TemplateId", column: x => x.TemplateId, principalTable: "Template", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateIndex( name: "IX_Block_BlockGroupId", table: "Block", column: "BlockGroupId"); migrationBuilder.CreateIndex( name: "IX_Block_Name", table: "Block", column: "Name", unique: true); migrationBuilder.CreateIndex( name: "IX_BlockGroup_Name", table: "BlockGroup", column: "Name", unique: true); migrationBuilder.CreateIndex( name: "IX_BlockItem_BlockId", table: "BlockItem", column: "BlockId"); migrationBuilder.CreateIndex( name: "IX_BlockItem_CollectionId", table: "BlockItem", column: "CollectionId"); migrationBuilder.CreateIndex( name: "IX_BlockItem_MediaItemId", table: "BlockItem", column: "MediaItemId"); migrationBuilder.CreateIndex( name: "IX_BlockItem_MultiCollectionId", table: "BlockItem", column: "MultiCollectionId"); migrationBuilder.CreateIndex( name: "IX_BlockItem_SmartCollectionId", table: "BlockItem", column: "SmartCollectionId"); migrationBuilder.CreateIndex( name: "IX_PlayoutHistory_BlockId", table: "PlayoutHistory", column: "BlockId"); migrationBuilder.CreateIndex( name: "IX_PlayoutHistory_PlayoutId", table: "PlayoutHistory", column: "PlayoutId"); migrationBuilder.CreateIndex( name: "IX_PlayoutTemplate_PlayoutId", table: "PlayoutTemplate", column: "PlayoutId"); migrationBuilder.CreateIndex( name: "IX_PlayoutTemplate_TemplateId", table: "PlayoutTemplate", column: "TemplateId"); migrationBuilder.CreateIndex( name: "IX_Template_Name", table: "Template", column: "Name", unique: true); migrationBuilder.CreateIndex( name: "IX_Template_TemplateGroupId", table: "Template", column: "TemplateGroupId"); migrationBuilder.CreateIndex( name: "IX_TemplateGroup_Name", table: "TemplateGroup", column: "Name", unique: true); migrationBuilder.CreateIndex( name: "IX_TemplateItem_BlockId", table: "TemplateItem", column: "BlockId"); migrationBuilder.CreateIndex( name: "IX_TemplateItem_TemplateId", table: "TemplateItem", column: "TemplateId"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "BlockItem"); migrationBuilder.DropTable( name: "PlayoutHistory"); migrationBuilder.DropTable( name: "PlayoutTemplate"); migrationBuilder.DropTable( name: "TemplateItem"); migrationBuilder.DropTable( name: "Block"); migrationBuilder.DropTable( name: "Template"); migrationBuilder.DropTable( name: "BlockGroup"); migrationBuilder.DropTable( name: "TemplateGroup"); } } }