using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace Jiaowu.Api.Infrastructure.Persistence.Migrations.MySql { /// public partial class CourseSelection : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "CourseSelectionRounds", columns: table => new { Id = table.Column(type: "char(36)", nullable: false), AcademicTermId = table.Column(type: "char(36)", nullable: false), Name = table.Column(type: "varchar(120)", maxLength: 120, nullable: false), StartsAt = table.Column(type: "datetime(6)", nullable: false), EndsAt = table.Column(type: "datetime(6)", nullable: false), WithdrawalEndsAt = table.Column(type: "datetime(6)", nullable: false), MaxCredits = table.Column(type: "decimal(6,1)", precision: 6, scale: 1, nullable: false), Status = table.Column(type: "int", nullable: false), Notes = table.Column(type: "varchar(500)", maxLength: 500, nullable: true), CreatedAt = table.Column(type: "datetime(6)", nullable: false), UpdatedAt = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_CourseSelectionRounds", x => x.Id); table.ForeignKey( name: "FK_CourseSelectionRounds_AcademicTerms_AcademicTermId", column: x => x.AcademicTermId, principalTable: "AcademicTerms", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }) .Annotation("MySQL:Charset", "utf8mb4"); migrationBuilder.CreateTable( name: "CourseSelectionOfferings", columns: table => new { Id = table.Column(type: "char(36)", nullable: false), CourseSelectionRoundId = table.Column(type: "char(36)", nullable: false), TeachingTaskId = table.Column(type: "char(36)", nullable: false), Capacity = table.Column(type: "int", nullable: false), IsOpenToAll = table.Column(type: "tinyint(1)", nullable: false), Notes = table.Column(type: "varchar(500)", maxLength: 500, nullable: true), CreatedAt = table.Column(type: "datetime(6)", nullable: false), UpdatedAt = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_CourseSelectionOfferings", x => x.Id); table.ForeignKey( name: "FK_CourseSelectionOfferings_CourseSelectionRounds_CourseSelecti~", column: x => x.CourseSelectionRoundId, principalTable: "CourseSelectionRounds", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_CourseSelectionOfferings_TeachingTasks_TeachingTaskId", column: x => x.TeachingTaskId, principalTable: "TeachingTasks", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }) .Annotation("MySQL:Charset", "utf8mb4"); migrationBuilder.CreateTable( name: "CourseEnrollments", columns: table => new { Id = table.Column(type: "char(36)", nullable: false), CourseSelectionOfferingId = table.Column(type: "char(36)", nullable: false), StudentId = table.Column(type: "char(36)", nullable: false), Status = table.Column(type: "int", nullable: false), EnrolledAt = table.Column(type: "datetime(6)", nullable: false), WithdrawnAt = table.Column(type: "datetime(6)", nullable: true), CreatedAt = table.Column(type: "datetime(6)", nullable: false), UpdatedAt = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_CourseEnrollments", x => x.Id); table.ForeignKey( name: "FK_CourseEnrollments_CourseSelectionOfferings_CourseSelectionOf~", column: x => x.CourseSelectionOfferingId, principalTable: "CourseSelectionOfferings", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_CourseEnrollments_Students_StudentId", column: x => x.StudentId, principalTable: "Students", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }) .Annotation("MySQL:Charset", "utf8mb4"); migrationBuilder.CreateIndex( name: "IX_CourseEnrollments_CourseSelectionOfferingId_StudentId", table: "CourseEnrollments", columns: new[] { "CourseSelectionOfferingId", "StudentId" }, unique: true); migrationBuilder.CreateIndex( name: "IX_CourseEnrollments_StudentId_Status", table: "CourseEnrollments", columns: new[] { "StudentId", "Status" }); migrationBuilder.CreateIndex( name: "IX_CourseSelectionOfferings_CourseSelectionRoundId_TeachingTask~", table: "CourseSelectionOfferings", columns: new[] { "CourseSelectionRoundId", "TeachingTaskId" }, unique: true); migrationBuilder.CreateIndex( name: "IX_CourseSelectionOfferings_TeachingTaskId", table: "CourseSelectionOfferings", column: "TeachingTaskId"); migrationBuilder.CreateIndex( name: "IX_CourseSelectionRounds_AcademicTermId_Status", table: "CourseSelectionRounds", columns: new[] { "AcademicTermId", "Status" }); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "CourseEnrollments"); migrationBuilder.DropTable( name: "CourseSelectionOfferings"); migrationBuilder.DropTable( name: "CourseSelectionRounds"); } } }