// using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using TafsirQuran.Infrastructure.Persistence; #nullable disable namespace TafsirQuran.Infrastructure.Persistence.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", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); modelBuilder.Entity("TafsirQuran.Domain.Entities.AppUser", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetimeoffset"); b.Property("DisplayName") .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)"); b.Property("Email") .IsRequired() .HasMaxLength(256) .HasColumnType("nvarchar(256)"); b.Property("PasswordHash") .IsRequired() .HasColumnType("nvarchar(max)"); b.HasKey("Id"); b.HasIndex("Email") .IsUnique(); b.ToTable("Users"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.Ayah", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("Number") .HasColumnType("int"); b.Property("SurahId") .HasColumnType("int"); b.Property("TextAr") .IsRequired() .HasColumnType("nvarchar(max)"); b.Property("TextFa") .HasColumnType("nvarchar(max)"); b.HasKey("Id"); b.HasIndex("SurahId", "Number") .IsUnique(); b.ToTable("Ayahs"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.Bookmark", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetimeoffset"); b.Property("DeviceId") .IsRequired() .HasMaxLength(64) .HasColumnType("nvarchar(64)"); b.Property("EpisodeId") .HasColumnType("uniqueidentifier"); b.Property("Note") .HasMaxLength(500) .HasColumnType("nvarchar(500)"); b.Property("UserId") .HasColumnType("uniqueidentifier"); b.HasKey("Id"); b.HasIndex("EpisodeId"); b.HasIndex("UserId"); b.HasIndex("DeviceId", "UserId", "EpisodeId") .IsUnique() .HasFilter("[UserId] IS NOT NULL"); b.ToTable("Bookmarks"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.Favorite", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetimeoffset"); b.Property("DeviceId") .IsRequired() .HasMaxLength(64) .HasColumnType("nvarchar(64)"); b.Property("EpisodeId") .HasColumnType("uniqueidentifier"); b.Property("UserId") .HasColumnType("uniqueidentifier"); b.HasKey("Id"); b.HasIndex("EpisodeId"); b.HasIndex("UserId"); b.HasIndex("DeviceId", "UserId", "EpisodeId") .IsUnique() .HasFilter("[UserId] IS NOT NULL"); b.ToTable("Favorites"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.ListeningProgress", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("DeviceId") .IsRequired() .HasMaxLength(64) .HasColumnType("nvarchar(64)"); b.Property("EpisodeId") .HasColumnType("uniqueidentifier"); b.Property("PositionSeconds") .HasColumnType("float"); b.Property("UpdatedAt") .HasColumnType("datetimeoffset"); b.Property("UserId") .HasColumnType("uniqueidentifier"); b.HasKey("Id"); b.HasIndex("EpisodeId"); b.HasIndex("UserId"); b.HasIndex("DeviceId", "UserId"); b.ToTable("ListeningProgresses"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.Surah", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); b.Property("NameAr") .IsRequired() .HasMaxLength(80) .HasColumnType("nvarchar(80)"); b.Property("NameFa") .IsRequired() .HasMaxLength(80) .HasColumnType("nvarchar(80)"); b.Property("Number") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("Number") .IsUnique(); b.ToTable("Surahs"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.Tafsir", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("Author") .IsRequired() .HasMaxLength(120) .HasColumnType("nvarchar(120)"); b.Property("CoverUrl") .HasColumnType("nvarchar(max)"); b.Property("IsPublished") .HasColumnType("bit"); b.Property("Slug") .IsRequired() .HasMaxLength(120) .HasColumnType("nvarchar(120)"); b.Property("Title") .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.HasKey("Id"); b.HasIndex("Slug") .IsUnique(); b.ToTable("Tafsirs"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.TafsirEpisode", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("AudioUrl") .IsRequired() .HasColumnType("nvarchar(max)"); b.Property("AyahNumber") .HasColumnType("int"); b.Property("DurationSeconds") .HasColumnType("int"); b.Property("SortOrder") .HasColumnType("int"); b.Property("Summary") .HasColumnType("nvarchar(max)"); b.Property("SurahId") .HasColumnType("int"); b.Property("TafsirId") .HasColumnType("uniqueidentifier"); b.Property("Title") .IsRequired() .HasMaxLength(300) .HasColumnType("nvarchar(300)"); b.HasKey("Id"); b.HasIndex("SurahId"); b.HasIndex("TafsirId", "SortOrder"); b.ToTable("Episodes"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.Ayah", b => { b.HasOne("TafsirQuran.Domain.Entities.Surah", "Surah") .WithMany("Ayahs") .HasForeignKey("SurahId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Surah"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.Bookmark", b => { b.HasOne("TafsirQuran.Domain.Entities.TafsirEpisode", "Episode") .WithMany() .HasForeignKey("EpisodeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("TafsirQuran.Domain.Entities.AppUser", "User") .WithMany("Bookmarks") .HasForeignKey("UserId"); b.Navigation("Episode"); b.Navigation("User"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.Favorite", b => { b.HasOne("TafsirQuran.Domain.Entities.TafsirEpisode", "Episode") .WithMany() .HasForeignKey("EpisodeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("TafsirQuran.Domain.Entities.AppUser", "User") .WithMany("Favorites") .HasForeignKey("UserId"); b.Navigation("Episode"); b.Navigation("User"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.ListeningProgress", b => { b.HasOne("TafsirQuran.Domain.Entities.TafsirEpisode", "Episode") .WithMany() .HasForeignKey("EpisodeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("TafsirQuran.Domain.Entities.AppUser", "User") .WithMany("ListeningProgresses") .HasForeignKey("UserId"); b.Navigation("Episode"); b.Navigation("User"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.TafsirEpisode", b => { b.HasOne("TafsirQuran.Domain.Entities.Surah", "Surah") .WithMany("Episodes") .HasForeignKey("SurahId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("TafsirQuran.Domain.Entities.Tafsir", "Tafsir") .WithMany("Episodes") .HasForeignKey("TafsirId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Surah"); b.Navigation("Tafsir"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.AppUser", b => { b.Navigation("Bookmarks"); b.Navigation("Favorites"); b.Navigation("ListeningProgresses"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.Surah", b => { b.Navigation("Ayahs"); b.Navigation("Episodes"); }); modelBuilder.Entity("TafsirQuran.Domain.Entities.Tafsir", b => { b.Navigation("Episodes"); }); #pragma warning restore 612, 618 } } }