Skip to content

Commit 8dcf7a5

Browse files
committed
refactor: Для контроля сортировки использовать SortBy
1 parent 07a1b3c commit 8dcf7a5

File tree

3 files changed

+12
-18
lines changed

3 files changed

+12
-18
lines changed

src/main/java/ru/yandex/practicum/filmorate/service/impl/FilmServiceImpl.java

+6-15
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,11 @@
88
import ru.yandex.practicum.filmorate.dto.FilmDto;
99
import ru.yandex.practicum.filmorate.dto.FilmSearchDto;
1010
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.*;
1512
import ru.yandex.practicum.filmorate.service.FilmService;
1613

1714
import java.util.ArrayList;
1815
import java.util.Collection;
19-
import java.util.Map;
2016
import java.util.stream.Collectors;
2117

2218
import static ru.yandex.practicum.filmorate.mapper.FilmMapper.toDto;
@@ -27,11 +23,6 @@
2723
@Slf4j
2824
public class FilmServiceImpl implements FilmService {
2925

30-
public static final Map<String, String> ALLOWED_SORTS = Map.of(
31-
"year", "f.release_date",
32-
"likes", "likes DESC"
33-
);
34-
3526
private final FilmStorage filmStorage;
3627

3728
private final UserStorage userStorage;
@@ -91,11 +82,10 @@ public Collection<FilmDto> getAllFilms() {
9182
* @return найденный фильм.
9283
*/
9384
@Override
94-
@Transactional
9585
public FilmDto getFilmById(final long filmId) {
96-
filmStorage.findById(filmId);
86+
Film film = filmStorage.findById(filmId);
9787
log.info("Фильм с id {} найден.", filmId);
98-
return toDto(filmStorage.findById(filmId));
88+
return toDto(film);
9989
}
10090

10191
/**
@@ -191,11 +181,12 @@ public Collection<FilmDto> searchFilms(FilmSearchDto search) {
191181
@Override
192182
@Transactional
193183
public Collection<FilmDto> getFilmsFromDirector(final long directorId, final String sortBy) {
194-
if (!ALLOWED_SORTS.containsKey(sortBy)) {
184+
if (!SortBy.getStringValues().contains(sortBy)) {
195185
throw new IllegalArgumentException("Поле сортировки '" + sortBy + "' не поддерживается.");
196186
}
187+
String sort = SortBy.fromString(sortBy).getSql();
197188
directorStorage.findById(directorId);
198-
return filmStorage.findFilmsFromDirectorOrderBy(directorId, ALLOWED_SORTS.get(sortBy)).stream()
189+
return filmStorage.findFilmsFromDirectorOrderBy(directorId, sort).stream()
199190
.map(FilmMapper::toDto)
200191
.collect(Collectors.toList());
201192
}

src/test/java/ru/yandex/practicum/filmorate/storage/DirectorDbStorageTest.java

+3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import ru.yandex.practicum.filmorate.dao.impl.DirectorDbStorage;
1010
import ru.yandex.practicum.filmorate.exception.NotFoundException;
1111
import ru.yandex.practicum.filmorate.model.Director;
12+
import ru.yandex.practicum.filmorate.model.SortBy;
1213

1314
import java.util.Collection;
1415
import java.util.List;
@@ -46,6 +47,8 @@ public void init() {
4647
public void testFindEmptyDirectors() {
4748
Collection<Director> emptyDirectors = directorStorage.findAll();
4849

50+
System.out.println(SortBy.getStringValues());
51+
4952
assertThat(emptyDirectors)
5053
.isNotNull()
5154
.isEmpty();

src/test/java/ru/yandex/practicum/filmorate/storage/FilmDbStorageTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ public void findFilmsByDirectorSortByYear() {
563563
filmDbStorage.add(film2);
564564

565565
Collection<Film> films = filmDbStorage.findFilmsFromDirectorOrderBy(director.getId(),
566-
FilmServiceImpl.ALLOWED_SORTS.get("year"));
566+
SortBy.YEAR.getSql());
567567

568568
assertThat(films)
569569
.isNotNull()
@@ -589,7 +589,7 @@ public void findFilmsByDirectorSortByLikes() {
589589

590590

591591
Collection<Film> films = filmDbStorage.findFilmsFromDirectorOrderBy(director.getId(),
592-
FilmServiceImpl.ALLOWED_SORTS.get("likes"));
592+
SortBy.LIKES.getSql());
593593

594594
assertThat(films)
595595
.isNotNull()
@@ -603,7 +603,7 @@ public void findFilmsByDirectorSortByLikes() {
603603
public void findFilmsByDirectorUnknownId() {
604604
directorStorage.add(director);
605605
Collection<Film> films = filmDbStorage.findFilmsFromDirectorOrderBy(director.getId(),
606-
FilmServiceImpl.ALLOWED_SORTS.get("year"));
606+
SortBy.YEAR.getSql());
607607

608608
assertThat(films)
609609
.isNotNull()

0 commit comments

Comments
 (0)