// <auto-generated />
using Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;

#nullable disable

namespace Data.Migrations
{
    [DbContext(typeof(AppDbContext))]
    [Migration("20250926142634_EventDefinition_Update")]
    partial class EventDefinition_Update
    {
        /// <inheritdoc />
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder.HasAnnotation("ProductVersion", "9.0.8");

            modelBuilder.Entity("Core.Entities.EventDefinition", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("ChapterEligibilityCountRegionals")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ChapterEligibilityCountState")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Description")
                        .HasMaxLength(1024)
                        .HasColumnType("TEXT");

                    b.Property<string>("Documentation")
                        .HasMaxLength(64)
                        .HasColumnType("TEXT");

                    b.Property<string>("Eligibility")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("TEXT");

                    b.Property<int>("EventFormat")
                        .HasColumnType("INTEGER");

                    b.Property<int?>("LevelOfEffort")
                        .HasColumnType("INTEGER");

                    b.Property<int>("MaxTeamSize")
                        .HasColumnType("INTEGER");

                    b.Property<int>("MinTeamSize")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("TEXT");

                    b.Property<string>("Notes")
                        .HasMaxLength(1024)
                        .HasColumnType("TEXT");

                    b.Property<bool>("OnSiteActivity")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("Presubmission")
                        .HasColumnType("INTEGER");

                    b.Property<string>("SemifinalistActivity")
                        .HasMaxLength(100)
                        .HasColumnType("TEXT");

                    b.Property<string>("ShortName")
                        .IsRequired()
                        .HasMaxLength(40)
                        .HasColumnType("TEXT");

                    b.Property<string>("Theme")
                        .HasMaxLength(4096)
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("Name");

                    b.ToTable("Events");
                });

            modelBuilder.Entity("Core.Entities.Student", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("Email")
                        .HasColumnType("TEXT");

                    b.Property<string>("FirstName")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("TEXT");

                    b.Property<int>("Grade")
                        .HasColumnType("INTEGER");

                    b.Property<string>("LastName")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("TEXT");

                    b.Property<string>("NationalId")
                        .HasColumnType("TEXT");

                    b.Property<int?>("OfficerRole")
                        .HasColumnType("INTEGER");

                    b.Property<string>("PhoneNumber")
                        .HasColumnType("TEXT");

                    b.Property<string>("RegionalId")
                        .HasColumnType("TEXT");

                    b.Property<string>("StateId")
                        .HasColumnType("TEXT");

                    b.Property<int>("TsaYear")
                        .HasColumnType("INTEGER");

                    b.HasKey("Id");

                    b.ToTable("Students");
                });

            modelBuilder.Entity("Core.Entities.StudentEventRanking", b =>
                {
                    b.Property<int>("EventDefinitionId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("StudentId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Rank")
                        .HasColumnType("INTEGER");

                    b.HasKey("EventDefinitionId", "StudentId");

                    b.HasIndex("StudentId");

                    b.ToTable("StudentEventRanking");
                });

            modelBuilder.Entity("Core.Entities.Team", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int?>("CaptainId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("EventId")
                        .HasColumnType("INTEGER");

                    b.Property<int?>("Number")
                        .HasColumnType("INTEGER");

                    b.Property<string>("TeamId")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("CaptainId");

                    b.HasIndex("EventId");

                    b.ToTable("Teams");
                });

            modelBuilder.Entity("StudentTeam", b =>
                {
                    b.Property<int>("StudentsId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("TeamsId")
                        .HasColumnType("INTEGER");

                    b.HasKey("StudentsId", "TeamsId");

                    b.HasIndex("TeamsId");

                    b.ToTable("StudentTeam");
                });

            modelBuilder.Entity("Core.Entities.StudentEventRanking", b =>
                {
                    b.HasOne("Core.Entities.EventDefinition", "EventDefinition")
                        .WithMany()
                        .HasForeignKey("EventDefinitionId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Core.Entities.Student", "Student")
                        .WithMany("EventRankings")
                        .HasForeignKey("StudentId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("EventDefinition");

                    b.Navigation("Student");
                });

            modelBuilder.Entity("Core.Entities.Team", b =>
                {
                    b.HasOne("Core.Entities.Student", "Captain")
                        .WithMany()
                        .HasForeignKey("CaptainId");

                    b.HasOne("Core.Entities.EventDefinition", "Event")
                        .WithMany()
                        .HasForeignKey("EventId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Captain");

                    b.Navigation("Event");
                });

            modelBuilder.Entity("StudentTeam", b =>
                {
                    b.HasOne("Core.Entities.Student", null)
                        .WithMany()
                        .HasForeignKey("StudentsId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Core.Entities.Team", null)
                        .WithMany()
                        .HasForeignKey("TeamsId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("Core.Entities.Student", b =>
                {
                    b.Navigation("EventRankings");
                });
#pragma warning restore 612, 618
        }
    }
}
