From 38dd6791ba496e42323d1e633501a812b90e4449 Mon Sep 17 00:00:00 2001
From: Sergey Filippovskikh <116564864+SergikF@users.noreply.github.com>
Date: Sat, 26 Apr 2025 20:48:03 +0300
Subject: [PATCH 01/24] =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD?=
=?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=2016=20=D1=81=D0=BF=D1=80=D0=B8=D0=BD?=
=?UTF-8?q?=D1=82=D0=B0.=20=D0=9F=D0=B5=D1=80=D0=B2=D0=B8=D1=87=D0=BD?=
=?UTF-8?q?=D0=B0=D1=8F=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B0?=
=?UTF-8?q?.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 6 +-
checkstyle.xml | 2 +-
docker-compose.yml | 39 +
gateway/Dockerfile | 5 +
gateway/pom.xml | 70 +
.../ru/practicum/shareit/ShareItGateway.java | 12 +
.../shareit/booking/BookingClient.java | 58 +
.../shareit/booking/BookingController.java | 100 +
.../shareit/booking/BookingDtoInput.java | 28 +
.../shareit/booking/BookingState.java | 16 +
.../practicum/shareit/client/BaseClient.java | 121 +
.../shareit/exception/ErrorHandler.java | 65 +
.../exception/ValidationException.java | 0
.../shareit/item/CommentDtoInput.java | 18 +
.../ru/practicum/shareit/item/ItemClient.java | 54 +
.../shareit/item/ItemController.java | 122 +
.../practicum/shareit/item/ItemDtoInput.java | 21 +-
.../shareit/request/RequestClient.java | 41 +
.../shareit/request/RequestController.java | 73 +
.../shareit/request/RequestDtoInput.java | 18 +
.../ru/practicum/shareit/user/UserClient.java | 46 +
.../shareit/user/UserController.java | 81 +
.../practicum/shareit/user/UserDtoInput.java | 18 +-
.../shareit/validation/CreateObject.java | 0
.../shareit/validation/UpdateObject.java | 0
.../src/main/resources/application.properties | 7 +
pom.xml | 97 +-
postman_for_shareit_14.json | 2725 -----------------
...eit_15.json => postman_for_shareit_16.json | 1213 ++------
server/Dockerfile | 5 +
server/pom.xml | 86 +
.../ru/practicum/shareit/ShareItServer.java | 8 +-
.../ru/practicum/shareit/booking/Booking.java | 0
.../shareit/booking/BookingController.java | 3 +-
.../practicum/shareit/booking/BookingDto.java | 0
.../shareit/booking/BookingDtoInput.java | 20 +
.../shareit/booking/BookingDtoOutput.java | 0
.../shareit/booking/BookingDtoShort.java | 0
.../shareit/booking/BookingMapper.java | 0
.../shareit/booking/BookingRepository.java | 0
.../shareit/booking/BookingService.java | 0
.../shareit/booking/BookingServiceImpl.java | 13 -
.../shareit/booking/BookingState.java | 2 +-
.../shareit/booking/BookingStatus.java | 0
.../exception/DataConflictException.java | 0
.../shareit/exception/ErrorHandler.java | 0
.../shareit/exception/NotFoundException.java | 0
.../exception/RestrictedAccessException.java | 0
.../exception/ValidationException.java | 7 +
.../ru/practicum/shareit/item/Comment.java | 0
.../ru/practicum/shareit/item/CommentDto.java | 5 -
.../shareit/item/CommentDtoOutput.java | 0
.../shareit/item/CommentDtoShort.java | 0
.../practicum/shareit/item/CommentMapper.java | 0
.../shareit/item/CommentRepository.java | 0
.../java/ru/practicum/shareit/item/Item.java | 2 +-
.../shareit/item/ItemController.java | 11 +-
.../ru/practicum/shareit/item/ItemDto.java | 37 +
.../practicum/shareit/item/ItemDtoInput.java | 20 +
.../practicum/shareit/item/ItemDtoOutput.java | 4 +-
.../shareit/item/ItemDtoRequest.java | 20 +
.../practicum/shareit/item/ItemDtoShort.java | 0
.../ru/practicum/shareit/item/ItemMapper.java | 21 +-
.../shareit/item/ItemRepository.java | 0
.../practicum/shareit/item/ItemService.java | 4 +-
.../shareit/item/ItemServiceImpl.java | 48 +-
.../ru/practicum/shareit/request/Request.java | 7 +-
.../shareit/request/RequestController.java | 39 +
.../practicum/shareit/request/RequestDto.java | 5 +-
.../shareit/request/RequestDtoInput.java | 14 +
.../shareit/request/RequestDtoItems.java | 26 +
.../shareit/request/RequestMapper.java | 62 +
.../shareit/request/RequestRepository.java | 17 +
.../shareit/request/RequestService.java | 15 +
.../shareit/request/RequestServiceImpl.java | 107 +
.../java/ru/practicum/shareit/user/User.java | 0
.../shareit/user/UserController.java | 9 +-
.../ru/practicum/shareit/user/UserDto.java | 29 +
.../practicum/shareit/user/UserDtoOutput.java | 0
.../practicum/shareit/user/UserDtoShort.java | 0
.../ru/practicum/shareit/user/UserMapper.java | 0
.../shareit/user/UserRepository.java | 0
.../practicum/shareit/user/UserService.java | 0
.../shareit/user/UserServiceImpl.java | 0
.../src/main/resources/application.properties | 17 +
{src => server/src}/main/resources/schema.sql | 0
.../shareit/booking/BookingDtoInput.java | 28 -
.../request/ItemRequestController.java | 12 -
src/main/resources/application.yaml | 20 -
89 files changed, 1828 insertions(+), 3951 deletions(-)
create mode 100644 docker-compose.yml
create mode 100644 gateway/Dockerfile
create mode 100644 gateway/pom.xml
create mode 100644 gateway/src/main/java/ru/practicum/shareit/ShareItGateway.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/booking/BookingClient.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/booking/BookingController.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/booking/BookingDtoInput.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/booking/BookingState.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/client/BaseClient.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/exception/ErrorHandler.java
rename {src => gateway/src}/main/java/ru/practicum/shareit/exception/ValidationException.java (100%)
create mode 100644 gateway/src/main/java/ru/practicum/shareit/item/CommentDtoInput.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/item/ItemClient.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/item/ItemController.java
rename src/main/java/ru/practicum/shareit/item/ItemDto.java => gateway/src/main/java/ru/practicum/shareit/item/ItemDtoInput.java (72%)
create mode 100644 gateway/src/main/java/ru/practicum/shareit/request/RequestClient.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/request/RequestController.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/request/RequestDtoInput.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/user/UserClient.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/user/UserController.java
rename src/main/java/ru/practicum/shareit/user/UserDto.java => gateway/src/main/java/ru/practicum/shareit/user/UserDtoInput.java (59%)
rename {src => gateway/src}/main/java/ru/practicum/shareit/validation/CreateObject.java (100%)
rename {src => gateway/src}/main/java/ru/practicum/shareit/validation/UpdateObject.java (100%)
create mode 100644 gateway/src/main/resources/application.properties
delete mode 100644 postman_for_shareit_14.json
rename postman_for_shareit_15.json => postman_for_shareit_16.json (81%)
create mode 100644 server/Dockerfile
create mode 100644 server/pom.xml
rename src/main/java/ru/practicum/shareit/ShareItApp.java => server/src/main/java/ru/practicum/shareit/ShareItServer.java (57%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/Booking.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/BookingController.java (97%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/BookingDto.java (100%)
create mode 100644 server/src/main/java/ru/practicum/shareit/booking/BookingDtoInput.java
rename {src => server/src}/main/java/ru/practicum/shareit/booking/BookingDtoOutput.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/BookingDtoShort.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/BookingMapper.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/BookingRepository.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/BookingService.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/BookingServiceImpl.java (95%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/BookingState.java (57%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/BookingStatus.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/exception/DataConflictException.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/exception/ErrorHandler.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/exception/NotFoundException.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/exception/RestrictedAccessException.java (100%)
create mode 100644 server/src/main/java/ru/practicum/shareit/exception/ValidationException.java
rename {src => server/src}/main/java/ru/practicum/shareit/item/Comment.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/CommentDto.java (51%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/CommentDtoOutput.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/CommentDtoShort.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/CommentMapper.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/CommentRepository.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/Item.java (98%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/ItemController.java (85%)
create mode 100644 server/src/main/java/ru/practicum/shareit/item/ItemDto.java
create mode 100644 server/src/main/java/ru/practicum/shareit/item/ItemDtoInput.java
rename {src => server/src}/main/java/ru/practicum/shareit/item/ItemDtoOutput.java (88%)
create mode 100644 server/src/main/java/ru/practicum/shareit/item/ItemDtoRequest.java
rename {src => server/src}/main/java/ru/practicum/shareit/item/ItemDtoShort.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/ItemMapper.java (89%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/ItemRepository.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/ItemService.java (73%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/ItemServiceImpl.java (86%)
rename {src => server/src}/main/java/ru/practicum/shareit/request/Request.java (88%)
create mode 100644 server/src/main/java/ru/practicum/shareit/request/RequestController.java
rename src/main/java/ru/practicum/shareit/request/ItemRequestDto.java => server/src/main/java/ru/practicum/shareit/request/RequestDto.java (87%)
create mode 100644 server/src/main/java/ru/practicum/shareit/request/RequestDtoInput.java
create mode 100644 server/src/main/java/ru/practicum/shareit/request/RequestDtoItems.java
create mode 100644 server/src/main/java/ru/practicum/shareit/request/RequestMapper.java
create mode 100644 server/src/main/java/ru/practicum/shareit/request/RequestRepository.java
create mode 100644 server/src/main/java/ru/practicum/shareit/request/RequestService.java
create mode 100644 server/src/main/java/ru/practicum/shareit/request/RequestServiceImpl.java
rename {src => server/src}/main/java/ru/practicum/shareit/user/User.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/user/UserController.java (73%)
create mode 100644 server/src/main/java/ru/practicum/shareit/user/UserDto.java
rename {src => server/src}/main/java/ru/practicum/shareit/user/UserDtoOutput.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/user/UserDtoShort.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/user/UserMapper.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/user/UserRepository.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/user/UserService.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/user/UserServiceImpl.java (100%)
create mode 100644 server/src/main/resources/application.properties
rename {src => server/src}/main/resources/schema.sql (100%)
delete mode 100644 src/main/java/ru/practicum/shareit/booking/BookingDtoInput.java
delete mode 100644 src/main/java/ru/practicum/shareit/request/ItemRequestController.java
delete mode 100644 src/main/resources/application.yaml
diff --git a/README.md b/README.md
index d4b18b6..bd0da80 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,12 @@
_java-shareit_
# Шеринг вещей
-### Согласно задания спринта № 14 (add-controllers)
+### Согласно задания спринта № 16 (add-item-requests-and-gateway)
## выполнено Филипповских Сергеем
_**Когорта-53**_
-_**Для проверки выполнения 14 спринта использовался postman:
-[postman_for_shareit_14.json](/postman_for_shareit_14.json)**_
+_**Для проверки выполнения 16 спринта использовался postman:
+[postman_for_shareit_16.json](/postman_for_shareit_16.json)**_

diff --git a/checkstyle.xml b/checkstyle.xml
index c28a0d3..05d5086 100644
--- a/checkstyle.xml
+++ b/checkstyle.xml
@@ -161,7 +161,7 @@
-
+
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..abe6570
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,39 @@
+services:
+ gateway:
+ build: gateway
+ image: shareit-gateway
+ container_name: shareit-gateway
+ ports:
+ - "8080:8080"
+ depends_on:
+ - server
+ environment:
+ - SHAREIT_SERVER_URL=http://server:9090
+
+ server:
+ build: server
+ image: shareit-server
+ container_name: shareit-server
+ ports:
+ - "9090:9090"
+ depends_on:
+ - db
+ environment:
+ - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/shareit
+ - SPRING_DATASOURCE_USERNAME=shareit
+ - SPRING_DATASOURCE_PASSWORD=shareit
+
+ db:
+ image: postgres:16.1
+ container_name: postgres
+ ports:
+ - "6541:5432"
+ environment:
+ - POSTGRES_PASSWORD=shareit
+ - POSTGRES_USER=shareit
+ - POSTGRES_DB=shareit
+ healthcheck:
+ test: pg_isready -q -d $$POSTGRES_DB -U $$POSTGRES_USER
+ timeout: 5s
+ interval: 5s
+ retries: 10
\ No newline at end of file
diff --git a/gateway/Dockerfile b/gateway/Dockerfile
new file mode 100644
index 0000000..0ff1817
--- /dev/null
+++ b/gateway/Dockerfile
@@ -0,0 +1,5 @@
+FROM eclipse-temurin:21-jre-jammy
+VOLUME /tmp
+ARG JAR_FILE=target/*.jar
+COPY ${JAR_FILE} app.jar
+ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar /app.jar"]
\ No newline at end of file
diff --git a/gateway/pom.xml b/gateway/pom.xml
new file mode 100644
index 0000000..f3394c1
--- /dev/null
+++ b/gateway/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ ru.practicum
+ shareit
+ 0.0.1-SNAPSHOT
+
+
+ shareit-gateway
+ 0.0.1-SNAPSHOT
+
+ ShareIt Gateway
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+ org.hibernate.validator
+ hibernate-validator
+
+
+
+ org.apache.httpcomponents.client5
+ httpclient5
+
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/gateway/src/main/java/ru/practicum/shareit/ShareItGateway.java b/gateway/src/main/java/ru/practicum/shareit/ShareItGateway.java
new file mode 100644
index 0000000..0aa75c3
--- /dev/null
+++ b/gateway/src/main/java/ru/practicum/shareit/ShareItGateway.java
@@ -0,0 +1,12 @@
+package ru.practicum.shareit;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class ShareItGateway {
+ public static void main(String[] args) {
+ SpringApplication.run(ShareItGateway.class, args);
+ }
+
+}
diff --git a/gateway/src/main/java/ru/practicum/shareit/booking/BookingClient.java b/gateway/src/main/java/ru/practicum/shareit/booking/BookingClient.java
new file mode 100644
index 0000000..7975693
--- /dev/null
+++ b/gateway/src/main/java/ru/practicum/shareit/booking/BookingClient.java
@@ -0,0 +1,58 @@
+package ru.practicum.shareit.booking;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.web.client.RestTemplateBuilder;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.web.util.DefaultUriBuilderFactory;
+
+import ru.practicum.shareit.client.BaseClient;
+import ru.practicum.shareit.exception.ValidationException;
+
+import java.util.Map;
+
+@Service
+public class BookingClient extends BaseClient {
+ private static final String API_PREFIX = "/bookings";
+
+ @Autowired
+ public BookingClient(@Value("${shareit-server.url}") String serverUrl, RestTemplateBuilder builder) {
+ super(
+ builder
+ .uriTemplateHandler(new DefaultUriBuilderFactory(serverUrl + API_PREFIX))
+ .requestFactory(() -> new HttpComponentsClientHttpRequestFactory())
+ .build()
+ );
+ }
+
+ public ResponseEntity