Cześć,
uczę się tworzyć aplikacje webowe (API w C#) - do tej pory tworzyłem tylko desktopy.
Powiedzmy, że mam AuthController
z endpointami /login
, /register
i /refresh
(dla tokenów JWT). Żeby nie umieszczać żadnej logiki w kontrolerze, stworzyłem AuthService
z metodami Login(), Register() i Refresh(), które wstrzykuję za pomocą DI.
Ale co jeśli mam już stworzone repozytorium, które pokrywa wszystkie akcje kontrolera? Czy też powinienem tworzyć dla niego oddzielnie serwis?
Dla przykładu, chcę stworzyć CustomersController
ze standardowymi metodami GET, POST, PUT i DELETE. Mam już utworzone CustomersRepository
, które implementuje metody takie jak GetCustomers(), GetCustomerById(), AddCustomer(), itd. Metody te walidują model, ustawiają pola takie jak data dodania czy edycji, sprawdzają uprawnienia użytkownika (każdy użytkownik może mieć inne uprawnienia, więc pobieram je z bazy) i następnie wysyłają kwerendę do sql.
Czy w takim przypadku mogę do takiego kontrolera wstzyknąć samo repozytorium, czy może powinienem to jakoś rozbić na serwisy? (Nie chodzi mi o mikroserwisy, tworzę monolit)
Dodam jeszcze, że metody repozytorium nie zawierają całego kodu - walidację przeprowadzam w oddzielnej klasie, np. CustomersValidator
, a uprawnienia sprawdzam z pomocą np. PrivilegesRepository.GetPrivilege()
.
Z góry bardzo dziękuję.