using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using SameBeat.Domain.Encje; namespace SameBeat.Infrastructure.BazaDanych.Konfiguracje; public class WiadomoscCzatuKonfiguracja : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder budowniczy) { budowniczy.ToTable("WiadomosciCzatu"); budowniczy.HasKey(w => w.Id); budowniczy.Property(w => w.WydarzenieId).IsRequired(); budowniczy.Property(w => w.NadawcaTozsamoscId).IsRequired(); budowniczy.Property(w => w.Nick) .IsRequired() .HasMaxLength(UczestnikCzatu.MaksymalnaDlugoscNicku); budowniczy.Property(w => w.Tresc) .IsRequired() .HasMaxLength(WiadomoscCzatu.MaksymalnaDlugoscTresci); budowniczy.Property(w => w.WyslanoUtc).IsRequired(); budowniczy.Property(w => w.Usunieta).IsRequired(); // Dwa glowne zapytania: historia czatu per wydarzenie posortowana po czasie (PobierzHistorieAsync) // i rate limit -- ostatnia wiadomosc danej tozsamosci (PobierzOstatniaWiadomoscUczestnikaAsync). budowniczy.HasIndex(w => new { w.WydarzenieId, w.WyslanoUtc }); budowniczy.HasIndex(w => new { w.NadawcaTozsamoscId, w.WyslanoUtc }); } }