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
0
Moim zdaniem repozytoria z definicji łamią SOLID, więc się nie da.
Napisać metodę, która:
- Przyjmuje obiekt zawierający: numer strony, wielkość strony, wartość sortowania, kierunek sortowania i listę warunków filtrowania;
- Zwrócić obiekt zawierający listę wybranych rekordów oraz liczbę wszystkich pasujących wyników filtrowania.
Reszta zależy od: - języka;
- tego, co jest źródłem danych i w jaki sposób na nim operujesz;
- 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