From 1bfbbb49aeb479a52ed95617e116028028ad561f Mon Sep 17 00:00:00 2001 From: Alexander Date: Wed, 8 Oct 2025 02:49:38 +0300 Subject: [PATCH 01/15] Update application properties for environment variables and enhance local configurations --- .run/Deployment compose-local.run.xml | 11 +++++++ .run/MainApplication (docker).run.xml | 11 ------- .run/MainApplication (local).run.xml | 12 +++++++ .run/StatApplication (docker).run.xml | 11 ------- .run/StatApplication (local).run.xml | 12 +++++++ .run/StatApplication.run.xml | 20 ++++++------ compose-local.yaml | 31 +++++++++++++++++++ compose.yaml | 5 +-- .../resources/application-local.properties | 11 +++++++ .../src/main/resources/application.properties | 10 +++--- .../java/ru/practicum/model/EndpointHit.java | 29 ++++------------- .../resources/application-local.properties | 16 ++++++++++ .../resources/application-test.properties | 2 +- .../src/main/resources/application.properties | 7 +++-- 14 files changed, 122 insertions(+), 66 deletions(-) create mode 100644 .run/Deployment compose-local.run.xml delete mode 100644 .run/MainApplication (docker).run.xml create mode 100644 .run/MainApplication (local).run.xml delete mode 100644 .run/StatApplication (docker).run.xml create mode 100644 .run/StatApplication (local).run.xml create mode 100644 compose-local.yaml create mode 100644 main-service/src/main/resources/application-local.properties create mode 100644 stats/stats-server/src/main/resources/application-local.properties diff --git a/.run/Deployment compose-local.run.xml b/.run/Deployment compose-local.run.xml new file mode 100644 index 0000000..7822156 --- /dev/null +++ b/.run/Deployment compose-local.run.xml @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/.run/MainApplication (docker).run.xml b/.run/MainApplication (docker).run.xml deleted file mode 100644 index 6595b73..0000000 --- a/.run/MainApplication (docker).run.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \ No newline at end of file diff --git a/.run/MainApplication (local).run.xml b/.run/MainApplication (local).run.xml new file mode 100644 index 0000000..c9b5ed7 --- /dev/null +++ b/.run/MainApplication (local).run.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/.run/StatApplication (docker).run.xml b/.run/StatApplication (docker).run.xml deleted file mode 100644 index b2b26b0..0000000 --- a/.run/StatApplication (docker).run.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \ No newline at end of file diff --git a/.run/StatApplication (local).run.xml b/.run/StatApplication (local).run.xml new file mode 100644 index 0000000..841f228 --- /dev/null +++ b/.run/StatApplication (local).run.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/.run/StatApplication.run.xml b/.run/StatApplication.run.xml index ba300a8..05a6896 100644 --- a/.run/StatApplication.run.xml +++ b/.run/StatApplication.run.xml @@ -1,12 +1,12 @@ - - + + \ No newline at end of file diff --git a/compose-local.yaml b/compose-local.yaml new file mode 100644 index 0000000..33f6f10 --- /dev/null +++ b/compose-local.yaml @@ -0,0 +1,31 @@ +name: java-explore-with-me-local +services: + stats-db-local: + image: postgres:16.1 + container_name: stats_db_local + ports: + - "6542:5432" + environment: + - POSTGRES_DB=statDB_local + - POSTGRES_USER=localuser + - POSTGRES_PASSWORD=localpass + healthcheck: + test: pg_isready -q -d $$POSTGRES_DB -U $$POSTGRES_USER + timeout: 5s + interval: 5s + retries: 10 + + main-db-local: + image: postgres:16.1 + container_name: main_db_local + ports: + - "6543:5432" + environment: + - POSTGRES_DB=mainDB_local + - POSTGRES_USER=localuser + - POSTGRES_PASSWORD=localpass + 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/compose.yaml b/compose.yaml index 215df4e..3eb1dfa 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,3 +1,4 @@ +name: java-explore-with-me services: stats-db: image: postgres:16.1 @@ -18,7 +19,7 @@ services: image: postgres:16.1 container_name: main_db ports: - - "6542:5432" + - "5433:5432" environment: - POSTGRES_DB=mainDB - POSTGRES_USER=dbuser @@ -51,4 +52,4 @@ services: environment: - SPRING_DATASOURCE_URL=jdbc:postgresql://main-db:5432/mainDB - SPRING_DATASOURCE_USERNAME=dbuser - - SPRING_DATASOURCE_PASSWORD=12345 + - SPRING_DATASOURCE_PASSWORD=12345 \ No newline at end of file diff --git a/main-service/src/main/resources/application-local.properties b/main-service/src/main/resources/application-local.properties new file mode 100644 index 0000000..709342f --- /dev/null +++ b/main-service/src/main/resources/application-local.properties @@ -0,0 +1,11 @@ +server.port=8080 +stats.server.url=http://localhost:9090 + +spring.jpa.hibernate.ddl-auto=validate +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.show-sql=false + +spring.datasource.driverClassName=org.postgresql.Driver +spring.datasource.url=jdbc:postgresql://localhost:6543/mainDB_local +spring.datasource.username=localuser +spring.datasource.password=localpass \ No newline at end of file diff --git a/main-service/src/main/resources/application.properties b/main-service/src/main/resources/application.properties index 6885798..3b650cf 100644 --- a/main-service/src/main/resources/application.properties +++ b/main-service/src/main/resources/application.properties @@ -1,11 +1,11 @@ server.port=8080 stats.server.url=http://localhost:9090 -spring.jpa.show-sql=true -spring.jpa.hibernate.ddl-auto=update +spring.jpa.hibernate.ddl-auto=validate spring.jpa.properties.hibernate.format_sql=true +spring.jpa.show-sql=false spring.datasource.driverClassName=org.postgresql.Driver -spring.datasource.url=jdbc:postgresql://localhost:6542/mainDB -spring.datasource.username=dbuser -spring.datasource.password=12345 \ No newline at end of file +spring.datasource.url=${SPRING_DATASOURCE_URL} +spring.datasource.username=${SPRING_DATASOURCE_USERNAME} +spring.datasource.password=${SPRING_DATASOURCE_PASSWORD} \ No newline at end of file diff --git a/stats/stats-server/src/main/java/ru/practicum/model/EndpointHit.java b/stats/stats-server/src/main/java/ru/practicum/model/EndpointHit.java index be82130..5c73895 100644 --- a/stats/stats-server/src/main/java/ru/practicum/model/EndpointHit.java +++ b/stats/stats-server/src/main/java/ru/practicum/model/EndpointHit.java @@ -1,19 +1,21 @@ package ru.practicum.model; import jakarta.persistence.*; -import lombok.*; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; import java.time.LocalDateTime; @Entity @Table(name = "endpoint_hits") @Getter -@Setter(AccessLevel.PROTECTED) -@ToString -@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Setter +@EqualsAndHashCode(onlyExplicitlyIncluded = true) public class EndpointHit { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + @EqualsAndHashCode.Include @Column(name = "hit_id") private Long id; @@ -21,23 +23,4 @@ public class EndpointHit { private String uri; private String ip; private LocalDateTime timestamp; - - public EndpointHit(String app, String uri, String ip, LocalDateTime timestamp) { - this.app = app; - this.uri = uri; - this.ip = ip; - this.timestamp = timestamp; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof EndpointHit)) return false; - return id != null && id.equals(((EndpointHit) o).getId()); - } - - @Override - public int hashCode() { - return id == null ? 0 : id.hashCode(); - } } diff --git a/stats/stats-server/src/main/resources/application-local.properties b/stats/stats-server/src/main/resources/application-local.properties new file mode 100644 index 0000000..cddd755 --- /dev/null +++ b/stats/stats-server/src/main/resources/application-local.properties @@ -0,0 +1,16 @@ +server.port=9090 + +spring.jpa.hibernate.ddl-auto=validate +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.show-sql=false +spring.sql.init.mode=always + +spring.datasource.driverClassName=org.postgresql.Driver +spring.datasource.url=jdbc:postgresql://localhost:6542/statDB_local +spring.datasource.username=localuser +spring.datasource.password=localpass + +logging.level.org.springframework.orm.jpa=INFO +logging.level.org.springframework.transaction=INFO +logging.level.org.springframework.transaction.interceptor=DEBUG +logging.level.org.springframework.orm.jpa.JpaTransactionManager=INFO \ No newline at end of file diff --git a/stats/stats-server/src/main/resources/application-test.properties b/stats/stats-server/src/main/resources/application-test.properties index 7345fa2..38f6c12 100644 --- a/stats/stats-server/src/main/resources/application-test.properties +++ b/stats/stats-server/src/main/resources/application-test.properties @@ -2,8 +2,8 @@ spring.jpa.hibernate.ddl-auto=none spring.jpa.properties.hibernate.format_sql=true spring.sql.init.mode=always +spring.datasource.url=jdbc:h2:mem:stat;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;DEFAULT_NULL_ORDERING=HIGH spring.datasource.driverClassName=org.h2.Driver -spring.datasource.url=jdbc:h2:mem:stat spring.datasource.username=stat spring.datasource.password=stat diff --git a/stats/stats-server/src/main/resources/application.properties b/stats/stats-server/src/main/resources/application.properties index 85cfdaf..d06bdba 100644 --- a/stats/stats-server/src/main/resources/application.properties +++ b/stats/stats-server/src/main/resources/application.properties @@ -1,13 +1,14 @@ server.port=9090 + spring.jpa.hibernate.ddl-auto=validate spring.jpa.properties.hibernate.format_sql=true spring.jpa.show-sql=false spring.sql.init.mode=always spring.datasource.driverClassName=org.postgresql.Driver -spring.datasource.url=jdbc:postgresql://localhost:5432/statDB -spring.datasource.username=dbuser -spring.datasource.password=12345 +spring.datasource.url=${SPRING_DATASOURCE_URL} +spring.datasource.username=${SPRING_DATASOURCE_USERNAME} +spring.datasource.password=${SPRING_DATASOURCE_PASSWORD} logging.level.org.springframework.orm.jpa=INFO logging.level.org.springframework.transaction=INFO From 168bbfb6700adeed59b26cb8a72b100edc8dcef9 Mon Sep 17 00:00:00 2001 From: Alexander Date: Wed, 8 Oct 2025 02:49:38 +0300 Subject: [PATCH 02/15] Update application properties for environment variables and enhance local configurations --- .run/Deployment compose-local.run.xml | 11 +++++++ .run/MainApplication (docker).run.xml | 11 ------- .run/MainApplication (local).run.xml | 11 +++++++ .run/StatApplication (docker).run.xml | 11 ------- .run/StatApplication (local).run.xml | 11 +++++++ .run/StatApplication.run.xml | 19 ++++++------ compose-local.yaml | 31 +++++++++++++++++++ compose.yaml | 5 +-- .../resources/application-local.properties | 11 +++++++ .../src/main/resources/application.properties | 10 +++--- .../java/ru/practicum/model/EndpointHit.java | 29 ++++------------- .../resources/application-local.properties | 16 ++++++++++ .../resources/application-test.properties | 2 +- .../src/main/resources/application.properties | 7 +++-- 14 files changed, 119 insertions(+), 66 deletions(-) create mode 100644 .run/Deployment compose-local.run.xml delete mode 100644 .run/MainApplication (docker).run.xml create mode 100644 .run/MainApplication (local).run.xml delete mode 100644 .run/StatApplication (docker).run.xml create mode 100644 .run/StatApplication (local).run.xml create mode 100644 compose-local.yaml create mode 100644 main-service/src/main/resources/application-local.properties create mode 100644 stats/stats-server/src/main/resources/application-local.properties diff --git a/.run/Deployment compose-local.run.xml b/.run/Deployment compose-local.run.xml new file mode 100644 index 0000000..7822156 --- /dev/null +++ b/.run/Deployment compose-local.run.xml @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/.run/MainApplication (docker).run.xml b/.run/MainApplication (docker).run.xml deleted file mode 100644 index 6595b73..0000000 --- a/.run/MainApplication (docker).run.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \ No newline at end of file diff --git a/.run/MainApplication (local).run.xml b/.run/MainApplication (local).run.xml new file mode 100644 index 0000000..36efc67 --- /dev/null +++ b/.run/MainApplication (local).run.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/.run/StatApplication (docker).run.xml b/.run/StatApplication (docker).run.xml deleted file mode 100644 index b2b26b0..0000000 --- a/.run/StatApplication (docker).run.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \ No newline at end of file diff --git a/.run/StatApplication (local).run.xml b/.run/StatApplication (local).run.xml new file mode 100644 index 0000000..25a3c74 --- /dev/null +++ b/.run/StatApplication (local).run.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/.run/StatApplication.run.xml b/.run/StatApplication.run.xml index ba300a8..800e562 100644 --- a/.run/StatApplication.run.xml +++ b/.run/StatApplication.run.xml @@ -1,12 +1,11 @@ - - + + \ No newline at end of file diff --git a/compose-local.yaml b/compose-local.yaml new file mode 100644 index 0000000..33f6f10 --- /dev/null +++ b/compose-local.yaml @@ -0,0 +1,31 @@ +name: java-explore-with-me-local +services: + stats-db-local: + image: postgres:16.1 + container_name: stats_db_local + ports: + - "6542:5432" + environment: + - POSTGRES_DB=statDB_local + - POSTGRES_USER=localuser + - POSTGRES_PASSWORD=localpass + healthcheck: + test: pg_isready -q -d $$POSTGRES_DB -U $$POSTGRES_USER + timeout: 5s + interval: 5s + retries: 10 + + main-db-local: + image: postgres:16.1 + container_name: main_db_local + ports: + - "6543:5432" + environment: + - POSTGRES_DB=mainDB_local + - POSTGRES_USER=localuser + - POSTGRES_PASSWORD=localpass + 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/compose.yaml b/compose.yaml index 215df4e..3eb1dfa 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,3 +1,4 @@ +name: java-explore-with-me services: stats-db: image: postgres:16.1 @@ -18,7 +19,7 @@ services: image: postgres:16.1 container_name: main_db ports: - - "6542:5432" + - "5433:5432" environment: - POSTGRES_DB=mainDB - POSTGRES_USER=dbuser @@ -51,4 +52,4 @@ services: environment: - SPRING_DATASOURCE_URL=jdbc:postgresql://main-db:5432/mainDB - SPRING_DATASOURCE_USERNAME=dbuser - - SPRING_DATASOURCE_PASSWORD=12345 + - SPRING_DATASOURCE_PASSWORD=12345 \ No newline at end of file diff --git a/main-service/src/main/resources/application-local.properties b/main-service/src/main/resources/application-local.properties new file mode 100644 index 0000000..709342f --- /dev/null +++ b/main-service/src/main/resources/application-local.properties @@ -0,0 +1,11 @@ +server.port=8080 +stats.server.url=http://localhost:9090 + +spring.jpa.hibernate.ddl-auto=validate +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.show-sql=false + +spring.datasource.driverClassName=org.postgresql.Driver +spring.datasource.url=jdbc:postgresql://localhost:6543/mainDB_local +spring.datasource.username=localuser +spring.datasource.password=localpass \ No newline at end of file diff --git a/main-service/src/main/resources/application.properties b/main-service/src/main/resources/application.properties index 6885798..3b650cf 100644 --- a/main-service/src/main/resources/application.properties +++ b/main-service/src/main/resources/application.properties @@ -1,11 +1,11 @@ server.port=8080 stats.server.url=http://localhost:9090 -spring.jpa.show-sql=true -spring.jpa.hibernate.ddl-auto=update +spring.jpa.hibernate.ddl-auto=validate spring.jpa.properties.hibernate.format_sql=true +spring.jpa.show-sql=false spring.datasource.driverClassName=org.postgresql.Driver -spring.datasource.url=jdbc:postgresql://localhost:6542/mainDB -spring.datasource.username=dbuser -spring.datasource.password=12345 \ No newline at end of file +spring.datasource.url=${SPRING_DATASOURCE_URL} +spring.datasource.username=${SPRING_DATASOURCE_USERNAME} +spring.datasource.password=${SPRING_DATASOURCE_PASSWORD} \ No newline at end of file diff --git a/stats/stats-server/src/main/java/ru/practicum/model/EndpointHit.java b/stats/stats-server/src/main/java/ru/practicum/model/EndpointHit.java index be82130..5c73895 100644 --- a/stats/stats-server/src/main/java/ru/practicum/model/EndpointHit.java +++ b/stats/stats-server/src/main/java/ru/practicum/model/EndpointHit.java @@ -1,19 +1,21 @@ package ru.practicum.model; import jakarta.persistence.*; -import lombok.*; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; import java.time.LocalDateTime; @Entity @Table(name = "endpoint_hits") @Getter -@Setter(AccessLevel.PROTECTED) -@ToString -@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Setter +@EqualsAndHashCode(onlyExplicitlyIncluded = true) public class EndpointHit { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + @EqualsAndHashCode.Include @Column(name = "hit_id") private Long id; @@ -21,23 +23,4 @@ public class EndpointHit { private String uri; private String ip; private LocalDateTime timestamp; - - public EndpointHit(String app, String uri, String ip, LocalDateTime timestamp) { - this.app = app; - this.uri = uri; - this.ip = ip; - this.timestamp = timestamp; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof EndpointHit)) return false; - return id != null && id.equals(((EndpointHit) o).getId()); - } - - @Override - public int hashCode() { - return id == null ? 0 : id.hashCode(); - } } diff --git a/stats/stats-server/src/main/resources/application-local.properties b/stats/stats-server/src/main/resources/application-local.properties new file mode 100644 index 0000000..cddd755 --- /dev/null +++ b/stats/stats-server/src/main/resources/application-local.properties @@ -0,0 +1,16 @@ +server.port=9090 + +spring.jpa.hibernate.ddl-auto=validate +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.show-sql=false +spring.sql.init.mode=always + +spring.datasource.driverClassName=org.postgresql.Driver +spring.datasource.url=jdbc:postgresql://localhost:6542/statDB_local +spring.datasource.username=localuser +spring.datasource.password=localpass + +logging.level.org.springframework.orm.jpa=INFO +logging.level.org.springframework.transaction=INFO +logging.level.org.springframework.transaction.interceptor=DEBUG +logging.level.org.springframework.orm.jpa.JpaTransactionManager=INFO \ No newline at end of file diff --git a/stats/stats-server/src/main/resources/application-test.properties b/stats/stats-server/src/main/resources/application-test.properties index 7345fa2..38f6c12 100644 --- a/stats/stats-server/src/main/resources/application-test.properties +++ b/stats/stats-server/src/main/resources/application-test.properties @@ -2,8 +2,8 @@ spring.jpa.hibernate.ddl-auto=none spring.jpa.properties.hibernate.format_sql=true spring.sql.init.mode=always +spring.datasource.url=jdbc:h2:mem:stat;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;DEFAULT_NULL_ORDERING=HIGH spring.datasource.driverClassName=org.h2.Driver -spring.datasource.url=jdbc:h2:mem:stat spring.datasource.username=stat spring.datasource.password=stat diff --git a/stats/stats-server/src/main/resources/application.properties b/stats/stats-server/src/main/resources/application.properties index 85cfdaf..d06bdba 100644 --- a/stats/stats-server/src/main/resources/application.properties +++ b/stats/stats-server/src/main/resources/application.properties @@ -1,13 +1,14 @@ server.port=9090 + spring.jpa.hibernate.ddl-auto=validate spring.jpa.properties.hibernate.format_sql=true spring.jpa.show-sql=false spring.sql.init.mode=always spring.datasource.driverClassName=org.postgresql.Driver -spring.datasource.url=jdbc:postgresql://localhost:5432/statDB -spring.datasource.username=dbuser -spring.datasource.password=12345 +spring.datasource.url=${SPRING_DATASOURCE_URL} +spring.datasource.username=${SPRING_DATASOURCE_USERNAME} +spring.datasource.password=${SPRING_DATASOURCE_PASSWORD} logging.level.org.springframework.orm.jpa=INFO logging.level.org.springframework.transaction=INFO From 942ffcd93135e14b173e8cda714d89be766f66fc Mon Sep 17 00:00:00 2001 From: Alexander Date: Mon, 13 Oct 2025 15:42:57 +0300 Subject: [PATCH 03/15] Add implementation Dto --- .github/copilot-instructions.md | 1 + .../practicum/category/dto/CategoryDto.java | 7 +++ .../category/dto/NewCategoryDto.java | 11 +++++ .../compilation/dto/CompilationDto.java | 13 +++++ .../compilation/dto/NewCompilationDto.java | 17 +++++++ .../dto/UpdateCompilationRequest.java | 15 ++++++ .../java/ru/practicum/event/EventState.java | 7 +++ .../ru/practicum/event/StateActionAdmin.java | 6 +++ .../ru/practicum/event/StateActionUser.java | 6 +++ .../ru/practicum/event/dto/EventFullDto.java | 47 +++++++++++++++++++ .../ru/practicum/event/dto/EventShortDto.java | 29 ++++++++++++ .../ru/practicum/event/dto/NewEventDto.java | 40 ++++++++++++++++ .../event/dto/UpdateEventAdminRequest.java | 39 +++++++++++++++ .../event/dto/UpdateEventUserRequest.java | 39 +++++++++++++++ .../practicum/location/dto/LocationDto.java | 12 +++++ .../ru/practicum/request/RequestStatus.java | 8 ++++ .../dto/EventRequestStatusUpdateRequest.java | 11 +++++ .../dto/EventRequestStatusUpdateResult.java | 9 ++++ .../request/dto/ParticipationRequestDto.java | 20 ++++++++ .../ru/practicum/user/dto/NewUserRequest.java | 14 ++++++ .../java/ru/practicum/user/dto/UserDto.java | 8 ++++ .../ru/practicum/user/dto/UserShortDto.java | 7 +++ 22 files changed, 366 insertions(+) create mode 100644 .github/copilot-instructions.md create mode 100644 main-service/src/main/java/ru/practicum/category/dto/CategoryDto.java create mode 100644 main-service/src/main/java/ru/practicum/category/dto/NewCategoryDto.java create mode 100644 main-service/src/main/java/ru/practicum/compilation/dto/CompilationDto.java create mode 100644 main-service/src/main/java/ru/practicum/compilation/dto/NewCompilationDto.java create mode 100644 main-service/src/main/java/ru/practicum/compilation/dto/UpdateCompilationRequest.java create mode 100644 main-service/src/main/java/ru/practicum/event/EventState.java create mode 100644 main-service/src/main/java/ru/practicum/event/StateActionAdmin.java create mode 100644 main-service/src/main/java/ru/practicum/event/StateActionUser.java create mode 100644 main-service/src/main/java/ru/practicum/event/dto/EventFullDto.java create mode 100644 main-service/src/main/java/ru/practicum/event/dto/EventShortDto.java create mode 100644 main-service/src/main/java/ru/practicum/event/dto/NewEventDto.java create mode 100644 main-service/src/main/java/ru/practicum/event/dto/UpdateEventAdminRequest.java create mode 100644 main-service/src/main/java/ru/practicum/event/dto/UpdateEventUserRequest.java create mode 100644 main-service/src/main/java/ru/practicum/location/dto/LocationDto.java create mode 100644 main-service/src/main/java/ru/practicum/request/RequestStatus.java create mode 100644 main-service/src/main/java/ru/practicum/request/dto/EventRequestStatusUpdateRequest.java create mode 100644 main-service/src/main/java/ru/practicum/request/dto/EventRequestStatusUpdateResult.java create mode 100644 main-service/src/main/java/ru/practicum/request/dto/ParticipationRequestDto.java create mode 100644 main-service/src/main/java/ru/practicum/user/dto/NewUserRequest.java create mode 100644 main-service/src/main/java/ru/practicum/user/dto/UserDto.java create mode 100644 main-service/src/main/java/ru/practicum/user/dto/UserShortDto.java diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..7ebab26 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1 @@ +When performing a code review, respond in Russian. diff --git a/main-service/src/main/java/ru/practicum/category/dto/CategoryDto.java b/main-service/src/main/java/ru/practicum/category/dto/CategoryDto.java new file mode 100644 index 0000000..04587bd --- /dev/null +++ b/main-service/src/main/java/ru/practicum/category/dto/CategoryDto.java @@ -0,0 +1,7 @@ +package ru.practicum.category.dto; + +public record CategoryDto( + Long id, + String name +) { +} diff --git a/main-service/src/main/java/ru/practicum/category/dto/NewCategoryDto.java b/main-service/src/main/java/ru/practicum/category/dto/NewCategoryDto.java new file mode 100644 index 0000000..c235f69 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/category/dto/NewCategoryDto.java @@ -0,0 +1,11 @@ +package ru.practicum.category.dto; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; + +public record NewCategoryDto( + @NotBlank(message = "Название категории не может быть пустой") + @Size(min = 1, max = 50, message = "Название категории должно содержать от 3 до 50 символов") + String name +) { +} diff --git a/main-service/src/main/java/ru/practicum/compilation/dto/CompilationDto.java b/main-service/src/main/java/ru/practicum/compilation/dto/CompilationDto.java new file mode 100644 index 0000000..342835b --- /dev/null +++ b/main-service/src/main/java/ru/practicum/compilation/dto/CompilationDto.java @@ -0,0 +1,13 @@ +package ru.practicum.compilation.dto; + +import ru.practicum.event.dto.EventShortDto; + +import java.util.List; + +public record CompilationDto( + Long id, + List events, + boolean pinned, + String title +) { +} diff --git a/main-service/src/main/java/ru/practicum/compilation/dto/NewCompilationDto.java b/main-service/src/main/java/ru/practicum/compilation/dto/NewCompilationDto.java new file mode 100644 index 0000000..8c6cc3f --- /dev/null +++ b/main-service/src/main/java/ru/practicum/compilation/dto/NewCompilationDto.java @@ -0,0 +1,17 @@ +package ru.practicum.compilation.dto; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; + +import java.util.Set; + +public record NewCompilationDto( + Set events, + + boolean pinned, + + @NotBlank(message = "Заголовок подборки не может быть пустым") + @Size(min = 1, max = 50, message = "Заголовок должен содержать от 1 до 50 символов") + String title +) { +} diff --git a/main-service/src/main/java/ru/practicum/compilation/dto/UpdateCompilationRequest.java b/main-service/src/main/java/ru/practicum/compilation/dto/UpdateCompilationRequest.java new file mode 100644 index 0000000..73337d8 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/compilation/dto/UpdateCompilationRequest.java @@ -0,0 +1,15 @@ +package ru.practicum.compilation.dto; + +import jakarta.validation.constraints.Size; + +import java.util.Set; + +public record UpdateCompilationRequest( + Set events, + + boolean pinned, + + @Size(min = 1, max = 50, message = "Заголовок должен содержать от 1 до 50 символов") + String title +) { +} diff --git a/main-service/src/main/java/ru/practicum/event/EventState.java b/main-service/src/main/java/ru/practicum/event/EventState.java new file mode 100644 index 0000000..ef8e1a0 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/event/EventState.java @@ -0,0 +1,7 @@ +package ru.practicum.event; + +public enum EventState { + PENDING, + PUBLISHED, + CANCELED +} diff --git a/main-service/src/main/java/ru/practicum/event/StateActionAdmin.java b/main-service/src/main/java/ru/practicum/event/StateActionAdmin.java new file mode 100644 index 0000000..d7b8901 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/event/StateActionAdmin.java @@ -0,0 +1,6 @@ +package ru.practicum.event; + +public enum StateActionAdmin { + PUBLISH_EVENT, + REJECT_EVENT +} diff --git a/main-service/src/main/java/ru/practicum/event/StateActionUser.java b/main-service/src/main/java/ru/practicum/event/StateActionUser.java new file mode 100644 index 0000000..4640af1 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/event/StateActionUser.java @@ -0,0 +1,6 @@ +package ru.practicum.event; + +public enum StateActionUser { + SEND_TO_REVIEW, + CANCEL_REVIEW +} diff --git a/main-service/src/main/java/ru/practicum/event/dto/EventFullDto.java b/main-service/src/main/java/ru/practicum/event/dto/EventFullDto.java new file mode 100644 index 0000000..7eb2d7a --- /dev/null +++ b/main-service/src/main/java/ru/practicum/event/dto/EventFullDto.java @@ -0,0 +1,47 @@ +package ru.practicum.event.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import ru.practicum.category.dto.CategoryDto; +import ru.practicum.event.EventState; +import ru.practicum.location.dto.LocationDto; +import ru.practicum.user.dto.UserShortDto; + +import java.time.LocalDateTime; + +public record EventFullDto( + Long id, + + String annotation, + + CategoryDto category, + + Long confirmedRequests, + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + LocalDateTime createdOn, + + String description, + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + LocalDateTime eventDate, + + UserShortDto initiator, + + LocationDto location, + + boolean paid, + + Integer participantLimit, + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + LocalDateTime publishedOn, + + boolean requestModeration, + + EventState state, + + String title, + + Long views +) { +} diff --git a/main-service/src/main/java/ru/practicum/event/dto/EventShortDto.java b/main-service/src/main/java/ru/practicum/event/dto/EventShortDto.java new file mode 100644 index 0000000..2bf3dd1 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/event/dto/EventShortDto.java @@ -0,0 +1,29 @@ +package ru.practicum.event.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import ru.practicum.category.dto.CategoryDto; +import ru.practicum.user.dto.UserShortDto; + +import java.time.LocalDateTime; + +public record EventShortDto( + Long id, + + String annotation, + + CategoryDto category, + + Long confirmedRequests, + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + LocalDateTime eventDate, + + UserShortDto initiator, + + boolean paid, + + String title, + + Long views +) { +} diff --git a/main-service/src/main/java/ru/practicum/event/dto/NewEventDto.java b/main-service/src/main/java/ru/practicum/event/dto/NewEventDto.java new file mode 100644 index 0000000..7a3cb42 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/event/dto/NewEventDto.java @@ -0,0 +1,40 @@ +package ru.practicum.event.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.*; +import ru.practicum.location.dto.LocationDto; + +import java.time.LocalDateTime; + +public record NewEventDto( + @NotBlank(message = "Краткое описание не может быть пустым") + @Size(min = 20, max = 2000, message = "Аннотация должна содержать от 20 до 2000 символов") + String annotation, + + @NotNull(message = "Id категории не может быть null") + Long category, + + @NotBlank(message = "Описание события не может быть пустым") + @Size(min = 20, max = 7000, message = "Описание должно содержать от 20 до 7000 символов") + String description, + + @NotNull(message = "Дата события не может быть null") + @Future(message = "Дата события должна быть в будущем") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + LocalDateTime eventDate, + + @NotNull(message = "Место проведения события не может быть null") + LocationDto location, + + boolean paid, + + @PositiveOrZero(message = "Лимит участников события должен быть нулевым или больше нуля") + Integer participantLimit, + + boolean requestModeration, + + @NotBlank(message = "Название события не может быть пустым") + @Size(min = 3, max = 120, message = "Заголовок должен содержать от 3 до 120 символов") + String title +) { +} diff --git a/main-service/src/main/java/ru/practicum/event/dto/UpdateEventAdminRequest.java b/main-service/src/main/java/ru/practicum/event/dto/UpdateEventAdminRequest.java new file mode 100644 index 0000000..14427c2 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/event/dto/UpdateEventAdminRequest.java @@ -0,0 +1,39 @@ +package ru.practicum.event.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.Future; +import jakarta.validation.constraints.PositiveOrZero; +import jakarta.validation.constraints.Size; +import ru.practicum.event.StateActionAdmin; +import ru.practicum.location.dto.LocationDto; + +import java.time.LocalDateTime; + +public record UpdateEventAdminRequest( + @Size(min = 20, max = 2000, message = "Недопустимое количество символов") + String annotation, + + Long category, + + @Size(min = 20, max = 7000, message = "Описание должно содержать от 20 до 7000 символов") + String description, + + @Future(message = "Дата события должна быть в будущем") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + LocalDateTime eventDate, + + LocationDto location, + + boolean paid, + + @PositiveOrZero(message = "Лимит участников события должен быть нулевым или больше нуля") + Integer participantLimit, + + boolean requestModeration, + + StateActionAdmin stateAction, + + @Size(min = 3, max = 120, message = "Заголовок должен содержать от 3 до 120 символов") + String title +) { +} diff --git a/main-service/src/main/java/ru/practicum/event/dto/UpdateEventUserRequest.java b/main-service/src/main/java/ru/practicum/event/dto/UpdateEventUserRequest.java new file mode 100644 index 0000000..3e00fc6 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/event/dto/UpdateEventUserRequest.java @@ -0,0 +1,39 @@ +package ru.practicum.event.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.Future; +import jakarta.validation.constraints.PositiveOrZero; +import jakarta.validation.constraints.Size; +import ru.practicum.event.StateActionUser; +import ru.practicum.location.dto.LocationDto; + +import java.time.LocalDateTime; + +public record UpdateEventUserRequest( + @Size(min = 20, max = 2000, message = "Недопустимое количество символов") + String annotation, + + Long category, + + @Size(min = 20, max = 7000, message = "Описание должно содержать от 20 до 7000 символов") + String description, + + @Future(message = "Дата события должна быть в будущем") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + LocalDateTime eventDate, + + LocationDto location, + + boolean paid, + + @PositiveOrZero(message = "Лимит участников события должен быть нулевым или больше нуля") + Integer participantLimit, + + boolean requestModeration, + + StateActionUser stateAction, + + @Size(min = 3, max = 120, message = "Заголовок должен содержать от 3 до 120 символов") + String title +) { +} diff --git a/main-service/src/main/java/ru/practicum/location/dto/LocationDto.java b/main-service/src/main/java/ru/practicum/location/dto/LocationDto.java new file mode 100644 index 0000000..672dbf7 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/location/dto/LocationDto.java @@ -0,0 +1,12 @@ +package ru.practicum.location.dto; + +import jakarta.validation.constraints.NotNull; + +public record LocationDto( + @NotNull(message = "Широта не может быть null") + Float lat, + + @NotNull(message = "Долгота не может быть null") + Float lon +) { +} diff --git a/main-service/src/main/java/ru/practicum/request/RequestStatus.java b/main-service/src/main/java/ru/practicum/request/RequestStatus.java new file mode 100644 index 0000000..ede4589 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/request/RequestStatus.java @@ -0,0 +1,8 @@ +package ru.practicum.request; + +public enum RequestStatus { + PENDING, + CONFIRMED, + REJECTED, + CANCELED +} diff --git a/main-service/src/main/java/ru/practicum/request/dto/EventRequestStatusUpdateRequest.java b/main-service/src/main/java/ru/practicum/request/dto/EventRequestStatusUpdateRequest.java new file mode 100644 index 0000000..3ab5ab1 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/request/dto/EventRequestStatusUpdateRequest.java @@ -0,0 +1,11 @@ +package ru.practicum.request.dto; + +import ru.practicum.request.RequestStatus; + +import java.util.List; + +public record EventRequestStatusUpdateRequest( + List requestIds, + RequestStatus status +) { +} diff --git a/main-service/src/main/java/ru/practicum/request/dto/EventRequestStatusUpdateResult.java b/main-service/src/main/java/ru/practicum/request/dto/EventRequestStatusUpdateResult.java new file mode 100644 index 0000000..9190900 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/request/dto/EventRequestStatusUpdateResult.java @@ -0,0 +1,9 @@ +package ru.practicum.request.dto; + +import java.util.List; + +public record EventRequestStatusUpdateResult( + List confirmedRequests, + List rejectedRequests +) { +} diff --git a/main-service/src/main/java/ru/practicum/request/dto/ParticipationRequestDto.java b/main-service/src/main/java/ru/practicum/request/dto/ParticipationRequestDto.java new file mode 100644 index 0000000..71419c0 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/request/dto/ParticipationRequestDto.java @@ -0,0 +1,20 @@ +package ru.practicum.request.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import ru.practicum.request.RequestStatus; + +import java.time.LocalDateTime; + +public record ParticipationRequestDto( + Long id, + + @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS") + LocalDateTime created, + + Long event, + + Long requester, + + RequestStatus status +) { +} diff --git a/main-service/src/main/java/ru/practicum/user/dto/NewUserRequest.java b/main-service/src/main/java/ru/practicum/user/dto/NewUserRequest.java new file mode 100644 index 0000000..d6e4853 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/user/dto/NewUserRequest.java @@ -0,0 +1,14 @@ +package ru.practicum.user.dto; + +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; + +public record NewUserRequest( + @NotBlank(message = "Имя пользователя не может быть пустым") + String name, + + @NotBlank(message = "Email пользователя не может быть пустой") + @Email + String email +) { +} diff --git a/main-service/src/main/java/ru/practicum/user/dto/UserDto.java b/main-service/src/main/java/ru/practicum/user/dto/UserDto.java new file mode 100644 index 0000000..9a73a41 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/user/dto/UserDto.java @@ -0,0 +1,8 @@ +package ru.practicum.user.dto; + +public record UserDto( + Long id, + String name, + String email +) { +} diff --git a/main-service/src/main/java/ru/practicum/user/dto/UserShortDto.java b/main-service/src/main/java/ru/practicum/user/dto/UserShortDto.java new file mode 100644 index 0000000..e540cf6 --- /dev/null +++ b/main-service/src/main/java/ru/practicum/user/dto/UserShortDto.java @@ -0,0 +1,7 @@ +package ru.practicum.user.dto; + +public record UserShortDto( + Long id, + String name +) { +} From 6b86d3d7b14e06be197c5543281f38b29c65c340 Mon Sep 17 00:00:00 2001 From: vs Date: Wed, 15 Oct 2025 00:37:52 +0300 Subject: [PATCH 04/15] The sections of the final task 17 of the second part have been completed: - Private: Events (Closed API for working with events) - Admin: Events (API for working with events) - Public: Events (Public API for working with events) - Admin: Users (API for working with users) --- .run/Deployment compose-local.run.xml | 18 +- .run/MainApplication (local).run.xml | 2 +- .run/StatApplication (local).run.xml | 2 +- .run/StatApplication.run.xml | 1 + main-service/pom.xml | 20 +- .../controller/AdminCategoryController.java | 4 + .../controller/PublicCategoryController.java | 4 + .../practicum/category/dto/CategoryDto.java | 5 + .../category/dto/NewCategoryDto.java | 4 +- .../category/mapper/CategoryMapper.java | 14 + .../ru/practicum/category/model/Category.java | 21 ++ .../repository/CategoryRepository.java | 4 + .../category/service/CategoryService.java | 4 + .../category/service/CategoryServiceImpl.java | 4 + .../AdminCompilationController.java | 4 + .../PublicCompilationController.java | 4 + .../compilation/dto/NewCompilationDto.java | 2 +- .../dto/UpdateCompilationRequest.java | 4 +- .../compilation/mapper/CompilationMapper.java | 4 + .../compilation/model/Compilation.java | 35 ++ .../repository/CompilationRepository.java | 7 + .../service/CompilationService.java | 4 + .../service/CompilationServiceImpl.java | 4 + .../controller/AdminEventController.java | 39 ++ .../controller/PrivateEventController.java | 90 +++++ .../controller/PublicEventController.java | 42 +++ .../ru/practicum/event/dto/EventFullDto.java | 9 +- .../ru/practicum/event/dto/EventShortDto.java | 2 +- .../{location => event}/dto/LocationDto.java | 2 +- .../ru/practicum/event/dto/NewEventDto.java | 3 +- .../event/dto/SearchEventAdminRequest.java | 25 ++ .../event/dto/SearchEventPublicRequest.java | 29 ++ .../event/dto/UpdateEventAdminRequest.java | 5 +- .../event/dto/UpdateEventUserRequest.java | 5 +- .../practicum/event/mapper/EventMapper.java | 21 ++ .../java/ru/practicum/event/model/Event.java | 71 ++++ .../practicum/event/model/EventLocation.java | 18 + .../event/{ => model}/EventState.java | 2 +- .../EventWithCountConfirmedRequests.java | 13 + .../event/{ => model}/StateActionAdmin.java | 2 +- .../event/{ => model}/StateActionUser.java | 2 +- .../event/repository/EventRepository.java | 38 ++ .../repository/SearchEventSpecifications.java | 79 ++++ .../practicum/event/service/EventService.java | 27 ++ .../event/service/EventServiceImpl.java | 346 ++++++++++++++++++ .../exception/EventErrorException.java | 7 + .../exception/EventNotFoundException.java | 7 + .../exception/RequestErrorException.java | 7 + .../exception/RequestNotFoundException.java | 7 + .../exception/UserErrorException.java | 7 + .../exception/UserNotFoundException.java | 7 + .../request/controller/RequestController.java | 4 + .../dto/EventRequestStatusUpdateRequest.java | 2 +- .../request/dto/ParticipationRequestDto.java | 4 +- .../request/mapper/RequestMapper.java | 22 ++ .../ru/practicum/request/model/Request.java | 34 ++ .../request/{ => model}/RequestStatus.java | 2 +- .../request/repository/RequestRepository.java | 45 +++ .../request/service/RequestService.java | 15 + .../request/service/RequestServiceImpl.java | 109 ++++++ .../user/controller/AdminUserController.java | 45 +++ .../ru/practicum/user/dto/NewUserRequest.java | 3 + .../ru/practicum/user/mapper/UserMapper.java | 17 + .../java/ru/practicum/user/model/User.java | 23 ++ .../user/repository/UserRepository.java | 15 + .../practicum/user/service/UserService.java | 24 ++ .../user/service/UserServiceImpl.java | 74 ++++ .../resources/application-local.properties | 6 +- .../src/main/resources/application.properties | 6 +- .../main/java/ru/practicum/StatsClient.java | 4 +- 70 files changed, 1491 insertions(+), 50 deletions(-) create mode 100644 main-service/src/main/java/ru/practicum/category/controller/AdminCategoryController.java create mode 100644 main-service/src/main/java/ru/practicum/category/controller/PublicCategoryController.java create mode 100644 main-service/src/main/java/ru/practicum/category/mapper/CategoryMapper.java create mode 100644 main-service/src/main/java/ru/practicum/category/model/Category.java create mode 100644 main-service/src/main/java/ru/practicum/category/repository/CategoryRepository.java create mode 100644 main-service/src/main/java/ru/practicum/category/service/CategoryService.java create mode 100644 main-service/src/main/java/ru/practicum/category/service/CategoryServiceImpl.java create mode 100644 main-service/src/main/java/ru/practicum/compilation/controller/AdminCompilationController.java create mode 100644 main-service/src/main/java/ru/practicum/compilation/controller/PublicCompilationController.java create mode 100644 main-service/src/main/java/ru/practicum/compilation/mapper/CompilationMapper.java create mode 100644 main-service/src/main/java/ru/practicum/compilation/model/Compilation.java create mode 100644 main-service/src/main/java/ru/practicum/compilation/repository/CompilationRepository.java create mode 100644 main-service/src/main/java/ru/practicum/compilation/service/CompilationService.java create mode 100644 main-service/src/main/java/ru/practicum/compilation/service/CompilationServiceImpl.java create mode 100644 main-service/src/main/java/ru/practicum/event/controller/AdminEventController.java create mode 100644 main-service/src/main/java/ru/practicum/event/controller/PrivateEventController.java create mode 100644 main-service/src/main/java/ru/practicum/event/controller/PublicEventController.java rename main-service/src/main/java/ru/practicum/{location => event}/dto/LocationDto.java (88%) create mode 100644 main-service/src/main/java/ru/practicum/event/dto/SearchEventAdminRequest.java create mode 100644 main-service/src/main/java/ru/practicum/event/dto/SearchEventPublicRequest.java create mode 100644 main-service/src/main/java/ru/practicum/event/mapper/EventMapper.java create mode 100644 main-service/src/main/java/ru/practicum/event/model/Event.java create mode 100644 main-service/src/main/java/ru/practicum/event/model/EventLocation.java rename main-service/src/main/java/ru/practicum/event/{ => model}/EventState.java (66%) create mode 100644 main-service/src/main/java/ru/practicum/event/model/EventWithCountConfirmedRequests.java rename main-service/src/main/java/ru/practicum/event/{ => model}/StateActionAdmin.java (67%) rename main-service/src/main/java/ru/practicum/event/{ => model}/StateActionUser.java (67%) create mode 100644 main-service/src/main/java/ru/practicum/event/repository/EventRepository.java create mode 100644 main-service/src/main/java/ru/practicum/event/repository/SearchEventSpecifications.java create mode 100644 main-service/src/main/java/ru/practicum/event/service/EventService.java create mode 100644 main-service/src/main/java/ru/practicum/event/service/EventServiceImpl.java create mode 100644 main-service/src/main/java/ru/practicum/exception/EventErrorException.java create mode 100644 main-service/src/main/java/ru/practicum/exception/EventNotFoundException.java create mode 100644 main-service/src/main/java/ru/practicum/exception/RequestErrorException.java create mode 100644 main-service/src/main/java/ru/practicum/exception/RequestNotFoundException.java create mode 100644 main-service/src/main/java/ru/practicum/exception/UserErrorException.java create mode 100644 main-service/src/main/java/ru/practicum/exception/UserNotFoundException.java create mode 100644 main-service/src/main/java/ru/practicum/request/controller/RequestController.java create mode 100644 main-service/src/main/java/ru/practicum/request/mapper/RequestMapper.java create mode 100644 main-service/src/main/java/ru/practicum/request/model/Request.java rename main-service/src/main/java/ru/practicum/request/{ => model}/RequestStatus.java (70%) create mode 100644 main-service/src/main/java/ru/practicum/request/repository/RequestRepository.java create mode 100644 main-service/src/main/java/ru/practicum/request/service/RequestService.java create mode 100644 main-service/src/main/java/ru/practicum/request/service/RequestServiceImpl.java create mode 100644 main-service/src/main/java/ru/practicum/user/controller/AdminUserController.java create mode 100644 main-service/src/main/java/ru/practicum/user/mapper/UserMapper.java create mode 100644 main-service/src/main/java/ru/practicum/user/model/User.java create mode 100644 main-service/src/main/java/ru/practicum/user/repository/UserRepository.java create mode 100644 main-service/src/main/java/ru/practicum/user/service/UserService.java create mode 100644 main-service/src/main/java/ru/practicum/user/service/UserServiceImpl.java diff --git a/.run/Deployment compose-local.run.xml b/.run/Deployment compose-local.run.xml index 7822156..4f2962b 100644 --- a/.run/Deployment compose-local.run.xml +++ b/.run/Deployment compose-local.run.xml @@ -1,11 +1,11 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/.run/MainApplication (local).run.xml b/.run/MainApplication (local).run.xml index 36efc67..bd3928c 100644 --- a/.run/MainApplication (local).run.xml +++ b/.run/MainApplication (local).run.xml @@ -1,6 +1,6 @@ -