自选项目实验优化

This commit is contained in:
2026-08-11 09:29:44 +08:00 Unverified
parent 9b32ee916c
commit e69ab6f580
11 changed files with 7578 additions and 67 deletions
@@ -0,0 +1,81 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Jiaowu.Api.Infrastructure.Persistence.Migrations.MySql
{
/// <inheritdoc />
public partial class AddSelfScheduledExperimentSelectionWindowsAndInstructors : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<DateTime>(
name: "SelectionEndsAt",
table: "ExperimentProjects",
type: "datetime(6)",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "SelectionStartsAt",
table: "ExperimentProjects",
type: "datetime(6)",
nullable: true);
migrationBuilder.CreateTable(
name: "ExperimentSessionInstructors",
columns: table => new
{
Id = table.Column<Guid>(type: "char(36)", nullable: false),
ExperimentSessionId = table.Column<Guid>(type: "char(36)", nullable: false),
TeacherId = table.Column<Guid>(type: "char(36)", nullable: false),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
UpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ExperimentSessionInstructors", x => x.Id);
table.ForeignKey(
name: "FK_ExperimentSessionInstructors_ExperimentSessions_ExperimentSe~",
column: x => x.ExperimentSessionId,
principalTable: "ExperimentSessions",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ExperimentSessionInstructors_Teachers_TeacherId",
column: x => x.TeacherId,
principalTable: "Teachers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
})
.Annotation("MySQL:Charset", "utf8mb4");
migrationBuilder.CreateIndex(
name: "IX_ExperimentSessionInstructors_ExperimentSessionId_TeacherId",
table: "ExperimentSessionInstructors",
columns: new[] { "ExperimentSessionId", "TeacherId" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_ExperimentSessionInstructors_TeacherId",
table: "ExperimentSessionInstructors",
column: "TeacherId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "ExperimentSessionInstructors");
migrationBuilder.DropColumn(
name: "SelectionEndsAt",
table: "ExperimentProjects");
migrationBuilder.DropColumn(
name: "SelectionStartsAt",
table: "ExperimentProjects");
}
}
}
@@ -2520,6 +2520,12 @@ namespace Jiaowu.Api.Infrastructure.Persistence.Migrations.MySql
b.Property<int?>("ScheduleWeek")
.HasColumnType("int");
b.Property<DateTime?>("SelectionEndsAt")
.HasColumnType("datetime(6)");
b.Property<DateTime?>("SelectionStartsAt")
.HasColumnType("datetime(6)");
b.Property<DateTime>("StartDate")
.HasColumnType("date");
@@ -2596,6 +2602,34 @@ namespace Jiaowu.Api.Infrastructure.Persistence.Migrations.MySql
b.ToTable("ExperimentSessions");
});
modelBuilder.Entity("Jiaowu.Api.Domain.Academic.ExperimentSessionInstructor", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("char(36)");
b.Property<DateTime>("CreatedAt")
.HasColumnType("datetime(6)");
b.Property<Guid>("ExperimentSessionId")
.HasColumnType("char(36)");
b.Property<Guid>("TeacherId")
.HasColumnType("char(36)");
b.Property<DateTime>("UpdatedAt")
.HasColumnType("datetime(6)");
b.HasKey("Id");
b.HasIndex("TeacherId");
b.HasIndex("ExperimentSessionId", "TeacherId")
.IsUnique();
b.ToTable("ExperimentSessionInstructors");
});
modelBuilder.Entity("Jiaowu.Api.Domain.Academic.GradeItem", b =>
{
b.Property<Guid>("Id")
@@ -5970,6 +6004,25 @@ namespace Jiaowu.Api.Infrastructure.Persistence.Migrations.MySql
b.Navigation("ExperimentProject");
});
modelBuilder.Entity("Jiaowu.Api.Domain.Academic.ExperimentSessionInstructor", b =>
{
b.HasOne("Jiaowu.Api.Domain.Academic.ExperimentSession", "ExperimentSession")
.WithMany("Instructors")
.HasForeignKey("ExperimentSessionId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Jiaowu.Api.Domain.Academic.Teacher", "Teacher")
.WithMany()
.HasForeignKey("TeacherId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("ExperimentSession");
b.Navigation("Teacher");
});
modelBuilder.Entity("Jiaowu.Api.Domain.Academic.GradeItem", b =>
{
b.HasOne("Jiaowu.Api.Domain.Academic.GradeSheet", "GradeSheet")
@@ -6843,6 +6896,8 @@ namespace Jiaowu.Api.Infrastructure.Persistence.Migrations.MySql
modelBuilder.Entity("Jiaowu.Api.Domain.Academic.ExperimentSession", b =>
{
b.Navigation("Bookings");
b.Navigation("Instructors");
});
modelBuilder.Entity("Jiaowu.Api.Domain.Academic.GradeItem", b =>