feat: implement channel membership management and ensure default channels are public

This commit is contained in:
HueByte
2026-02-19 19:21:27 +01:00
parent 246eb2b0bb
commit 38b60e5626
11 changed files with 446 additions and 7 deletions
@@ -11,6 +11,7 @@ public class EchoHubDbContext : DbContext
public DbSet<Channel> Channels => Set<Channel>();
public DbSet<Message> Messages => Set<Message>();
public DbSet<RefreshToken> RefreshTokens => Set<RefreshToken>();
public DbSet<ChannelMembership> ChannelMemberships => Set<ChannelMembership>();
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
@@ -60,6 +61,23 @@ public class EchoHubDbContext : DbContext
entity.Property(m => m.AttachmentFileName).HasMaxLength(255);
});
modelBuilder.Entity<ChannelMembership>(entity =>
{
entity.HasKey(cm => new { cm.UserId, cm.ChannelId });
entity.HasIndex(cm => cm.UserId);
entity.HasIndex(cm => cm.ChannelId);
entity.HasOne<Channel>()
.WithMany()
.HasForeignKey(cm => cm.ChannelId)
.OnDelete(DeleteBehavior.Cascade);
entity.HasOne<User>()
.WithMany()
.HasForeignKey(cm => cm.UserId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<RefreshToken>(entity =>
{
entity.HasKey(r => r.Id);