Repository Pattern z filtering, sorting, paging

0

No właśnie, jak zaimplementować generyczne repozytorium umożliwiające filtrowanie, sortowanie, paging, tak aby nie złamać zasad SOLID i żeby z tego wszystkiego nie wyszedł anty-wzorzec, a tak żeby fajnie się z tego korzystało i kod był przejrzysty?

0

Moim zdaniem repozytoria z definicji łamią SOLID, więc się nie da.

Napisać metodę, która:

  1. Przyjmuje obiekt zawierający: numer strony, wielkość strony, wartość sortowania, kierunek sortowania i listę warunków filtrowania;
  2. Zwrócić obiekt zawierający listę wybranych rekordów oraz liczbę wszystkich pasujących wyników filtrowania.
    Reszta zależy od:
  3. języka;
  4. tego, co jest źródłem danych i w jaki sposób na nim operujesz;
  5. w mniejszym stopniu od tego, co z repozytorium korzysta.
0

Jeśli w repozytorium lata jakiś obiekt typu Query :

  • możesz do tego repo wstrzykiwać obiekt (dajmy na to Filter, Finder etc.), który będzie miał całą logikę związaną z przełożeniem parametrów na stronicowanie i klauzulę "where" zapytania
  • w metodzie typu findAll() potraktować to Query owym Finderem i wtedy zwrócić wynik

1 użytkowników online, w tym zalogowanych: 0, gości: 1