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");
}
}
}