Class BlockService
- Namespace
- UsluzionicaServer.Services
- Assembly
- UsluzionicaServer.dll
Blokiranje korisnika.
SIMETRIJA JE CELA POENTA. Red u bazi je usmeren (ko koga je blokirao), ali svaka provera gleda oba smera. Ako A blokira B:
• A ne vidi B-ove oglase, profil, recenzije ni poruke • B ne vidi A-ove — iako B ništa nije uradio • nijedan ne može da piše onom drugom
Druga stavka je ta koja se lako preskoči, a bez nje blokada ne znači ništa: osoba od koje se korisnik sklanja i dalje bi mu gledala oglase i pisala.
ŠTA SE NE DIRA: već obavljene rezervacije, isplaćeni tokeni i istorija transakcija. Blokada je socijalna mera, ne brisanje prošlosti — ako se zabrani pristup istoriji, prvi spor oko novca ostaje bez traga.
public sealed class BlockService
- Inheritance
-
BlockService
- Inherited Members
Constructors
- BlockService(AppDbContext, ILogger<BlockService>)
Blokiranje korisnika.
SIMETRIJA JE CELA POENTA. Red u bazi je usmeren (ko koga je blokirao), ali svaka provera gleda oba smera. Ako A blokira B:
• A ne vidi B-ove oglase, profil, recenzije ni poruke • B ne vidi A-ove — iako B ništa nije uradio • nijedan ne može da piše onom drugom
Druga stavka je ta koja se lako preskoči, a bez nje blokada ne znači ništa: osoba od koje se korisnik sklanja i dalje bi mu gledala oglase i pisala.
ŠTA SE NE DIRA: već obavljene rezervacije, isplaćeni tokeni i istorija transakcija. Blokada je socijalna mera, ne brisanje prošlosti — ako se zabrani pristup istoriji, prvi spor oko novca ostaje bez traga.
Methods
- FilterBlocked(IQueryable<Listing>, AppDbContext, string?)
Filtrira oglase blokiranih iz bilo kog upita nad
Listings.Koristi se na svakom mestu koje vraća oglase — pretraga, omiljeni, profil uslugodavca. Jedan metod, da se pravilo ne prepisuje po servisima i ne raziđe.
NOT EXISTS, a ne učitavanje skupa blokiranih u memoriju pa Contains(): Contains pravi IN (@p1, @p2, ...) što radi dok je lista kratka, a puca kad neko blokira stotine ljudi — SQL Server ima granicu broja parametara, a plan upita postane neupotrebljiv. NOT EXISTS ne zavisi od veličine i koristi oba indeksa iz AppDbContext.
- JeBlokiranoAsync(string, string)
Postoji li blokada između dva korisnika, u bilo kom smeru.
Za pojedinačne provere: slanje poruke, otvaranje razgovora, pisanje recenzije, rezervacija.
- ListaBlokiranihAsync(string)
Koga je ovaj korisnik blokirao. Samo njegovi redovi — ne i oni u kojima je on blokiran, jer te ne može ni da vidi ni da ukloni.
- SviBlokiraniAsync(string)
Svi korisnici sa kojima je
userIdu blokadi, u bilo kom smeru.Za filtriranje lista koje su VEĆ učitane u memoriju (razgovori, recenzije) — tu je skup jeftiniji od upita po stavci.