From 42c832990fa7abb9b8fae8ace9733a925da12701 Mon Sep 17 00:00:00 2001
From: yiqes <155768368+yiqes@users.noreply.github.com>
Date: Thu, 21 Nov 2024 12:43:17 +0300
Subject: [PATCH 01/19] =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7?=
=?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BC=D0=B8=D0=BA=D1=80=D0=BE?=
=?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=BD=D1=83=D1=8E=20=D0=B0?=
=?UTF-8?q?=D1=80=D1=85=D0=B8=D1=82=D0=B5=D0=BA=D1=82=D1=83=D1=80=D1=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.run/ShareItGateway.run.xml | 15 +
.run/ShareItServer.run.xml | 15 +
docker-compose.yaml | 39 +
gateway/Dockerfile | 5 +
gateway/pom.xml | 70 +
.../ru/practicum/shareit/ShareItGateway.java | 12 +
.../shareit/booking/BookingClient.java | 75 +
.../shareit/booking/BookingController.java | 71 +
.../booking/dto/BookItemRequestDto.java | 20 +
.../shareit/booking/dto/BookingShortDto.java | 15 +
.../shareit/booking/dto/BookingState.java | 27 +
.../practicum/shareit/client/BaseClient.java | 121 +
.../shareit/handler/ErrorHandler.java | 16 +
.../shareit/handler/ErrorResponse.java | 0
.../ru/practicum/shareit/item/ItemClient.java | 63 +
.../shareit/item/ItemController.java | 78 +
.../shareit/item/dto/CommentDto.java | 17 +
.../practicum/shareit/item/dto/ItemDto.java | 26 +
.../shareit/request/RequestClient.java | 46 +
.../shareit/request/RequestController.java | 55 +
.../shareit/request/dto/RequestDto.java | 21 +
.../ru/practicum/shareit/user/UserClient.java | 46 +
.../shareit/user/UserController.java | 49 +
.../practicum/shareit/user/dto/UserDto.java | 20 +
.../src/main/resources/application.properties | 8 +
pom.xml | 198 +-
postman/sprint.json | 4052 +++++++++++++++++
server/Dockerfile | 5 +
server/pom.xml | 86 +
.../java/ru/practicum/shareit/ShareItApp.java | 0
.../ru/practicum/shareit/booking/Booking.java | 2 +-
.../shareit/booking/BookingController.java | 3 +-
.../shareit/booking/BookingMapper.java | 0
.../shareit/booking/BookingRepository.java | 0
.../shareit/booking/BookingService.java | 0
.../shareit/booking/BookingServiceImpl.java | 0
.../shareit/booking/BookingStatus.java | 0
.../shareit/booking/dto/BookingDto.java | 0
.../shareit/booking/dto/BookingInputDto.java | 4 -
.../shareit/booking/dto/BookingShortDto.java | 0
.../exception/BookingNotFoundException.java | 0
.../exception/ItemNotFoundException.java | 0
.../exception/RequestNotFoundException.java | 11 +
.../exception/UserAlreadyExistsException.java | 0
.../exception/UserNotFoundException.java | 0
.../exception/ValidationException.java | 0
.../shareit/handler/ErrorHandler.java | 0
.../shareit/handler/ErrorResponse.java | 13 +
.../ru/practicum/shareit/item/Comment.java | 2 +-
.../ru/practicum/shareit/item/CommentDto.java | 2 -
.../shareit/item/CommentRepository.java | 0
.../java/ru/practicum/shareit/item/Item.java | 0
.../shareit/item/ItemController.java | 5 +-
.../ru/practicum/shareit/item/ItemDto.java | 5 -
.../ru/practicum/shareit/item/ItemMapper.java | 0
.../shareit/item/ItemRepository.java | 3 +
.../practicum/shareit/item/ItemService.java | 2 +
.../shareit/item/ItemServiceImpl.java | 8 +
.../ru/practicum/shareit/request/Request.java | 6 +-
.../shareit/request/RequestController.java | 47 +
.../practicum/shareit/request/RequestDto.java | 24 +
.../shareit/request/RequestMapper.java | 43 +
.../shareit/request/RequestRepository.java | 16 +
.../shareit/request/RequestService.java | 15 +
.../shareit/request/RequestServiceImpl.java | 83 +
.../shareit/service/ValidationService.java | 0
.../java/ru/practicum/shareit/user/User.java | 47 +
.../shareit/user/UserController.java | 0
.../ru/practicum/shareit/user/UserDto.java | 0
.../ru/practicum/shareit/user/UserMapper.java | 0
.../shareit/user/UserRepository.java | 0
.../practicum/shareit/user/UserService.java | 0
.../shareit/user/UserServiceImpl.java | 2 -
.../ru/practicum/shareit/util/Pagination.java | 47 +
.../src/main/resources/application.properties | 11 +
server/src/main/resources/schema.sql | 53 +
.../ru/practicum/shareit/ShareItTests.java | 0
.../booking/BookingControllerTest.java | 128 +
.../shareit/booking/BookingDtoJsonTest.java | 56 +
.../shareit/item/CommentDtoJsonTest.java | 36 +
.../shareit/item/ItemControllerTest.java | 152 +
.../shareit/item/ItemDtoJsonTest.java | 34 +
.../request/RequestControllerTest.java | 88 +
.../shareit/request/RequestDtoJsonTest.java | 35 +
.../shareit/user/UserControllerTest.java | 97 +
.../shareit/user/UserDtoJsonTest.java | 36 +
.../shareit/request/RequestController.java | 44 -
.../practicum/shareit/request/RequestDto.java | 16 -
.../shareit/request/RequestMapper.java | 27 -
.../shareit/request/RequestRepository.java | 6 -
.../shareit/request/RequestService.java | 14 -
.../shareit/request/RequestServiceImpl.java | 42 -
.../java/ru/practicum/shareit/user/User.java | 45 -
src/main/resources/application.properties | 14 -
src/main/resources/schema.sql | 55 -
95 files changed, 6280 insertions(+), 370 deletions(-)
create mode 100644 .run/ShareItGateway.run.xml
create mode 100644 .run/ShareItServer.run.xml
create mode 100644 docker-compose.yaml
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/dto/BookItemRequestDto.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/booking/dto/BookingShortDto.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/booking/dto/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/handler/ErrorHandler.java
rename {src => gateway/src}/main/java/ru/practicum/shareit/handler/ErrorResponse.java (100%)
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
create mode 100644 gateway/src/main/java/ru/practicum/shareit/item/dto/CommentDto.java
create mode 100644 gateway/src/main/java/ru/practicum/shareit/item/dto/ItemDto.java
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/dto/RequestDto.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
create mode 100644 gateway/src/main/java/ru/practicum/shareit/user/dto/UserDto.java
create mode 100644 gateway/src/main/resources/application.properties
create mode 100644 postman/sprint.json
create mode 100644 server/Dockerfile
create mode 100644 server/pom.xml
rename {src => server/src}/main/java/ru/practicum/shareit/ShareItApp.java (100%)
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 (96%)
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 (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/BookingStatus.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/dto/BookingDto.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/dto/BookingInputDto.java (73%)
rename {src => server/src}/main/java/ru/practicum/shareit/booking/dto/BookingShortDto.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/exception/BookingNotFoundException.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/exception/ItemNotFoundException.java (100%)
create mode 100644 server/src/main/java/ru/practicum/shareit/exception/RequestNotFoundException.java
rename {src => server/src}/main/java/ru/practicum/shareit/exception/UserAlreadyExistsException.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/exception/UserNotFoundException.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/exception/ValidationException.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/handler/ErrorHandler.java (100%)
create mode 100644 server/src/main/java/ru/practicum/shareit/handler/ErrorResponse.java
rename {src => server/src}/main/java/ru/practicum/shareit/item/Comment.java (93%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/CommentDto.java (87%)
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 (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/ItemController.java (92%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/ItemDto.java (71%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/ItemMapper.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/ItemRepository.java (85%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/ItemService.java (91%)
rename {src => server/src}/main/java/ru/practicum/shareit/item/ItemServiceImpl.java (95%)
rename {src => server/src}/main/java/ru/practicum/shareit/request/Request.java (90%)
create mode 100644 server/src/main/java/ru/practicum/shareit/request/RequestController.java
create mode 100644 server/src/main/java/ru/practicum/shareit/request/RequestDto.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/service/ValidationService.java (100%)
create mode 100644 server/src/main/java/ru/practicum/shareit/user/User.java
rename {src => server/src}/main/java/ru/practicum/shareit/user/UserController.java (100%)
rename {src => server/src}/main/java/ru/practicum/shareit/user/UserDto.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 (97%)
create mode 100644 server/src/main/java/ru/practicum/shareit/util/Pagination.java
create mode 100644 server/src/main/resources/application.properties
create mode 100644 server/src/main/resources/schema.sql
rename {src => server/src}/test/java/ru/practicum/shareit/ShareItTests.java (100%)
create mode 100644 server/src/test/java/ru/practicum/shareit/booking/BookingControllerTest.java
create mode 100644 server/src/test/java/ru/practicum/shareit/booking/BookingDtoJsonTest.java
create mode 100644 server/src/test/java/ru/practicum/shareit/item/CommentDtoJsonTest.java
create mode 100644 server/src/test/java/ru/practicum/shareit/item/ItemControllerTest.java
create mode 100644 server/src/test/java/ru/practicum/shareit/item/ItemDtoJsonTest.java
create mode 100644 server/src/test/java/ru/practicum/shareit/request/RequestControllerTest.java
create mode 100644 server/src/test/java/ru/practicum/shareit/request/RequestDtoJsonTest.java
create mode 100644 server/src/test/java/ru/practicum/shareit/user/UserControllerTest.java
create mode 100644 server/src/test/java/ru/practicum/shareit/user/UserDtoJsonTest.java
delete mode 100644 src/main/java/ru/practicum/shareit/request/RequestController.java
delete mode 100644 src/main/java/ru/practicum/shareit/request/RequestDto.java
delete mode 100644 src/main/java/ru/practicum/shareit/request/RequestMapper.java
delete mode 100644 src/main/java/ru/practicum/shareit/request/RequestRepository.java
delete mode 100644 src/main/java/ru/practicum/shareit/request/RequestService.java
delete mode 100644 src/main/java/ru/practicum/shareit/request/RequestServiceImpl.java
delete mode 100644 src/main/java/ru/practicum/shareit/user/User.java
delete mode 100644 src/main/resources/application.properties
delete mode 100644 src/main/resources/schema.sql
diff --git a/.run/ShareItGateway.run.xml b/.run/ShareItGateway.run.xml
new file mode 100644
index 0000000..b30b178
--- /dev/null
+++ b/.run/ShareItGateway.run.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/ShareItServer.run.xml b/.run/ShareItServer.run.xml
new file mode 100644
index 0000000..80abfa8
--- /dev/null
+++ b/.run/ShareItServer.run.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docker-compose.yaml b/docker-compose.yaml
new file mode 100644
index 0000000..abe6570
--- /dev/null
+++ b/docker-compose.yaml
@@ -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..4cbc16c
--- /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);
+ }
+
+}
\ No newline at end of file
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..706d376
--- /dev/null
+++ b/gateway/src/main/java/ru/practicum/shareit/booking/BookingClient.java
@@ -0,0 +1,75 @@
+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.booking.dto.BookItemRequestDto;
+import ru.practicum.shareit.booking.dto.BookingState;
+import ru.practicum.shareit.client.BaseClient;
+
+@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