using SameBeat.Domain.Encje; namespace SameBeat.Application.Interfejsy; /// Log/audyt przyznan mikrofonu (ETAP 5) -- patrz komentarz przy HistoriaMikrofonu. To NIE jest zywy stan. public interface IRepozytoriumHistoriiMikrofonu { void Dodaj(HistoriaMikrofonu wpis); /// /// Ostatni jeszcze niezamkniety wpis (KoniecFaktycznyUtc == null) dla danego uczestnika w ramach /// wydarzenia -- uzywane przy odbieraniu mikrofonu (recznym albo przez timer), zeby wiedziec, /// ktory wiersz zamknac. Jeden aktywny mikrofon na raz (patrz Wydarzenie.PrzyznajMikrofon), wiec /// w praktyce jest co najwyzej jeden taki wiersz na wydarzenie -- OrderByDescending na wszelki /// wypadek gdyby kiedys ten niezmiennik zniknal. /// Task ZnajdzOtwartyAsync(Guid wydarzenieId, Guid uczestnikOczekujacyId, CancellationToken token = default); }