|
8 | 8 | import ru.yandex.practicum.filmorate.dto.FilmDto;
|
9 | 9 | import ru.yandex.practicum.filmorate.dto.FilmSearchDto;
|
10 | 10 | import ru.yandex.practicum.filmorate.mapper.FilmMapper;
|
11 |
| -import ru.yandex.practicum.filmorate.model.EventType; |
12 |
| -import ru.yandex.practicum.filmorate.model.Film; |
13 |
| -import ru.yandex.practicum.filmorate.model.Operation; |
14 |
| -import ru.yandex.practicum.filmorate.model.SearchBy; |
| 11 | +import ru.yandex.practicum.filmorate.model.*; |
15 | 12 | import ru.yandex.practicum.filmorate.service.FilmService;
|
16 | 13 |
|
17 | 14 | import java.util.ArrayList;
|
18 | 15 | import java.util.Collection;
|
19 |
| -import java.util.Map; |
20 | 16 | import java.util.stream.Collectors;
|
21 | 17 |
|
22 | 18 | import static ru.yandex.practicum.filmorate.mapper.FilmMapper.toDto;
|
|
27 | 23 | @Slf4j
|
28 | 24 | public class FilmServiceImpl implements FilmService {
|
29 | 25 |
|
30 |
| - public static final Map<String, String> ALLOWED_SORTS = Map.of( |
31 |
| - "year", "f.release_date", |
32 |
| - "likes", "likes DESC" |
33 |
| - ); |
34 |
| - |
35 | 26 | private final FilmStorage filmStorage;
|
36 | 27 |
|
37 | 28 | private final UserStorage userStorage;
|
@@ -91,11 +82,10 @@ public Collection<FilmDto> getAllFilms() {
|
91 | 82 | * @return найденный фильм.
|
92 | 83 | */
|
93 | 84 | @Override
|
94 |
| - @Transactional |
95 | 85 | public FilmDto getFilmById(final long filmId) {
|
96 |
| - filmStorage.findById(filmId); |
| 86 | + Film film = filmStorage.findById(filmId); |
97 | 87 | log.info("Фильм с id {} найден.", filmId);
|
98 |
| - return toDto(filmStorage.findById(filmId)); |
| 88 | + return toDto(film); |
99 | 89 | }
|
100 | 90 |
|
101 | 91 | /**
|
@@ -191,11 +181,12 @@ public Collection<FilmDto> searchFilms(FilmSearchDto search) {
|
191 | 181 | @Override
|
192 | 182 | @Transactional
|
193 | 183 | public Collection<FilmDto> getFilmsFromDirector(final long directorId, final String sortBy) {
|
194 |
| - if (!ALLOWED_SORTS.containsKey(sortBy)) { |
| 184 | + if (!SortBy.getStringValues().contains(sortBy)) { |
195 | 185 | throw new IllegalArgumentException("Поле сортировки '" + sortBy + "' не поддерживается.");
|
196 | 186 | }
|
| 187 | + String sort = SortBy.fromString(sortBy).getSql(); |
197 | 188 | directorStorage.findById(directorId);
|
198 |
| - return filmStorage.findFilmsFromDirectorOrderBy(directorId, ALLOWED_SORTS.get(sortBy)).stream() |
| 189 | + return filmStorage.findFilmsFromDirectorOrderBy(directorId, sort).stream() |
199 | 190 | .map(FilmMapper::toDto)
|
200 | 191 | .collect(Collectors.toList());
|
201 | 192 | }
|
|
0 commit comments