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