Mój kontroler zwraca DTO obiektu Movie
public class Movie {
private final String title;
private final MovieType type;
private final List<LanguageType> languages;
private final List<CountryType> countries;
...
}
Jest to standardowy obiektu filmu jaki zwracam po wywołaniu adresu /movies/{id}
. Jednak chciałbym razem z tym filmem zwrócić ocenę zalogowanego użytkownika. Tak jak jest to w przypadku np. inny serwisów jak IMDB. Jak wejdzie się na stronę filmu, to jest tylko ogólna ocena, ale jeśli zalogujesz się na swoje konto i ocenisz film, to na stronie filmu będzie podana Twoja ocena. Więc pomyślałem, aby do obiektu DTO Movie
dodać pole yourRating
gdzie będzie podana Twoja ocena jeśli jesteś zalogowany i oceniłem film. Wyglądałoby to w ten sposób
public class Movie {
private final String title;
private final MovieType type;
private final List<LanguageType> languages;
private final List<CountryType> countries;
private final Float yourRating; \\ Twoja ocena
...
}
Utworzyłem wątek odnośnie tego na SO i użytkownik tam sugeruje, abym stworzył nowy obiekt UserMovie
dziedziczący z Movie
i posiadający tylko jedno dodatkowe pole yourRating
.
Chciałem zapytać się Was, czy tak to własnie ma wyglądać, że niezalogowanemu użytkownikowi adres /movies/{id}
zwraca DTO Movie
, a zalogowanemu obiekt DTO UserMovie
(dziedziczączy zawiera wszystkie pola Movie + pole yourRating). Czy trzeba w taki sposób separować tak indywidualne dane dla zalogowanego użytkownika.