Skip to content

ФЗ 16#3

Merged
YrioTries merged 69 commits intomainfrom
add-item-requests-and-gateway
Sep 3, 2025
Merged

ФЗ 16#3
YrioTries merged 69 commits intomainfrom
add-item-requests-and-gateway

Conversation

@YrioTries
Copy link
Owner

No description provided.

@YrioTries
Copy link
Owner Author

YrioTries commented Aug 14, 2025

Полностью заменил мапперы на MapStruct. Проходит все тесты фз 15

@YrioTries
Copy link
Owner Author

Теперь мой код выглядит так. В нём ничего не трогал только пытался подключить dockerfile
image

@YrioTries
Copy link
Owner Author

Это действует только на gateway

@YrioTries
Copy link
Owner Author

Как проснусь откачу до рабочего варианта. Больше вопрос по тому правильно ли присоединены dokerfile-лы к compose и так ли нужно делать

Copy link

@avfyodorov avfyodorov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добрый день, Дмитрий! 

Хорошая работа, всего пара небольших уточнений.

- shareit-network

# Gateway
gateway:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Конечно, лучше подождать, послушать, что скажет наставник. Они теперь как-то по-другому организовывают.
То что вижу я: избавиться от кириллицы, на всякий случай; вообще убрать всё лишнее …
Приблизительно, вот так:

  gateway:
    build: ./gateway
    image: gateway
    container_name: gateway
    ports:
      - "8080:8080"
    depends_on:
      - server
    environment:
      - SHAREIT_SERVER_URL=http://server:9090

И для сервера с базой данных аналогично

import ru.practicum.gateway.exception.*;

@Slf4j
@RestControllerAdvice

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public ErrorResponse internalServerException(final InternalServerException e) {

Вот тут у меня вопрос. Как известно:

Ошибка 500 Internal Server Error - это внутренняя серверная проблема, ее возникновение обусловлено тем, что от клиента (браузера, десктопной программы и т. п.) в сторону сервера поступает запрос, а сервер не может корректно его обработать.

Мы же еще находимся на гейтвей, так? Проверяем данные, нашли, что что-то не так с входными параметрами... Причём тут сервер?

Список возможных статусов, в принципе, известен заранее...

return new ErrorResponse("ERROR[400]: Произошла ошибка MethodArgumentTypeMismatchException: ", e.getMessage());
}

@ExceptionHandler(MethodArgumentNotValidException.class)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Теперь есть два обработчика ошибок: один - в модуле гейтвей, а второй - это сервер. И ошибки перехватываются и обрабатываются, соответственно, разные. Например, на сервере валидация по заданию не нужна( точнее почти не нужна), только на gateway, поэтому и bad request на сервере вроде бы как быть не должно. И наоборот, на gateway не должно быть ничего, имеющего отношение к серверу (not found).

На сервере только та валидация входных данных , которая требует работы с БД.
А в остальном на сервере(во всех классах, где ранее была валидация) не должно быть валидации и ее не должно быть и в зависимостях в pom файле тоже.
Есть предложение ещё раз проверить и уточнить, где какие ошибки ловятся и обрабатываются.

@YrioTries
Copy link
Owner Author

Снимок экрана (10) Снова теперь всё работает. Был баг идеи

@YrioTries
Copy link
Owner Author

YrioTries commented Sep 3, 2025

Здравствуйте, я в упор не понимаю почему возникает ошибка

если я добавляю эту проверку

        BookingDto lastBooking = bookingRepository.findLastBookingForItem(itemId, now, lastBookingPage)
                .stream()
                .findFirst()
                .map(bookingMapper::toBookingDto)
                .orElse(null);
        if (lastBooking == null || lastBooking.getEnd().isAfter(now)) {
            throw new InternalServerException("Cannot comment this item");
        }
        ```

у меня неправильно обрабатывается comment past booking

если убираю эту проверку у меня неправильно обрабатывается comment approved booking

@YrioTries
Copy link
Owner Author

по итогу у наставника узнал что она нужна. Но так падают тесты. Если я чиню post то get тоже работать начинает.
у gpt удалось выяснить что может быть проблема во времени. Попытался перейти на OffsetDateTime вместо LocalDateTime стало 45 ошибок
image

image

@YrioTries
Copy link
Owner Author

обратно вернул LocalDateTime

@YrioTries
Copy link
Owner Author

Почему то все тесты прошли......

@YrioTries
Copy link
Owner Author

у меня в постмен по прежнему так...

image

@avfyodorov
Copy link

Почему то все тесты прошли......

Всё, больше ничего не трогаем... срочно принимаю работу. 🙂

Copy link

@avfyodorov avfyodorov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добрый вечер, Дмитрий!

Замечаний нет.
Работа принята.

@YrioTries YrioTries merged commit 42f6f7f into main Sep 3, 2025
2 checks passed
@YrioTries YrioTries deleted the add-item-requests-and-gateway branch September 3, 2025 22:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants