Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
# java-filmorate
### Описание (Description)
The Filmorate project — это приложение для работы с базой данных фильмов.
А также площадка для общения и взаимодействия пользователей.

### Основные возможности
- Хранение данных о фильмах
- Хранение данных о пользователях
- Возможность пользователям ставить лайки фильмам
- Возможность пользователям добавлять друг друга в друзья
- Возможность получать рейтинг TOP_N фильмов по количеству лайков
- Возможность получать общих с другим пользователем фильмов с сортировкой по их популярности
- Возможность заводить друзей
- Возможность оставлять отзывы о фильмах
- Фильмы содержат возрастные ограничения по стандарту MPPA
- Реализован поиск по названию и описанию
- Реализована система жанров для фильмов
- Есть лента событий

### Требования (Environmental Requirements)
Для запуска проекта требуется: - Java версии 21
Приложение работает на порту 8080
Приложение работает на порту 8080

### Установка и запуск (Installation and Running)
Откройте терминал в корне проекта и выполните команды для запуска приложения.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public Event addEvent(Event event) {
event.getEventType().name(),
event.getOperation().name(),
event.getEntityId());
event.setId(eventId);
event.setEventId(eventId);
return event;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@ public Collection<Film> getTopByFilters(Integer top, Integer genreId, String yea
return films.stream().peek(film -> {
Set<Integer> genres = getGenreIdsByFilmId(film.getId());
film.setGenreIds(new HashSet<>(genres));
Set<Integer> directors = getDirectorIdsByFilmId(film.getId());
film.setDirectorIds(new HashSet<>(directors));
}).toList();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class EventRowMapper implements RowMapper<Event> {
@Override
public Event mapRow(ResultSet resultSet, int rowNum) throws SQLException {
return Event.builder()
.id(resultSet.getLong("id"))
.eventId(resultSet.getLong("id"))
.userId(resultSet.getLong("user_id"))
.timestamp(resultSet.getTimestamp("created_at").toInstant())
.eventType(EventType.valueOf(resultSet.getString("event_type")))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
@Builder
public class EventDto {
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
private Long id;
private Long eventId;
private Long userId;
private Long timestamp;
private EventType eventType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
@Data
public class UserCreateRequest {

@Size(min = 2, max = 50, message = "Длина имени пользователя может быть от 2 до 50 символов.")
@Size(max = 50, message = "Длина имени пользователя не может быть больше 50 символов.")
private String name;

@NotNull(message = "Логин должен быть указан.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class UserUpdateRequest {
@Positive(message = "Id должен быть положительным числом.")
private Long id;

@Size(min = 2, max = 50, message = "Длина имени пользователя может быть от 2 до 50 символов.")
@Size(max = 50, message = "Длина имени пользователя не может быть больше 50 символов.")
private String name;

@Pattern(regexp = "^[A-Za-z0-9_]+$", message = "Логин может состоять только из этих символов [A-Za-z0-9_].")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
public class EventMapper {
public static EventDto mapToEventDto(Event event) {
return EventDto.builder()
.id(event.getId())
.eventId(event.getEventId())
.userId(event.getUserId())
.timestamp(event.getTimestamp().toEpochMilli())
.eventType(event.getEventType())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
@NoArgsConstructor
@AllArgsConstructor
public class Event {
private Long id;
private Long eventId;
private Long userId;
private Instant timestamp;
private EventType eventType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@ public void changeFriends(FriendsAction action, long userId, long friendId) {

public UserDto create(UserCreateRequest request) {
log.info("Добавление нового пользователя login={}.", request.getLogin());
if (request.getName().isBlank()) {
request.setName(request.getLogin());
}

User user = UserMapper.mapToUser(request);

try {
Expand All @@ -103,6 +107,10 @@ public UserDto create(UserCreateRequest request) {

public UserDto update(UserUpdateRequest request) {
log.info("Обновление данных о пользователе с id={}.", request.getId());
if (request.getName().isBlank()) {
request.setName(request.getLogin());
}

User oldUser = findUser(request.getId());
logUserUpdate(request, oldUser);
User newUser = UserMapper.updateUserFields(oldUser, request);
Expand Down
Loading