//
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
}
}
}