// using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; using UniVerse.Infrastructure.Data; #nullable disable namespace UniVerse.Infrastructure.Migrations { [DbContext(typeof(AppDbContext))] [Migration("20260517230001_LevelThresholds")] partial class LevelThresholds { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.7") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "coin_transaction_type", "coin_transaction_type", new[] { "review_reward", "achievement_reward", "attendance_reward", "admin_adjustment" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "review_llm_status", "review_llm_status", new[] { "pending", "analyzed", "rejected" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "review_sentiment", "review_sentiment", new[] { "positive", "neutral", "negative" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "tag_type", "tag_type", new[] { "institute", "faculty", "subject", "organization", "topic", "other" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "user_role", "user_role", new[] { "student", "teacher", "admin" }); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("UniVerse.Domain.Entities.Achievement", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CoinReward") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasDefaultValue(0) .HasColumnName("coin_reward"); b.Property("Condition") .HasColumnType("text") .HasColumnName("condition"); b.Property("CreatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("created_at") .HasDefaultValueSql("NOW()"); b.Property("Description") .HasColumnType("text") .HasColumnName("description"); b.Property("IconUrl") .HasMaxLength(500) .HasColumnType("character varying(500)") .HasColumnName("icon_url"); b.Property("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("name"); b.Property("XpReward") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasDefaultValue(0) .HasColumnName("xp_reward"); b.HasKey("Id"); b.ToTable("achievements", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.CoinTransaction", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AchievementId") .HasColumnType("integer") .HasColumnName("achievement_id"); b.Property("Amount") .HasColumnType("integer") .HasColumnName("amount"); b.Property("CreatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("created_at") .HasDefaultValueSql("NOW()"); b.Property("Description") .HasMaxLength(500) .HasColumnType("character varying(500)") .HasColumnName("description"); b.Property("ReviewId") .HasColumnType("integer") .HasColumnName("review_id"); b.Property("Type") .HasColumnType("integer") .HasColumnName("type"); b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.HasKey("Id"); b.HasIndex("AchievementId"); b.HasIndex("ReviewId"); b.HasIndex("UserId"); b.ToTable("coin_transactions", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.Course", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("created_at") .HasDefaultValueSql("NOW()"); b.Property("Description") .HasColumnType("text") .HasColumnName("description"); b.Property("ExternalId") .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("external_id"); b.Property("IsSynced") .ValueGeneratedOnAdd() .HasColumnType("boolean") .HasDefaultValue(false) .HasColumnName("is_synced"); b.Property("Name") .IsRequired() .HasMaxLength(500) .HasColumnType("character varying(500)") .HasColumnName("name"); b.Property("UpdatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("updated_at") .HasDefaultValueSql("NOW()"); b.HasKey("Id"); b.HasIndex("ExternalId") .IsUnique() .HasFilter("external_id IS NOT NULL"); b.ToTable("courses", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.CourseTag", b => { b.Property("CourseId") .HasColumnType("integer") .HasColumnName("course_id"); b.Property("TagId") .HasColumnType("integer") .HasColumnName("tag_id"); b.Property("Id") .HasColumnType("integer") .HasColumnName("id"); b.HasKey("CourseId", "TagId"); b.HasIndex("TagId"); b.HasIndex("CourseId", "TagId") .IsUnique(); b.ToTable("course_tags", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.Lecture", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CourseId") .HasColumnType("integer") .HasColumnName("course_id"); b.Property("CreatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("created_at") .HasDefaultValueSql("NOW()"); b.Property("Description") .HasColumnType("text") .HasColumnName("description"); b.Property("EndsAt") .HasColumnType("timestamp with time zone") .HasColumnName("ends_at"); b.Property("ExternalId") .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("external_id"); b.Property("Format") .HasColumnType("integer") .HasColumnName("format"); b.Property("IsOpen") .ValueGeneratedOnAdd() .HasColumnType("boolean") .HasDefaultValue(true) .HasColumnName("is_open"); b.Property("LocationId") .HasColumnType("integer") .HasColumnName("location_id"); b.Property("MaxEnrollments") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasDefaultValue(0) .HasColumnName("max_enrollments"); b.Property("OnlineUrl") .HasMaxLength(500) .HasColumnType("character varying(500)") .HasColumnName("online_url"); b.Property("StartsAt") .HasColumnType("timestamp with time zone") .HasColumnName("starts_at"); b.Property("TeacherId") .HasColumnType("integer") .HasColumnName("teacher_id"); b.Property("Title") .IsRequired() .HasMaxLength(500) .HasColumnType("character varying(500)") .HasColumnName("title"); b.Property("UpdatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("updated_at") .HasDefaultValueSql("NOW()"); b.HasKey("Id"); b.HasIndex("CourseId"); b.HasIndex("ExternalId") .IsUnique() .HasFilter("external_id IS NOT NULL"); b.HasIndex("LocationId"); b.HasIndex("StartsAt"); b.HasIndex("TeacherId"); b.ToTable("lectures", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.LectureEnrollment", b => { b.Property("LectureId") .HasColumnType("integer") .HasColumnName("lecture_id"); b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.Property("Attended") .ValueGeneratedOnAdd() .HasColumnType("boolean") .HasDefaultValue(false) .HasColumnName("attended"); b.Property("CreatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("created_at") .HasDefaultValueSql("NOW()"); b.Property("Id") .HasColumnType("integer") .HasColumnName("id"); b.HasKey("LectureId", "UserId"); b.HasIndex("UserId"); b.HasIndex("LectureId", "UserId") .IsUnique(); b.ToTable("lecture_enrollments", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.LevelThreshold", b => { b.Property("Level") .HasColumnType("integer") .HasColumnName("level"); b.Property("RequiredXp") .HasColumnType("integer") .HasColumnName("required_xp"); b.HasKey("Level"); b.HasIndex("RequiredXp") .IsUnique(); b.ToTable("level_thresholds", null, t => { t.HasCheckConstraint("CK_level_thresholds_level_positive", "level > 0"); t.HasCheckConstraint("CK_level_thresholds_required_xp_non_negative", "required_xp >= 0"); }); b.HasData( new { Level = 1, RequiredXp = 0 }, new { Level = 2, RequiredXp = 100 }, new { Level = 3, RequiredXp = 300 }, new { Level = 4, RequiredXp = 600 }, new { Level = 5, RequiredXp = 1000 }, new { Level = 6, RequiredXp = 1500 }, new { Level = 7, RequiredXp = 2500 }, new { Level = 8, RequiredXp = 4000 }); }); modelBuilder.Entity("UniVerse.Domain.Entities.Location", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Address") .HasMaxLength(500) .HasColumnType("character varying(500)") .HasColumnName("address"); b.Property("Building") .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("building"); b.Property("CreatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("created_at") .HasDefaultValueSql("NOW()"); b.Property("ExternalId") .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("external_id"); b.Property("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("name"); b.Property("Room") .HasMaxLength(100) .HasColumnType("character varying(100)") .HasColumnName("room"); b.HasKey("Id"); b.HasIndex("ExternalId") .IsUnique() .HasFilter("external_id IS NOT NULL"); b.ToTable("locations", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.RefreshToken", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("created_at") .HasDefaultValueSql("NOW()"); b.Property("ExpiresAt") .HasColumnType("timestamp with time zone") .HasColumnName("expires_at"); b.Property("RevokedAt") .HasColumnType("timestamp with time zone") .HasColumnName("revoked_at"); b.Property("Token") .IsRequired() .HasMaxLength(500) .HasColumnType("character varying(500)") .HasColumnName("token"); b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.HasKey("Id"); b.HasIndex("Token") .IsUnique(); b.HasIndex("UserId"); b.ToTable("refresh_tokens", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.Review", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("created_at") .HasDefaultValueSql("NOW()"); b.Property("IsInformative") .HasColumnType("boolean") .HasColumnName("is_informative"); b.Property("LectureId") .HasColumnType("integer") .HasColumnName("lecture_id"); b.Property("LlmStatus") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasDefaultValue(0) .HasColumnName("llm_status"); b.PrimitiveCollection("LlmTags") .HasColumnType("text[]") .HasColumnName("llm_tags"); b.Property("QualityScore") .HasColumnType("double precision") .HasColumnName("quality_score"); b.Property("Rating") .HasColumnType("integer") .HasColumnName("rating"); b.Property("Sentiment") .HasColumnType("integer") .HasColumnName("sentiment"); b.Property("Text") .HasColumnType("text") .HasColumnName("text"); b.Property("UpdatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("updated_at") .HasDefaultValueSql("NOW()"); b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.HasKey("Id"); b.HasIndex("LlmStatus"); b.HasIndex("UserId"); b.HasIndex("LectureId", "UserId") .IsUnique(); b.ToTable("reviews", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.StudentProfile", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("EnrollmentYear") .HasColumnType("integer") .HasColumnName("enrollment_year"); b.Property("Faculty") .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("faculty"); b.Property("GroupName") .HasMaxLength(100) .HasColumnType("character varying(100)") .HasColumnName("group_name"); b.Property("Specialty") .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("specialty"); b.Property("StudentId") .HasMaxLength(50) .HasColumnType("character varying(50)") .HasColumnName("student_id"); b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.HasKey("Id"); b.HasIndex("UserId") .IsUnique(); b.ToTable("student_profiles", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.Tag", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("created_at") .HasDefaultValueSql("NOW()"); b.Property("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("name"); b.Property("ParentId") .HasColumnType("integer") .HasColumnName("parent_id"); b.Property("Type") .HasColumnType("integer") .HasColumnName("type"); b.HasKey("Id"); b.HasIndex("ParentId"); b.ToTable("tags", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.TeacherProfile", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Bio") .HasColumnType("text") .HasColumnName("bio"); b.Property("Department") .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("department"); b.Property("ModeusId") .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("modeus_id"); b.Property("Title") .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("title"); b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.HasKey("Id"); b.HasIndex("UserId") .IsUnique(); b.ToTable("teacher_profiles", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.User", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AvatarUrl") .HasMaxLength(500) .HasColumnType("character varying(500)") .HasColumnName("avatar_url"); b.Property("Coins") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasDefaultValue(0) .HasColumnName("coins"); b.Property("CreatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("created_at") .HasDefaultValueSql("NOW()"); b.Property("DisplayName") .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("display_name"); b.Property("Email") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("email"); b.Property("IsActive") .ValueGeneratedOnAdd() .HasColumnType("boolean") .HasDefaultValue(true) .HasColumnName("is_active"); b.Property("MicrosoftId") .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("microsoft_id"); b.Property("UpdatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("updated_at") .HasDefaultValueSql("NOW()"); b.Property("Xp") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasDefaultValue(0) .HasColumnName("xp"); b.HasKey("Id"); b.HasIndex("Email") .IsUnique(); b.HasIndex("MicrosoftId") .IsUnique() .HasFilter("microsoft_id IS NOT NULL"); b.ToTable("users", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.UserAchievement", b => { b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.Property("AchievementId") .HasColumnType("integer") .HasColumnName("achievement_id"); b.Property("AwardedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("awarded_at") .HasDefaultValueSql("NOW()"); b.Property("Id") .HasColumnType("integer") .HasColumnName("id"); b.HasKey("UserId", "AchievementId"); b.HasIndex("AchievementId"); b.HasIndex("UserId", "AchievementId") .IsUnique(); b.ToTable("user_achievements", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.UserNotification", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Body") .IsRequired() .HasMaxLength(1000) .HasColumnType("character varying(1000)") .HasColumnName("body"); b.Property("CreatedAt") .ValueGeneratedOnAdd() .HasColumnType("timestamp with time zone") .HasColumnName("created_at") .HasDefaultValueSql("NOW()"); b.Property("IsRead") .ValueGeneratedOnAdd() .HasColumnType("boolean") .HasDefaultValue(false) .HasColumnName("is_read"); b.Property("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("title"); b.Property("Type") .IsRequired() .HasMaxLength(50) .HasColumnType("character varying(50)") .HasColumnName("type"); b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.HasKey("Id"); b.HasIndex("UserId", "CreatedAt"); b.ToTable("user_notifications", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.UserRoleAssignment", b => { b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.Property("Role") .HasColumnType("integer") .HasColumnName("role"); b.HasKey("UserId", "Role"); b.ToTable("user_roles", (string)null); }); modelBuilder.Entity("UniVerse.Domain.Entities.CoinTransaction", b => { b.HasOne("UniVerse.Domain.Entities.Achievement", "Achievement") .WithMany() .HasForeignKey("AchievementId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("UniVerse.Domain.Entities.Review", "Review") .WithMany("CoinTransactions") .HasForeignKey("ReviewId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("UniVerse.Domain.Entities.User", "User") .WithMany("CoinTransactions") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Achievement"); b.Navigation("Review"); b.Navigation("User"); }); modelBuilder.Entity("UniVerse.Domain.Entities.CourseTag", b => { b.HasOne("UniVerse.Domain.Entities.Course", "Course") .WithMany("CourseTags") .HasForeignKey("CourseId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("UniVerse.Domain.Entities.Tag", "Tag") .WithMany("CourseTags") .HasForeignKey("TagId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Course"); b.Navigation("Tag"); }); modelBuilder.Entity("UniVerse.Domain.Entities.Lecture", b => { b.HasOne("UniVerse.Domain.Entities.Course", "Course") .WithMany("Lectures") .HasForeignKey("CourseId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("UniVerse.Domain.Entities.Location", "Location") .WithMany("Lectures") .HasForeignKey("LocationId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("UniVerse.Domain.Entities.User", "Teacher") .WithMany() .HasForeignKey("TeacherId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("Course"); b.Navigation("Location"); b.Navigation("Teacher"); }); modelBuilder.Entity("UniVerse.Domain.Entities.LectureEnrollment", b => { b.HasOne("UniVerse.Domain.Entities.Lecture", "Lecture") .WithMany("Enrollments") .HasForeignKey("LectureId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("UniVerse.Domain.Entities.User", "User") .WithMany("Enrollments") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Lecture"); b.Navigation("User"); }); modelBuilder.Entity("UniVerse.Domain.Entities.RefreshToken", b => { b.HasOne("UniVerse.Domain.Entities.User", "User") .WithMany("RefreshTokens") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("User"); }); modelBuilder.Entity("UniVerse.Domain.Entities.Review", b => { b.HasOne("UniVerse.Domain.Entities.Lecture", "Lecture") .WithMany("Reviews") .HasForeignKey("LectureId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("UniVerse.Domain.Entities.User", "User") .WithMany("Reviews") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Lecture"); b.Navigation("User"); }); modelBuilder.Entity("UniVerse.Domain.Entities.StudentProfile", b => { b.HasOne("UniVerse.Domain.Entities.User", "User") .WithOne("StudentProfile") .HasForeignKey("UniVerse.Domain.Entities.StudentProfile", "UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("User"); }); modelBuilder.Entity("UniVerse.Domain.Entities.Tag", b => { b.HasOne("UniVerse.Domain.Entities.Tag", "Parent") .WithMany("Children") .HasForeignKey("ParentId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("Parent"); }); modelBuilder.Entity("UniVerse.Domain.Entities.TeacherProfile", b => { b.HasOne("UniVerse.Domain.Entities.User", "User") .WithOne("TeacherProfile") .HasForeignKey("UniVerse.Domain.Entities.TeacherProfile", "UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("User"); }); modelBuilder.Entity("UniVerse.Domain.Entities.UserAchievement", b => { b.HasOne("UniVerse.Domain.Entities.Achievement", "Achievement") .WithMany("UserAchievements") .HasForeignKey("AchievementId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("UniVerse.Domain.Entities.User", "User") .WithMany("UserAchievements") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Achievement"); b.Navigation("User"); }); modelBuilder.Entity("UniVerse.Domain.Entities.UserNotification", b => { b.HasOne("UniVerse.Domain.Entities.User", "User") .WithMany("Notifications") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("User"); }); modelBuilder.Entity("UniVerse.Domain.Entities.UserRoleAssignment", b => { b.HasOne("UniVerse.Domain.Entities.User", "User") .WithMany("Roles") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("User"); }); modelBuilder.Entity("UniVerse.Domain.Entities.Achievement", b => { b.Navigation("UserAchievements"); }); modelBuilder.Entity("UniVerse.Domain.Entities.Course", b => { b.Navigation("CourseTags"); b.Navigation("Lectures"); }); modelBuilder.Entity("UniVerse.Domain.Entities.Lecture", b => { b.Navigation("Enrollments"); b.Navigation("Reviews"); }); modelBuilder.Entity("UniVerse.Domain.Entities.Location", b => { b.Navigation("Lectures"); }); modelBuilder.Entity("UniVerse.Domain.Entities.Review", b => { b.Navigation("CoinTransactions"); }); modelBuilder.Entity("UniVerse.Domain.Entities.Tag", b => { b.Navigation("Children"); b.Navigation("CourseTags"); }); modelBuilder.Entity("UniVerse.Domain.Entities.User", b => { b.Navigation("CoinTransactions"); b.Navigation("Enrollments"); b.Navigation("Notifications"); b.Navigation("RefreshTokens"); b.Navigation("Reviews"); b.Navigation("Roles"); b.Navigation("StudentProfile"); b.Navigation("TeacherProfile"); b.Navigation("UserAchievements"); }); #pragma warning restore 612, 618 } } }