//
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using iknow_api.Data;
#nullable disable
namespace iknow_api.Migrations
{
[DbContext(typeof(AppDbContext))]
partial class AppDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "9.0.10")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("Address")
.HasColumnType("text");
b.Property("City")
.HasColumnType("text");
b.Property("MicrosoftEmail")
.HasColumnType("text");
b.Property("Municipality")
.HasColumnType("text");
b.Property("PhoneNumber")
.HasColumnType("text");
b.Property("UserId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("UserId")
.IsUnique();
b.ToTable("ContactInfo");
});
modelBuilder.Entity("iknow_api.Models.DependencySubject", b =>
{
b.Property("SubjectId")
.HasColumnType("integer");
b.Property("DependencyId")
.HasColumnType("integer");
b.HasKey("SubjectId", "DependencyId");
b.HasIndex("DependencyId");
b.ToTable("DependencySubjects");
});
modelBuilder.Entity("iknow_api.Models.Documents", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("Body")
.HasColumnType("text");
b.Property("Cost")
.HasColumnType("integer");
b.Property("Name")
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Documents");
});
modelBuilder.Entity("iknow_api.Models.EnrolledSemesters", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("MajorId")
.HasColumnType("integer");
b.Property("QuotaType")
.HasColumnType("integer");
b.Property("Type")
.HasColumnType("integer");
b.Property("UserId")
.HasColumnType("integer");
b.Property("Year")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("MajorId");
b.HasIndex("UserId");
b.ToTable("EnrolledSemesters");
});
modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("MajorId")
.HasColumnType("integer");
b.Property("StudyStatus")
.HasColumnType("text");
b.Property("StudyType")
.HasColumnType("text");
b.Property("UserId")
.HasColumnType("integer");
b.Property("enrollmentYear")
.HasColumnType("integer");
b.Property("quota")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("MajorId");
b.HasIndex("UserId")
.IsUnique();
b.ToTable("EnrollmentInfo");
});
modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("GPA")
.HasColumnType("real");
b.Property("HighSchoolType")
.HasColumnType("integer");
b.Property("StudyLanguage")
.HasColumnType("text");
b.Property("UserId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("UserId")
.IsUnique();
b.ToTable("HighSchool");
});
modelBuilder.Entity("iknow_api.Models.Major", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("Name")
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Majors");
b.HasData(
new
{
Id = 1,
Name = "PIT"
},
new
{
Id = 2,
Name = "SIIS"
},
new
{
Id = 3,
Name = "SEIS"
},
new
{
Id = 4,
Name = "KN"
});
});
modelBuilder.Entity("iknow_api.Models.MajorSubjects", b =>
{
b.Property("MajorId")
.HasColumnType("integer");
b.Property("SubjectId")
.HasColumnType("integer");
b.Property("Accreditation")
.HasColumnType("integer");
b.Property("MandatorySemester")
.HasColumnType("integer");
b.HasKey("MajorId", "SubjectId");
b.HasIndex("SubjectId");
b.ToTable("MajorSubjects");
});
modelBuilder.Entity("iknow_api.Models.PassedSubject", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("DatePassed")
.HasColumnType("timestamp with time zone");
b.Property("Grade")
.HasColumnType("integer");
b.Property("SemesterSubjectId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SemesterSubjectId")
.IsUnique();
b.ToTable("PassedSubjects");
});
modelBuilder.Entity("iknow_api.Models.Payment", b =>
{
b.Property("UserId")
.HasColumnType("integer");
b.Property("EnrollmentInfoId")
.HasColumnType("integer");
b.Property("Id")
.HasColumnType("integer");
b.HasKey("UserId", "EnrollmentInfoId");
b.HasIndex("EnrollmentInfoId");
b.ToTable("Payment");
});
modelBuilder.Entity("iknow_api.Models.RefreshToken", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("ExpiresAt")
.HasColumnType("timestamp with time zone");
b.Property("IsValid")
.HasColumnType("boolean");
b.Property("Token")
.HasColumnType("text");
b.Property("UserId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("RefreshToken");
});
modelBuilder.Entity("iknow_api.Models.SemesterSubject", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("EnrolledSemesterId")
.HasColumnType("integer");
b.Property("ProfessorId")
.HasColumnType("integer");
b.Property("SubjectId")
.HasColumnType("integer");
b.Property("UserId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("EnrolledSemesterId");
b.HasIndex("ProfessorId");
b.HasIndex("SubjectId");
b.HasIndex("UserId");
b.ToTable("SemesterSubject");
});
modelBuilder.Entity("iknow_api.Models.Subject", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("AwardedCredits")
.HasColumnType("integer");
b.Property("Code")
.HasColumnType("text");
b.Property("DependencyCredit")
.HasColumnType("integer");
b.Property("Name")
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Subjects");
});
modelBuilder.Entity("iknow_api.Models.User", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("Bday")
.HasColumnType("timestamp with time zone");
b.Property("Citizenship")
.HasColumnType("text");
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("EMBG")
.HasColumnType("text");
b.Property("Email")
.HasColumnType("text");
b.Property("Gender")
.HasColumnType("text");
b.Property("Index")
.HasColumnType("text");
b.Property("MiddleName")
.HasColumnType("text");
b.Property("Name")
.HasColumnType("text");
b.Property("Nationality")
.HasColumnType("text");
b.Property("PasswordHash")
.HasColumnType("text");
b.Property("Role")
.HasColumnType("integer");
b.Property("Surname")
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("User");
});
modelBuilder.Entity("iknow_api.Models.UserDocuments", b =>
{
b.Property("UserId")
.HasColumnType("integer");
b.Property("DocumentId")
.HasColumnType("integer");
b.HasKey("UserId", "DocumentId");
b.HasIndex("DocumentId");
b.ToTable("UserDocuments");
});
modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
{
b.HasOne("iknow_api.Models.User", "User")
.WithOne("ContactInfo")
.HasForeignKey("iknow_api.Models.ContactInfo", "UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("iknow_api.Models.DependencySubject", b =>
{
b.HasOne("iknow_api.Models.Subject", "Dependency")
.WithMany("Dependents")
.HasForeignKey("DependencyId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("iknow_api.Models.Subject", "Subject")
.WithMany("Dependencies")
.HasForeignKey("SubjectId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Dependency");
b.Navigation("Subject");
});
modelBuilder.Entity("iknow_api.Models.EnrolledSemesters", b =>
{
b.HasOne("iknow_api.Models.Major", "Major")
.WithMany()
.HasForeignKey("MajorId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("iknow_api.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Major");
b.Navigation("User");
});
modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
{
b.HasOne("iknow_api.Models.Major", "Major")
.WithMany()
.HasForeignKey("MajorId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("iknow_api.Models.User", "User")
.WithOne("EnrollmentInfo")
.HasForeignKey("iknow_api.Models.EnrollmentInfo", "UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Major");
b.Navigation("User");
});
modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
{
b.HasOne("iknow_api.Models.User", "User")
.WithOne("HighSchool")
.HasForeignKey("iknow_api.Models.HighSchool", "UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("iknow_api.Models.MajorSubjects", b =>
{
b.HasOne("iknow_api.Models.Major", "Majors")
.WithMany("Subjects")
.HasForeignKey("MajorId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("iknow_api.Models.Subject", "Subjects")
.WithMany("Majors")
.HasForeignKey("SubjectId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Majors");
b.Navigation("Subjects");
});
modelBuilder.Entity("iknow_api.Models.PassedSubject", b =>
{
b.HasOne("iknow_api.Models.SemesterSubject", "SemesterSubject")
.WithOne("PassedSubject")
.HasForeignKey("iknow_api.Models.PassedSubject", "SemesterSubjectId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("SemesterSubject");
});
modelBuilder.Entity("iknow_api.Models.Payment", b =>
{
b.HasOne("iknow_api.Models.EnrolledSemesters", "EnrolledSemesters")
.WithMany("Users")
.HasForeignKey("EnrollmentInfoId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("iknow_api.Models.User", "User")
.WithMany("EnrolledSemesters")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("EnrolledSemesters");
b.Navigation("User");
});
modelBuilder.Entity("iknow_api.Models.RefreshToken", b =>
{
b.HasOne("iknow_api.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("iknow_api.Models.SemesterSubject", b =>
{
b.HasOne("iknow_api.Models.EnrolledSemesters", "EnrolledSemester")
.WithMany("SemesterSubjects")
.HasForeignKey("EnrolledSemesterId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("iknow_api.Models.User", "Professor")
.WithMany("TeachingSubjects")
.HasForeignKey("ProfessorId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("iknow_api.Models.Subject", "Subject")
.WithMany("SemesterSubjects")
.HasForeignKey("SubjectId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("iknow_api.Models.User", "User")
.WithMany("EnrolledSemesterUserSubjects")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("EnrolledSemester");
b.Navigation("Professor");
b.Navigation("Subject");
b.Navigation("User");
});
modelBuilder.Entity("iknow_api.Models.UserDocuments", b =>
{
b.HasOne("iknow_api.Models.Documents", "Documents")
.WithMany("User")
.HasForeignKey("DocumentId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("iknow_api.Models.User", "User")
.WithMany("Documents")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Documents");
b.Navigation("User");
});
modelBuilder.Entity("iknow_api.Models.Documents", b =>
{
b.Navigation("User");
});
modelBuilder.Entity("iknow_api.Models.EnrolledSemesters", b =>
{
b.Navigation("SemesterSubjects");
b.Navigation("Users");
});
modelBuilder.Entity("iknow_api.Models.Major", b =>
{
b.Navigation("Subjects");
});
modelBuilder.Entity("iknow_api.Models.SemesterSubject", b =>
{
b.Navigation("PassedSubject");
});
modelBuilder.Entity("iknow_api.Models.Subject", b =>
{
b.Navigation("Dependencies");
b.Navigation("Dependents");
b.Navigation("Majors");
b.Navigation("SemesterSubjects");
});
modelBuilder.Entity("iknow_api.Models.User", b =>
{
b.Navigation("ContactInfo");
b.Navigation("Documents");
b.Navigation("EnrolledSemesterUserSubjects");
b.Navigation("EnrolledSemesters");
b.Navigation("EnrollmentInfo");
b.Navigation("HighSchool");
b.Navigation("TeachingSubjects");
});
#pragma warning restore 612, 618
}
}
}