namespace Hutopy.Modules.Contents.Data; public class ContentsDbContext( DbContextOptions options) : DbContext(options) { public const string SchemaName = "Content"; public DbSet Albums => Set(); public DbSet AlbumPhotos => Set(); protected override void OnModelCreating( ModelBuilder modelBuilder) { modelBuilder.HasDefaultSchema(SchemaName); // Album configuration modelBuilder .Entity() .Property(c => c.CreatedAt) .ValueGeneratedOnAdd() .HasDefaultValueSql("CURRENT_TIMESTAMP"); modelBuilder .Entity() .Property(c => c.IsDeleted) .HasComputedColumnSql("\"DeletedAt\" IS NOT NULL", true); modelBuilder .Entity() .HasQueryFilter(a => !a.IsDeleted); // AlbumPhoto configuration modelBuilder .Entity() .Property(c => c.CreatedAt) .ValueGeneratedOnAdd() .HasDefaultValueSql("CURRENT_TIMESTAMP"); modelBuilder .Entity() .Property(c => c.IsDeleted) .HasComputedColumnSql("\"DeletedAt\" IS NOT NULL", true); modelBuilder .Entity() .HasOne(ap => ap.Album) .WithMany(a => a.Photos) .HasForeignKey(ap => ap.AlbumId) .IsRequired(); modelBuilder .Entity() .HasQueryFilter(ap => !ap.IsDeleted); } }