From 2e68f2e10c32293b7bb5ebcdf022b9582680bf1d Mon Sep 17 00:00:00 2001 From: Pepe Ronin Date: Mon, 22 Sep 2025 22:38:44 +0300 Subject: [PATCH 01/43] refactor(stats-service): remove Feign client and dependencies - Remove all Feign-related configurations and interfaces. - Prepares the service for the new gRPC client implementation. --- core/stats-service/pom.xml | 2 - core/stats-service/stats-client/pom.xml | 28 -- .../stats/client/StatsClient.java | 29 -- .../stats/client/StatsClientImpl.java | 93 ---- .../stats/client/aop/LogStatsHit.java | 11 - .../stats/client/aop/StatsHitAspect.java | 75 ---- .../StatsClientAutoConfiguration.java | 17 - ...ot.autoconfigure.AutoConfiguration.imports | 1 - core/stats-service/stats-dto/pom.xml | 63 --- .../stats/dto/EndpointHitDto.java | 41 -- .../explorewithme/stats/dto/ViewStatsDto.java | 15 - .../stats/dto/EndpointHitDtoTest.java | 400 ------------------ .../stats/dto/ViewStatsDtoTest.java | 217 ---------- core/stats-service/stats-server/Dockerfile | 5 - core/stats-service/stats-server/pom.xml | 107 ----- .../stats/server/StatsServerApplication.java | 15 - .../server/controller/StatsController.java | 75 ---- .../server/error/GlobalExceptionHandler.java | 75 ---- .../server/mapper/EndpointHitMapper.java | 24 -- .../server/mapper/EndpointHitMapperImpl.java | 31 -- .../stats/server/model/EndpointHit.java | 59 --- .../server/repository/StatsRepository.java | 39 -- .../stats/server/service/StatsService.java | 29 -- .../server/service/StatsServiceImpl.java | 61 --- .../src/main/resources/application.yaml | 25 -- .../src/main/resources/schema.sql | 8 - .../controller/StatsControllerTest.java | 167 -------- .../StatsServerIntegrationTest.java | 158 ------- .../repository/StatsRepositoryTest.java | 180 -------- .../server/service/StatsServiceImplTest.java | 224 ---------- .../src/test/resources/application.yaml | 9 - 31 files changed, 2283 deletions(-) delete mode 100644 core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/StatsClient.java delete mode 100644 core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/StatsClientImpl.java delete mode 100644 core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/aop/LogStatsHit.java delete mode 100644 core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/aop/StatsHitAspect.java delete mode 100644 core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/autoconfiguration/StatsClientAutoConfiguration.java delete mode 100644 core/stats-service/stats-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 core/stats-service/stats-dto/pom.xml delete mode 100644 core/stats-service/stats-dto/src/main/java/ru/practicum/explorewithme/stats/dto/EndpointHitDto.java delete mode 100644 core/stats-service/stats-dto/src/main/java/ru/practicum/explorewithme/stats/dto/ViewStatsDto.java delete mode 100644 core/stats-service/stats-dto/src/test/java/ru/practicum/explorewithme/stats/dto/EndpointHitDtoTest.java delete mode 100644 core/stats-service/stats-dto/src/test/java/ru/practicum/explorewithme/stats/dto/ViewStatsDtoTest.java delete mode 100644 core/stats-service/stats-server/Dockerfile delete mode 100644 core/stats-service/stats-server/pom.xml delete mode 100644 core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/StatsServerApplication.java delete mode 100644 core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/controller/StatsController.java delete mode 100644 core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/error/GlobalExceptionHandler.java delete mode 100644 core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/mapper/EndpointHitMapper.java delete mode 100644 core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/mapper/EndpointHitMapperImpl.java delete mode 100644 core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/model/EndpointHit.java delete mode 100644 core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/repository/StatsRepository.java delete mode 100644 core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/service/StatsService.java delete mode 100644 core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/service/StatsServiceImpl.java delete mode 100644 core/stats-service/stats-server/src/main/resources/application.yaml delete mode 100644 core/stats-service/stats-server/src/main/resources/schema.sql delete mode 100644 core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/controller/StatsControllerTest.java delete mode 100644 core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/controller/StatsServerIntegrationTest.java delete mode 100644 core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/repository/StatsRepositoryTest.java delete mode 100644 core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/service/StatsServiceImplTest.java delete mode 100644 core/stats-service/stats-server/src/test/resources/application.yaml diff --git a/core/stats-service/pom.xml b/core/stats-service/pom.xml index eb35629..cbe122b 100644 --- a/core/stats-service/pom.xml +++ b/core/stats-service/pom.xml @@ -14,7 +14,5 @@ stats-client - stats-dto - stats-server \ No newline at end of file diff --git a/core/stats-service/stats-client/pom.xml b/core/stats-service/stats-client/pom.xml index 278aeb2..c86758d 100644 --- a/core/stats-service/stats-client/pom.xml +++ b/core/stats-service/stats-client/pom.xml @@ -19,44 +19,16 @@ stats-dto ${project.version} - - org.springframework.boot - spring-boot-starter-web - org.projectlombok lombok true - - org.springframework.boot - spring-boot-starter-test - test - ru.practicum interaction-api ${project.version} - - org.springframework.cloud - spring-cloud-openfeign-core - - - com.squareup.okhttp3 - mockwebserver - test - - - org.springframework.cloud - spring-cloud-starter-contract-stub-runner - test - - - org.springframework.cloud - spring-cloud-commons - test - org.springframework.boot spring-boot-starter-aop diff --git a/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/StatsClient.java b/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/StatsClient.java deleted file mode 100644 index a7fce6a..0000000 --- a/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/StatsClient.java +++ /dev/null @@ -1,29 +0,0 @@ -package ru.practicum.explorewithme.stats.client; - -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; - -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; -import ru.practicum.explorewithme.stats.dto.EndpointHitDto; -import ru.practicum.explorewithme.stats.dto.ViewStatsDto; - -import java.time.LocalDateTime; -import java.util.List; - -@FeignClient(name = "stats-server") -public interface StatsClient { - - @PostMapping("/hit") - void saveHit(@RequestBody EndpointHitDto endpointHitDto); - - @GetMapping("/stats") - List getStats( - @RequestParam @DateTimeFormat(pattern = DATE_TIME_FORMAT_PATTERN) LocalDateTime start, - @RequestParam @DateTimeFormat(pattern = DATE_TIME_FORMAT_PATTERN) LocalDateTime end, - @RequestParam(value = "uris", required = false) List uris, - @RequestParam(value = "unique", defaultValue = "false") Boolean unique); -} diff --git a/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/StatsClientImpl.java b/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/StatsClientImpl.java deleted file mode 100644 index c9fcd9c..0000000 --- a/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/StatsClientImpl.java +++ /dev/null @@ -1,93 +0,0 @@ -package ru.practicum.explorewithme.stats.client; - -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMATTER; - -import java.time.LocalDateTime; -import java.util.List; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.ParameterizedTypeReference; -import org.springframework.http.HttpStatusCode; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Service; -import org.springframework.web.client.RestClient; -import org.springframework.web.client.RestClientException; -import ru.practicum.explorewithme.stats.dto.EndpointHitDto; -import ru.practicum.explorewithme.stats.dto.ViewStatsDto; - -@Service -@Slf4j -public class StatsClientImpl implements StatsClient { - - private final RestClient restClient; - - @Autowired - public StatsClientImpl(@Value("${stats-server.url}") String statsServerUrl) { - this.restClient = RestClient.builder() - .baseUrl(statsServerUrl) - .defaultStatusHandler(HttpStatusCode::isError, (request, response) -> { - String errorMessage = "Ошибка при обращении к сервису статистики: " + - response.getStatusCode() + " " + response.getStatusText(); - log.error(errorMessage); - - // Обработка ошибок по типу - if (response.getStatusCode().is4xxClientError()) { - throw new RestClientException("Ошибка клиентского запроса: " + errorMessage); - } else if (response.getStatusCode().is5xxServerError()) { - throw new RestClientException("Ошибка сервера статистики: " + errorMessage); - } else { - throw new RestClientException(errorMessage); - } - }) - .build(); - } - - public StatsClientImpl(RestClient restClient) { - this.restClient = restClient; - } - - @Override - public void saveHit(EndpointHitDto endpointHitDto) { - log.debug("Отправка данных статистики: {}", endpointHitDto); - restClient.post() - .uri("/hit") - .contentType(MediaType.APPLICATION_JSON) - .body(endpointHitDto) - .retrieve() - .toBodilessEntity(); - log.debug("Статистика успешно сохранена"); - } - - @Override - public List getStats(LocalDateTime start, LocalDateTime end, List uris, Boolean unique) { - log.debug("Запрос статистики: start={}, end={}, uris={}, unique={}", start, end, uris, unique); - List stats = restClient.get() - .uri(uriBuilder -> { - uriBuilder.path("/stats") - .queryParam("start", start - .format(DATE_TIME_FORMATTER)) - .queryParam("end", end - .format(DATE_TIME_FORMATTER)); - - if (uris != null && !uris.isEmpty()) { - for (String uri : uris) { - uriBuilder.queryParam("uris", uri); - } - } - - if (unique != null) { - uriBuilder.queryParam("unique", unique); - } - - return uriBuilder.build(); - }) - .retrieve() - .body(new ParameterizedTypeReference<>() {}); - - log.debug("Получена статистика: {}", stats); - return stats; - } - - -} \ No newline at end of file diff --git a/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/aop/LogStatsHit.java b/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/aop/LogStatsHit.java deleted file mode 100644 index 1cf2a2b..0000000 --- a/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/aop/LogStatsHit.java +++ /dev/null @@ -1,11 +0,0 @@ -package ru.practicum.explorewithme.stats.client.aop; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -public @interface LogStatsHit { -} \ No newline at end of file diff --git a/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/aop/StatsHitAspect.java b/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/aop/StatsHitAspect.java deleted file mode 100644 index 4703bba..0000000 --- a/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/aop/StatsHitAspect.java +++ /dev/null @@ -1,75 +0,0 @@ -package ru.practicum.explorewithme.stats.client.aop; - -import jakarta.servlet.http.HttpServletRequest; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.aspectj.lang.JoinPoint; -import org.aspectj.lang.annotation.AfterReturning; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Pointcut; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; -import org.springframework.util.StringUtils; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; -import ru.practicum.explorewithme.stats.client.StatsClient; -import ru.practicum.explorewithme.stats.dto.EndpointHitDto; - -import java.time.LocalDateTime; - -@Aspect -@Component -@RequiredArgsConstructor -@Slf4j -public class StatsHitAspect { - - private final StatsClient statsClient; - - @Value("${spring.application.name:ewm-main-service}") - private String appName; - - @Pointcut("@annotation(LogStatsHit)") - public void methodsToLogHit() { - } - - @AfterReturning(pointcut = "methodsToLogHit()") - public void logHit(JoinPoint joinPoint) { - ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if (attributes == null) { - log.warn("Cannot log hit: HttpServletRequest is not available in the current context for method: {}", - joinPoint.getSignature().toShortString()); - return; - } - HttpServletRequest request = attributes.getRequest(); - - String uri = request.getRequestURI(); - - String ip; - String xRealIp = request.getHeader("X-Real-IP"); - if (StringUtils.hasText(xRealIp)) { // StringUtils.hasText проверяет на null, "", " " - ip = xRealIp; - log.debug("StatsHitAspect: Using IP from X-Real-IP header: {}", ip); - } else { - ip = request.getRemoteAddr(); - log.debug("StatsHitAspect: X-Real-IP header not found or empty, using remoteAddr: {}", ip); - } - - LocalDateTime timestamp = LocalDateTime.now(); - - log.debug("StatsHitAspect: Logging hit for app='{}', uri='{}', ip='{}'", appName, uri, ip); - - EndpointHitDto hitDto = EndpointHitDto.builder() - .app(appName) - .uri(uri) - .ip(ip) - .timestamp(timestamp) - .build(); - - try { - statsClient.saveHit(hitDto); - log.debug("StatsHitAspect: Hit successfully sent to stats service for URI: {}", uri); - } catch (Exception e) { - log.error("StatsHitAspect: Failed to send hit to stats service for URI: {}. Error: {}", uri, e.getMessage()); - } - } -} \ No newline at end of file diff --git a/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/autoconfiguration/StatsClientAutoConfiguration.java b/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/autoconfiguration/StatsClientAutoConfiguration.java deleted file mode 100644 index f850d28..0000000 --- a/core/stats-service/stats-client/src/main/java/ru/practicum/explorewithme/stats/client/autoconfiguration/StatsClientAutoConfiguration.java +++ /dev/null @@ -1,17 +0,0 @@ -package ru.practicum.explorewithme.stats.client.autoconfiguration; - -import org.springframework.boot.autoconfigure.AutoConfiguration; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.context.annotation.Bean; -import ru.practicum.explorewithme.stats.client.StatsClient; -import ru.practicum.explorewithme.stats.client.aop.StatsHitAspect; - -@AutoConfiguration -@ConditionalOnBean(StatsClient.class) -public class StatsClientAutoConfiguration { - - @Bean - public StatsHitAspect statsHitAspect(StatsClient statsClient) { - return new StatsHitAspect(statsClient); - } -} \ No newline at end of file diff --git a/core/stats-service/stats-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/core/stats-service/stats-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index df76e89..0000000 --- a/core/stats-service/stats-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -ru.practicum.explorewithme.stats.client.autoconfiguration.StatsClientAutoConfiguration \ No newline at end of file diff --git a/core/stats-service/stats-dto/pom.xml b/core/stats-service/stats-dto/pom.xml deleted file mode 100644 index 377cb50..0000000 --- a/core/stats-service/stats-dto/pom.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - 4.0.0 - - ru.practicum - stats-service - 0.0.1-SNAPSHOT - ../pom.xml - - - stats-dto - jar - - - - jakarta.validation - jakarta.validation-api - - - org.projectlombok - lombok - - - com.fasterxml.jackson.core - jackson-annotations - - - com.fasterxml.jackson.core - jackson-databind - - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - - - org.junit.jupiter - junit-jupiter - - - org.assertj - assertj-core - test - - - org.hibernate.validator - hibernate-validator - - - org.glassfish - jakarta.el - 4.0.2 - test - - - ru.practicum - interaction-api - ${project.version} - - - - \ No newline at end of file diff --git a/core/stats-service/stats-dto/src/main/java/ru/practicum/explorewithme/stats/dto/EndpointHitDto.java b/core/stats-service/stats-dto/src/main/java/ru/practicum/explorewithme/stats/dto/EndpointHitDto.java deleted file mode 100644 index 81176c8..0000000 --- a/core/stats-service/stats-dto/src/main/java/ru/practicum/explorewithme/stats/dto/EndpointHitDto.java +++ /dev/null @@ -1,41 +0,0 @@ -package ru.practicum.explorewithme.stats.dto; - -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.PastOrPresent; -import jakarta.validation.constraints.Size; -import lombok.*; - -import jakarta.validation.constraints.NotNull; -import lombok.experimental.FieldDefaults; - -import java.time.LocalDateTime; - -@Data -@AllArgsConstructor -@NoArgsConstructor -@Builder -@JsonIgnoreProperties(ignoreUnknown = true) -@FieldDefaults(level = AccessLevel.PRIVATE) -public class EndpointHitDto { - - @NotBlank(message = "Поле app не может быть пустым") - @Size(min = 1, max = 32, message = "Поле app должно быть от 1 до 32 символов") - String app; - - @NotBlank(message = "Поле uri не может быть пустым") - @Size(min = 1, max = 128, message = "Поле uri должно быть от 1 до 128 символов") - String uri; - - @NotBlank(message = "Поле ip не может быть пустым") - @Size(min = 7, max = 16, message = "Поле ip должно быть от 7 до 16 символов") - String ip; - - @NotNull(message = "Поле timestamp не может быть пустым") - @PastOrPresent(message = "Поле timestamp должно быть не позже текущей даты и времени") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DATE_TIME_FORMAT_PATTERN) - LocalDateTime timestamp; -} \ No newline at end of file diff --git a/core/stats-service/stats-dto/src/main/java/ru/practicum/explorewithme/stats/dto/ViewStatsDto.java b/core/stats-service/stats-dto/src/main/java/ru/practicum/explorewithme/stats/dto/ViewStatsDto.java deleted file mode 100644 index 71c28e3..0000000 --- a/core/stats-service/stats-dto/src/main/java/ru/practicum/explorewithme/stats/dto/ViewStatsDto.java +++ /dev/null @@ -1,15 +0,0 @@ -package ru.practicum.explorewithme.stats.dto; - -import lombok.*; -import lombok.experimental.FieldDefaults; - -@Data -@AllArgsConstructor -@NoArgsConstructor -@Builder -@FieldDefaults(level = AccessLevel.PRIVATE) -public class ViewStatsDto { - String app; - String uri; - Long hits; -} \ No newline at end of file diff --git a/core/stats-service/stats-dto/src/test/java/ru/practicum/explorewithme/stats/dto/EndpointHitDtoTest.java b/core/stats-service/stats-dto/src/test/java/ru/practicum/explorewithme/stats/dto/EndpointHitDtoTest.java deleted file mode 100644 index 2f63769..0000000 --- a/core/stats-service/stats-dto/src/test/java/ru/practicum/explorewithme/stats/dto/EndpointHitDtoTest.java +++ /dev/null @@ -1,400 +0,0 @@ -// CHECKSTYLE:OFF RegexpSinglelineJava -package ru.practicum.explorewithme.stats.dto; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; -import jakarta.validation.ConstraintViolation; -import jakarta.validation.Validation; -import jakarta.validation.Validator; -import jakarta.validation.ValidatorFactory; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - -import java.time.LocalDateTime; -import java.time.temporal.ChronoUnit; -import java.util.Set; -import java.util.stream.Stream; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; - -@DisplayName("Тесты для EndpointHitDto") -class EndpointHitDtoTest { - private ObjectMapper objectMapper; - private Validator validator; - - @BeforeEach - void setUp() { - objectMapper = new ObjectMapper(); - objectMapper.registerModule(new JavaTimeModule()); - objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); - - ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); - validator = factory.getValidator(); - } - - @Nested - @DisplayName("Сериализация и десериализация") - class SerializationTests { - @Test - @DisplayName("Корректная сериализация в JSON") - void testSerializationToJson() throws Exception { - // Подготовка тестовых данных - LocalDateTime timestamp = LocalDateTime.of(2024, 3, 15, 12, 30, 0); - EndpointHitDto dto = new EndpointHitDto( - "test-app", - "/test/path", - "192.168.1.1", - timestamp - ); - - // Сериализация в JSON - String json = objectMapper.writeValueAsString(dto); - - // Проверки с информативными сообщениями - assertThat(json) - .as("JSON должен содержать поле app с правильным значением") - .contains("\"app\":\"test-app\""); - - assertThat(json) - .as("JSON должен содержать поле uri с правильным значением") - .contains("\"uri\":\"/test/path\""); - - assertThat(json) - .as("JSON должен содержать поле ip с правильным значением") - .contains("\"ip\":\"192.168.1.1\""); - - assertThat(json) - .as("JSON должен содержать поле timestamp в формате " + DATE_TIME_FORMAT_PATTERN) - .contains("\"timestamp\":\"2024-03-15 12:30:00\""); - } - - @Test - @DisplayName("Корректная десериализация из JSON") - void testDeserializationFromJson() throws Exception { - // Подготовка JSON - String json = """ - { - "app": "test-app", - "uri": "/test/path", - "ip": "192.168.1.1", - "timestamp": "2024-03-15 12:30:00" - }"""; - - // Десериализация из JSON - EndpointHitDto dto = objectMapper.readValue(json, EndpointHitDto.class); - - // Проверки с информативными сообщениями - assertThat(dto.getApp()) - .as("Поле app должно быть правильно десериализовано") - .isEqualTo("test-app"); - - assertThat(dto.getUri()) - .as("Поле uri должно быть правильно десериализовано") - .isEqualTo("/test/path"); - - assertThat(dto.getIp()) - .as("Поле ip должно быть правильно десериализовано") - .isEqualTo("192.168.1.1"); - - assertThat(dto.getTimestamp()) - .as("Поле timestamp должно быть правильно десериализовано") - .isEqualTo(LocalDateTime.of(2024, 3, 15, 12, 30, 0)); - } - - @Test - @DisplayName("Ошибка при неверном формате даты") - void testInvalidTimestampFormat() { - // Подготовка JSON с неверным форматом даты - String json = """ - { - "app": "test-app", - "uri": "/test/path", - "ip": "192.168.1.1", - "timestamp": "2024-03-15T12:30:00" - }"""; - - // Проверка исключения при неверном формате - Exception exception = assertThrows( - Exception.class, - () -> objectMapper.readValue(json, EndpointHitDto.class), - "Должно быть выброшено исключение при неверном формате даты" - ); - - assertThat(exception.getMessage()) - .as("Сообщение об ошибке должно указывать на проблему с форматом даты") - .contains("timestamp"); - } - - @Test - @DisplayName("Десериализация с дополнительными полями") - void testDeserializationWithExtraFields() throws Exception { - // JSON с дополнительными полями - String json = """ - { - "app": "test-app", - "uri": "/test/path", - "ip": "192.168.1.1", - "timestamp": "2024-03-15 12:30:00", - "extraField": "extra value" - }"""; - - // Десериализация - EndpointHitDto dto = objectMapper.readValue(json, EndpointHitDto.class); - - // Проверки основных полей - должны быть правильно заполнены - assertThat(dto.getApp()).isEqualTo("test-app"); - assertThat(dto.getUri()).isEqualTo("/test/path"); - assertThat(dto.getIp()).isEqualTo("192.168.1.1"); - assertThat(dto.getTimestamp()).isEqualTo(LocalDateTime.of(2024, 3, 15, 12, 30, 0)); - } - - @Test - @DisplayName("Обработка null-значений") - void testNullValues() throws Exception { - // Создание объекта с null-значениями - EndpointHitDto dto = new EndpointHitDto(null, null, null, null); - - // Сериализация - String json = objectMapper.writeValueAsString(dto); - - // Десериализация - EndpointHitDto deserializedDto = objectMapper.readValue(json, EndpointHitDto.class); - - // Проверки - assertThat(deserializedDto.getApp()).isNull(); - assertThat(deserializedDto.getUri()).isNull(); - assertThat(deserializedDto.getIp()).isNull(); - assertThat(deserializedDto.getTimestamp()).isNull(); - } - } - - @Nested - @DisplayName("Валидация полей") - class ValidationTests { - @Test - @DisplayName("Валидация пустого app") - void testEmptyAppValidation() { - // Создаем DTO с нарушением валидационных ограничений - EndpointHitDto dto = new EndpointHitDto( - "", // пустое app (нарушает @NotBlank) - "/uri", - "192.168.1.1", - LocalDateTime.now() - ); - - // Проверяем, что валидация выявила ошибки - Set> violations = validator.validate(dto); - - assertThat(violations) - .as("Должно быть обнаружено нарушение валидации для поля app") - .isNotEmpty(); - - assertThat(violations) - .as("Должно быть сообщение об ошибке для поля app") - .anyMatch(v -> v.getPropertyPath().toString().equals("app")); - } - - @Test - @DisplayName("Валидация длинного uri (более 128 символов)") - void testUriTooLongValidation() { - // Создаем URI длиной более 128 символов - String longUri = "/".repeat(129); - - EndpointHitDto dto = new EndpointHitDto( - "app", - longUri, - "192.168.1.1", - LocalDateTime.now() - ); - - // Проверяем, что валидация выявила ошибки - Set> violations = validator.validate(dto); - - assertThat(violations) - .as("Должно быть обнаружено нарушение валидации для поля uri") - .isNotEmpty(); - - assertThat(violations) - .as("Должно быть сообщение об ошибке для поля uri") - .anyMatch(v -> v.getPropertyPath().toString().equals("uri")); - } - - @Test - @DisplayName("Валидация IP адреса (слишком короткий)") - void testIpTooShortValidation() { - // IP адрес короче 7 символов - EndpointHitDto dto = new EndpointHitDto( - "app", - "/uri", - "1.1.1", // слишком короткий IP - LocalDateTime.now() - ); - - // Проверяем, что валидация выявила ошибки - Set> violations = validator.validate(dto); - - assertThat(violations) - .as("Должно быть обнаружено нарушение валидации для поля ip") - .isNotEmpty(); - - assertThat(violations) - .as("Должно быть сообщение об ошибке для поля ip") - .anyMatch(v -> v.getPropertyPath().toString().equals("ip")); - } - - @Test - @DisplayName("Валидация даты в будущем") - void testFutureTimestampValidation() { - // Timestamp в будущем (не соответствует @PastOrPresent) - LocalDateTime futureTime = LocalDateTime.now().plus(1, ChronoUnit.DAYS); - - EndpointHitDto dto = new EndpointHitDto( - "app", - "/uri", - "192.168.1.1", - futureTime - ); - - // Проверяем, что валидация выявила ошибки - Set> violations = validator.validate(dto); - - assertThat(violations) - .as("Должно быть обнаружено нарушение валидации для поля timestamp") - .isNotEmpty(); - - assertThat(violations) - .as("Должно быть сообщение об ошибке для поля timestamp") - .anyMatch(v -> v.getPropertyPath().toString().equals("timestamp")); - } - - @ParameterizedTest - @MethodSource("invalidDtoProvider") - @DisplayName("Параметризованный тест для различных нарушений валидации") - void testValidationConstraints(String app, String uri, String ip, LocalDateTime timestamp, String expectedField) { - // Создаем DTO с указанными параметрами - EndpointHitDto dto = new EndpointHitDto(app, uri, ip, timestamp); - - // Проверяем валидацию - Set> violations = validator.validate(dto); - - assertThat(violations) - .as("Должна быть обнаружена ошибка валидации") - .isNotEmpty(); - - assertThat(violations) - .as("Должна быть ошибка для поля " + expectedField) - .anyMatch(v -> v.getPropertyPath().toString().equals(expectedField)); - } - - static Stream invalidDtoProvider() { - return Stream.of( - // app, uri, ip, timestamp, expectedViolationField - Arguments.of(null, "/uri", "192.168.1.1", LocalDateTime.now(), "app"), - Arguments.of("app", null, "192.168.1.1", LocalDateTime.now(), "uri"), - Arguments.of("app", "/uri", null, LocalDateTime.now(), "ip"), - Arguments.of("app", "/uri", "192.168.1.1", null, "timestamp"), - Arguments.of("app", "", "192.168.1.1", LocalDateTime.now(), "uri"), - Arguments.of("app", "/uri", "ip", LocalDateTime.now(), "ip") // слишком короткий IP - ); - } - } - - @Nested - @DisplayName("Граничные значения") - class BoundaryTests { - @Test - @DisplayName("Максимально допустимая длина app (32 символа)") - void testMaxAppLength() throws Exception { - // Создаем app длиной ровно 32 символа - String maxLengthApp = "a".repeat(32); - - EndpointHitDto dto = new EndpointHitDto( - maxLengthApp, - "/uri", - "192.168.1.1", - LocalDateTime.now() - ); - - // Валидация должна пройти успешно - Set> violations = validator.validate(dto); - - assertThat(violations) - .as("Не должно быть нарушений валидации для app длиной 32 символа") - .isEmpty(); - - // Проверяем сериализацию/десериализацию - String json = objectMapper.writeValueAsString(dto); - EndpointHitDto deserializedDto = objectMapper.readValue(json, EndpointHitDto.class); - - assertThat(deserializedDto.getApp()) - .as("App должен быть корректно сериализован и десериализован") - .isEqualTo(maxLengthApp); - } - - @Test - @DisplayName("Максимально допустимая длина uri (128 символов)") - void testMaxUriLength() throws Exception { - // Создаем uri длиной ровно 128 символов - String maxLengthUri = "/".repeat(128); - - EndpointHitDto dto = new EndpointHitDto( - "app", - maxLengthUri, - "192.168.1.1", - LocalDateTime.now() - ); - - // Валидация должна пройти успешно - Set> violations = validator.validate(dto); - - assertThat(violations) - .as("Не должно быть нарушений валидации для uri длиной 128 символов") - .isEmpty(); - - // Проверяем сериализацию/десериализацию - String json = objectMapper.writeValueAsString(dto); - EndpointHitDto deserializedDto = objectMapper.readValue(json, EndpointHitDto.class); - - assertThat(deserializedDto.getUri()) - .as("URI должен быть корректно сериализован и десериализован") - .isEqualTo(maxLengthUri); - } - - @Test - @DisplayName("Минимально допустимая длина ip (7 символов)") - void testMinIpLength() throws Exception { - // Создаем ip длиной ровно 7 символов - String minLengthIp = "1.1.1.1"; // ровно 7 символов - - EndpointHitDto dto = new EndpointHitDto( - "app", - "/uri", - minLengthIp, - LocalDateTime.now() - ); - - // Валидация должна пройти успешно - Set> violations = validator.validate(dto); - - assertThat(violations) - .as("Не должно быть нарушений валидации для ip длиной 7 символов") - .isEmpty(); - - // Проверяем сериализацию/десериализацию - String json = objectMapper.writeValueAsString(dto); - EndpointHitDto deserializedDto = objectMapper.readValue(json, EndpointHitDto.class); - - assertThat(deserializedDto.getIp()) - .as("IP должен быть корректно сериализован и десериализован") - .isEqualTo(minLengthIp); - } - } -} \ No newline at end of file diff --git a/core/stats-service/stats-dto/src/test/java/ru/practicum/explorewithme/stats/dto/ViewStatsDtoTest.java b/core/stats-service/stats-dto/src/test/java/ru/practicum/explorewithme/stats/dto/ViewStatsDtoTest.java deleted file mode 100644 index 8ccc8fc..0000000 --- a/core/stats-service/stats-dto/src/test/java/ru/practicum/explorewithme/stats/dto/ViewStatsDtoTest.java +++ /dev/null @@ -1,217 +0,0 @@ -// CHECKSTYLE:OFF RegexpSinglelineJava -package ru.practicum.explorewithme.stats.dto; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.*; - -@DisplayName("Тесты для ViewStatsDto") -class ViewStatsDtoTest { - private ObjectMapper objectMapper; - - @BeforeEach - void setUp() { - objectMapper = new ObjectMapper(); - } - - @Nested - @DisplayName("Сериализация и десериализация") - class SerializationTests { - @Test - @DisplayName("Корректная сериализация в JSON") - void testSerializationToJson() throws Exception { - // Подготовка тестовых данных - ViewStatsDto dto = new ViewStatsDto("test-service", "/events/1", 100L); - - // Сериализация в JSON - String json = objectMapper.writeValueAsString(dto); - - // Проверки с информативными сообщениями - assertThat(json) - .as("JSON должен содержать поле app с правильным значением") - .contains("\"app\":\"test-service\""); - - assertThat(json) - .as("JSON должен содержать поле uri с правильным значением") - .contains("\"uri\":\"/events/1\""); - - assertThat(json) - .as("JSON должен содержать поле hits с правильным значением") - .contains("\"hits\":100"); - } - - @Test - @DisplayName("Корректная десериализация из JSON") - void testDeserializationFromJson() throws Exception { - // Подготовка JSON - String json = """ - { - "app": "test-service", - "uri": "/events/1", - "hits": 100 - }"""; - - // Десериализация из JSON - ViewStatsDto dto = objectMapper.readValue(json, ViewStatsDto.class); - - // Проверки с информативными сообщениями - assertThat(dto.getApp()) - .as("Поле app должно быть правильно десериализовано") - .isEqualTo("test-service"); - - assertThat(dto.getUri()) - .as("Поле uri должно быть правильно десериализовано") - .isEqualTo("/events/1"); - - assertThat(dto.getHits()) - .as("Поле hits должно быть правильно десериализовано") - .isEqualTo(100L); - } - - @Test - @DisplayName("Десериализация с отсутствующими полями") - void testDeserializationWithMissingFields() throws Exception { - // JSON с отсутствующими полями - String json = """ - { - "app": "test-service" - }"""; - - ViewStatsDto dto = objectMapper.readValue(json, ViewStatsDto.class); - - // Проверки - assertThat(dto.getApp()) - .as("Поле app должно быть правильно десериализовано") - .isEqualTo("test-service"); - - assertThat(dto.getUri()) - .as("Поле uri должно быть null при отсутствии в JSON") - .isNull(); - - assertThat(dto.getHits()) - .as("Поле hits должно быть null при отсутствии в JSON") - .isNull(); - } - - @Test - @DisplayName("Обработка null-значений") - void testNullValues() throws Exception { - // Создание объекта с null-значениями - ViewStatsDto dto = new ViewStatsDto(null, null, null); - - // Сериализация - String json = objectMapper.writeValueAsString(dto); - - // Десериализация - ViewStatsDto deserializedDto = objectMapper.readValue(json, ViewStatsDto.class); - - // Проверки - assertThat(deserializedDto.getApp()).isNull(); - assertThat(deserializedDto.getUri()).isNull(); - assertThat(deserializedDto.getHits()).isNull(); - } - - @Test - @DisplayName("Ошибка при неверном типе данных (hits не число)") - void testInvalidHitsType() { - // JSON с неверным типом поля hits - String json = """ - { - "app": "test-service", - "uri": "/events/1", - "hits": "not-a-number" - }"""; - - // Проверка исключения при неверном типе - Exception exception = assertThrows( - Exception.class, - () -> objectMapper.readValue(json, ViewStatsDto.class), - "Должно быть выброшено исключение при неверном типе поля hits" - ); - - assertThat(exception.getMessage()) - .as("Сообщение об ошибке должно указывать на проблему с типом hits") - .contains("hits"); - } - } - - @Nested - @DisplayName("Тесты конструкторов и методов") - class ConstructorTests { - @Test - @DisplayName("Конструктор со всеми параметрами") - void testAllArgsConstructor() { - // Создание объекта через конструктор со всеми аргументами - ViewStatsDto dto = new ViewStatsDto("app-name", "/uri", 200L); - - // Проверки - assertThat(dto.getApp()).isEqualTo("app-name"); - assertThat(dto.getUri()).isEqualTo("/uri"); - assertThat(dto.getHits()).isEqualTo(200L); - } - - @Test - @DisplayName("Конструктор без аргументов") - void testNoArgsConstructor() { - // Создание объекта через конструктор без аргументов - ViewStatsDto dto = new ViewStatsDto(); - - // Проверки - assertThat(dto.getApp()).isNull(); - assertThat(dto.getUri()).isNull(); - assertThat(dto.getHits()).isNull(); - } - - @Test - @DisplayName("Сеттеры") - void testSetters() { - // Создание объекта через конструктор без аргументов - ViewStatsDto dto = new ViewStatsDto(); - - // Установка значений через сеттеры - dto.setApp("app-from-setter"); - dto.setUri("/uri-from-setter"); - dto.setHits(300L); - - // Проверки - assertThat(dto.getApp()).isEqualTo("app-from-setter"); - assertThat(dto.getUri()).isEqualTo("/uri-from-setter"); - assertThat(dto.getHits()).isEqualTo(300L); - } - - @Test - @DisplayName("Equals и HashCode") - void testEqualsAndHashCode() { - // Создание двух одинаковых объектов - ViewStatsDto dto1 = new ViewStatsDto("same-app", "/same-uri", 100L); - ViewStatsDto dto2 = new ViewStatsDto("same-app", "/same-uri", 100L); - - // Проверка equals - assertThat(dto1) - .as("Объекты с одинаковыми полями должны быть равны") - .isEqualTo(dto2); - - // Проверка hashCode - assertThat(dto1.hashCode()) - .as("Хеш-коды объектов с одинаковыми полями должны совпадать") - .isEqualTo(dto2.hashCode()); - - // Изменяем один из объектов - dto2.setHits(200L); - - // Проверка, что equals и hashCode различаются - assertThat(dto1) - .as("Объекты с разными полями не должны быть равны") - .isNotEqualTo(dto2); - - assertThat(dto1.hashCode()) - .as("Хеш-коды объектов с разными полями не должны совпадать") - .isNotEqualTo(dto2.hashCode()); - } - } -} \ No newline at end of file diff --git a/core/stats-service/stats-server/Dockerfile b/core/stats-service/stats-server/Dockerfile deleted file mode 100644 index 0ff1817..0000000 --- a/core/stats-service/stats-server/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -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/core/stats-service/stats-server/pom.xml b/core/stats-service/stats-server/pom.xml deleted file mode 100644 index dee9f36..0000000 --- a/core/stats-service/stats-server/pom.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - 4.0.0 - - ru.practicum - stats-service - 0.0.1-SNAPSHOT - ../pom.xml - - - stats-server - jar - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.cloud - spring-cloud-starter-netflix-eureka-client - - - org.springframework.cloud - spring-cloud-starter-config - - - org.springframework.boot - spring-boot-starter-data-jpa - - - org.springframework.boot - spring-boot-starter-actuator - - - org.springframework.boot - spring-boot-starter-test - - - org.springframework.boot - spring-boot-starter-validation - - - org.postgresql - postgresql - - - org.projectlombok - lombok - provided - - - ru.practicum - stats-dto - ${project.version} - - - org.testcontainers - postgresql - test - - - org.testcontainers - junit-jupiter - - - ru.practicum - interaction-api - ${project.version} - - - org.mockito - mockito-inline - - - ru.practicum - stats-client - ${project.version} - compile - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - - - org.projectlombok - lombok - ${lombok.version} - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - \ No newline at end of file diff --git a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/StatsServerApplication.java b/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/StatsServerApplication.java deleted file mode 100644 index 328ea08..0000000 --- a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/StatsServerApplication.java +++ /dev/null @@ -1,15 +0,0 @@ -package ru.practicum.explorewithme.stats.server; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; - -@SpringBootApplication -@EnableDiscoveryClient -public class StatsServerApplication { - - public static void main(String[] args) { - SpringApplication.run(StatsServerApplication.class, args); - } - -} diff --git a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/controller/StatsController.java b/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/controller/StatsController.java deleted file mode 100644 index 1551865..0000000 --- a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/controller/StatsController.java +++ /dev/null @@ -1,75 +0,0 @@ -package ru.practicum.explorewithme.stats.server.controller; - -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; - -import jakarta.validation.Valid; -import java.time.LocalDateTime; -import java.util.List; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.stats.client.StatsClient; -import ru.practicum.explorewithme.stats.dto.EndpointHitDto; -import ru.practicum.explorewithme.stats.dto.ViewStatsDto; -import ru.practicum.explorewithme.stats.server.service.StatsService; - -@RestController -@RequestMapping -@RequiredArgsConstructor -@Slf4j -@SuppressWarnings("unused") -public class StatsController implements StatsClient { - - private final StatsService statsService; - - /** - * Сохранение информации о том, что к эндпоинту был запрос - * - * @param endpointHitDto данные запроса - */ - @PostMapping("/hit") - @ResponseStatus(HttpStatus.CREATED) - public void saveHit(@Valid @RequestBody EndpointHitDto endpointHitDto) { - log.info("Controller: request to save new hit received."); - log.debug("Saving new hit: {}", endpointHitDto); - statsService.saveHit(endpointHitDto); - } - - /** - * Получение статистики по посещениям. - * - * @param start Дата и время начала диапазона (в формате "yyyy-MM-dd HH:mm:ss") - * @param end Дата и время конца диапазона (в формате "yyyy-MM-dd HH:mm:ss") - * @param uris Список uri для которых нужно выгрузить статистику (опционально) - * @param unique Нужно ли учитывать только уникальные посещения (опционально, default: false) - * @return Список ViewStatsDto со статистикой - */ - @GetMapping("/stats") - @ResponseStatus(HttpStatus.OK) - public List getStats( - @RequestParam(name = "start") - @DateTimeFormat(pattern = DATE_TIME_FORMAT_PATTERN) - LocalDateTime start, - - @RequestParam(name = "end") - @DateTimeFormat(pattern = DATE_TIME_FORMAT_PATTERN) - LocalDateTime end, - - @RequestParam(name = "uris", required = false) List uris, - @RequestParam(name = "unique", defaultValue = "false") Boolean unique) { - - log.info("Controller: request to retrieve stats received."); - log.debug("Request params: start={}, end={}, uris={}, unique={}", - start, end, uris, unique); - - return statsService.getStats(start, end, uris, unique); - } -} \ No newline at end of file diff --git a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/error/GlobalExceptionHandler.java b/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/error/GlobalExceptionHandler.java deleted file mode 100644 index 9a215a1..0000000 --- a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/error/GlobalExceptionHandler.java +++ /dev/null @@ -1,75 +0,0 @@ -package ru.practicum.explorewithme.stats.server.error; - -import java.time.LocalDateTime; -import java.util.List; -import java.util.stream.Collectors; -import lombok.extern.slf4j.Slf4j; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.MethodArgumentNotValidException; -import org.springframework.web.bind.MissingServletRequestParameterException; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.bind.annotation.RestControllerAdvice; -import ru.practicum.explorewithme.api.error.ApiError; - -@RestControllerAdvice -@Slf4j -@SuppressWarnings("unused") -public class GlobalExceptionHandler { - - @ExceptionHandler(MethodArgumentNotValidException.class) - @ResponseStatus(HttpStatus.BAD_REQUEST) - public ApiError handleMethodArgumentNotValidException(final MethodArgumentNotValidException e) { - List errors = e.getBindingResult() - .getFieldErrors() - .stream() - .map(error -> error.getField() + ": " + error.getDefaultMessage()) - .collect(Collectors.toList()); - String errorMessage = "Validation error(s): " + String.join("; ", errors); - log.warn(errorMessage, e); - return ApiError.builder() - .errors(errors) - .status(HttpStatus.BAD_REQUEST) - .reason("Incorrectly made request due to validation errors.") - .message(errorMessage) - .timestamp(LocalDateTime.now()) - .build(); - } - - @ExceptionHandler(MissingServletRequestParameterException.class) - @ResponseStatus(HttpStatus.BAD_REQUEST) - public ApiError handleMissingServletRequestParameter(final MissingServletRequestParameterException e) { - String errorMessage = "Required request parameter is not present: " + e.getParameterName(); - log.warn(errorMessage, e); - return ApiError.builder() - .status(HttpStatus.BAD_REQUEST) - .reason("Incorrectly made request.") - .message(errorMessage) - .timestamp(LocalDateTime.now()) - .build(); - } - - @ExceptionHandler(IllegalArgumentException.class) - @ResponseStatus(HttpStatus.BAD_REQUEST) - public ApiError handleIllegalArgumentException(final IllegalArgumentException e) { - log.warn("Illegal argument: {}", e.getMessage(), e); - return ApiError.builder() - .status(HttpStatus.BAD_REQUEST) - .reason("Incorrectly made request due to an invalid argument.") - .message(e.getMessage()) - .timestamp(LocalDateTime.now()) - .build(); - } - - @ExceptionHandler(Throwable.class) - @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) - public ApiError handleThrowable(final Throwable e) { - log.error("An unexpected error occurred: {}", e.getMessage(), e); - return ApiError.builder() - .status(HttpStatus.INTERNAL_SERVER_ERROR) - .reason("An unexpected error occurred on the server.") - .message("An internal server error has occurred: " + e.getMessage()) - .timestamp(LocalDateTime.now()) - .build(); - } -} diff --git a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/mapper/EndpointHitMapper.java b/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/mapper/EndpointHitMapper.java deleted file mode 100644 index 5e0b19f..0000000 --- a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/mapper/EndpointHitMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package ru.practicum.explorewithme.stats.server.mapper; - -import ru.practicum.explorewithme.stats.dto.EndpointHitDto; -import ru.practicum.explorewithme.stats.server.model.EndpointHit; - -public interface EndpointHitMapper { - - /** - * Преобразует EndpointHitDto в сущность EndpointHit. - * - * @param dto объект EndpointHitDto для преобразования. - * @return сущность EndpointHit, или null если dto равен null. - */ - EndpointHit toEndpointHit(EndpointHitDto dto); - - /** - * Преобразует сущность EndpointHit в EndpointHitDto. - * - * @param entity сущность EndpointHit для преобразования. - * @return объект EndpointHitDto, или null если entity равен null. - */ - EndpointHitDto toEndpointHitDto(EndpointHit entity); - -} \ No newline at end of file diff --git a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/mapper/EndpointHitMapperImpl.java b/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/mapper/EndpointHitMapperImpl.java deleted file mode 100644 index 1bee762..0000000 --- a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/mapper/EndpointHitMapperImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -package ru.practicum.explorewithme.stats.server.mapper; - - -import org.springframework.stereotype.Component; -import ru.practicum.explorewithme.stats.dto.EndpointHitDto; -import ru.practicum.explorewithme.stats.server.model.EndpointHit; - -@Component -public class EndpointHitMapperImpl implements EndpointHitMapper { - - @Override - public EndpointHit toEndpointHit(EndpointHitDto dto) { - if (dto == null) { - return null; - } - - return EndpointHit.builder().app(dto.getApp()).uri(dto.getUri()).ip(dto.getIp()) - .timestamp(dto.getTimestamp()).build(); - } - - @Override - public EndpointHitDto toEndpointHitDto(EndpointHit entity) { - if (entity == null) { - return null; - } - - return EndpointHitDto.builder().app(entity.getApp()).uri(entity.getUri()).ip(entity.getIp()) - .timestamp(entity.getTimestamp()).build(); - - } -} \ No newline at end of file diff --git a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/model/EndpointHit.java b/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/model/EndpointHit.java deleted file mode 100644 index a12fa79..0000000 --- a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/model/EndpointHit.java +++ /dev/null @@ -1,59 +0,0 @@ -package ru.practicum.explorewithme.stats.server.model; - -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import java.time.LocalDateTime; -import java.util.Objects; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import lombok.ToString; - -@Entity -@Table(name = "endpoint_hits") -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@ToString -@Builder -public class EndpointHit { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @Column(name = "app", nullable = false, length = 32) - private String app; - - @Column(name = "uri", nullable = false, length = 128) - private String uri; - - @Column(name = "ip", nullable = false, length = 16) - private String ip; - - @Column(name = "timestamp", nullable = false) - private LocalDateTime timestamp; - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - return id != null && id.equals(((EndpointHit) o).getId()); - } - - @Override - public int hashCode() { - return id != null ? Objects.hash(id) : getClass().hashCode(); - } -} \ No newline at end of file diff --git a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/repository/StatsRepository.java b/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/repository/StatsRepository.java deleted file mode 100644 index eece591..0000000 --- a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/repository/StatsRepository.java +++ /dev/null @@ -1,39 +0,0 @@ -package ru.practicum.explorewithme.stats.server.repository; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; -import ru.practicum.explorewithme.stats.dto.ViewStatsDto; -import ru.practicum.explorewithme.stats.server.model.EndpointHit; - -import java.time.LocalDateTime; -import java.util.Collection; -import java.util.List; - -@Repository -public interface StatsRepository extends JpaRepository { - - @Query("SELECT new ru.practicum.explorewithme.stats.dto.ViewStatsDto(eh.app, eh.uri, COUNT(eh.ip)) " + - "FROM EndpointHit eh " + - "WHERE eh.timestamp BETWEEN :start AND :end " + - "AND (:uris IS NULL OR eh.uri IN :uris) " + - "GROUP BY eh.app, eh.uri " + - "ORDER BY COUNT(eh.ip) DESC") - List findStats( - @Param("start") LocalDateTime start, - @Param("end") LocalDateTime end, - @Param("uris") Collection uris); - - @Query("SELECT new ru.practicum.explorewithme.stats.dto.ViewStatsDto(eh.app, eh.uri, COUNT(DISTINCT eh.ip)) " + - "FROM EndpointHit eh " + - "WHERE eh.timestamp BETWEEN :start AND :end " + - "AND (:uris IS NULL OR eh.uri IN :uris) " + - "GROUP BY eh.app, eh.uri " + - "ORDER BY COUNT(DISTINCT eh.ip) DESC") - List findUniqueStats( - @Param("start") LocalDateTime start, - @Param("end") LocalDateTime end, - @Param("uris") Collection uris); - -} \ No newline at end of file diff --git a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/service/StatsService.java b/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/service/StatsService.java deleted file mode 100644 index 5aa78a1..0000000 --- a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/service/StatsService.java +++ /dev/null @@ -1,29 +0,0 @@ -package ru.practicum.explorewithme.stats.server.service; - -import ru.practicum.explorewithme.stats.dto.EndpointHitDto; -import ru.practicum.explorewithme.stats.dto.ViewStatsDto; - -import java.time.LocalDateTime; -import java.util.List; - -public interface StatsService { - - /** - * Сохраняет информацию о запросе к эндпоинту. - * - * @param endpointHitDto DTO с информацией о запросе. - */ - void saveHit(EndpointHitDto endpointHitDto); - - /** - * Возвращает статистику по посещениям за указанный период. - * - * @param start дата и время начала диапазона для статистики. - * @param end дата и время конца диапазона для статистики. - * @param uris список URI, для которых нужна статистика (может быть null или пустым для всех URI). - * @param unique true, если нужны только уникальные по IP посещения, false иначе. - * @return список DTO {@link ViewStatsDto} со статистикой. - */ - List getStats(LocalDateTime start, LocalDateTime end, List uris, boolean unique); - -} \ No newline at end of file diff --git a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/service/StatsServiceImpl.java b/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/service/StatsServiceImpl.java deleted file mode 100644 index 87693ad..0000000 --- a/core/stats-service/stats-server/src/main/java/ru/practicum/explorewithme/stats/server/service/StatsServiceImpl.java +++ /dev/null @@ -1,61 +0,0 @@ -package ru.practicum.explorewithme.stats.server.service; - -import java.time.LocalDateTime; -import java.util.Collection; -import java.util.List; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import ru.practicum.explorewithme.stats.dto.EndpointHitDto; -import ru.practicum.explorewithme.stats.dto.ViewStatsDto; -import ru.practicum.explorewithme.stats.server.mapper.EndpointHitMapper; -import ru.practicum.explorewithme.stats.server.model.EndpointHit; -import ru.practicum.explorewithme.stats.server.repository.StatsRepository; - -@Service -@RequiredArgsConstructor -@Slf4j -@SuppressWarnings("unused") -public class StatsServiceImpl implements StatsService { - - private final EndpointHitMapper endpointHitMapper; - private final StatsRepository statsRepository; - - @Override - @Transactional - public void saveHit(EndpointHitDto endpointHitDto) { - log.debug("Service: Attempting to save hit: {}", endpointHitDto); - if (endpointHitDto == null) { - log.warn("Service: Cannot save hit, input EndpointHitDto was null."); - throw new IllegalArgumentException("Input EndpointHitDto cannot be null."); - } - EndpointHit endpointHit = endpointHitMapper.toEndpointHit(endpointHitDto); - statsRepository.save(endpointHit); - log.info("Service: Hit saved successfully for app: {}, uri: {}", endpointHit.getApp(), endpointHit.getUri()); - } - - @Override - @Transactional(readOnly = true) - public List getStats(LocalDateTime start, LocalDateTime end, List urisFromController, boolean unique) { - log.debug("Service: Requesting stats with params: start={}, end={}, uris={}, unique={}", - start, end, urisFromController, unique); - - if (start != null && end != null && start.isAfter(end)) { - log.warn("Validation error in getStats: Start date {} is after end date {}", start, end); - throw new IllegalArgumentException("Error: Start date cannot be after end date."); - } - - // Пустой список URI явно конвертируется в null для обработки репозиторием - Collection urisForRepo = (urisFromController == null || urisFromController.isEmpty()) ? null : urisFromController; - - List stats; - if (unique) { - stats = statsRepository.findUniqueStats(start, end, urisForRepo); - } else { - stats = statsRepository.findStats(start, end, urisForRepo); - } - log.info("Service: Found {} stats entries.", stats.size()); - return stats; - } -} \ No newline at end of file diff --git a/core/stats-service/stats-server/src/main/resources/application.yaml b/core/stats-service/stats-server/src/main/resources/application.yaml deleted file mode 100644 index cf15002..0000000 --- a/core/stats-service/stats-server/src/main/resources/application.yaml +++ /dev/null @@ -1,25 +0,0 @@ -spring: - application: - name: stats-server - profiles: - active: postgres - config: - import: "configserver:" - cloud: - config: - discovery: - enabled: true - serviceId: config-server - fail-fast: true - retry: - max-attempts: 10 - initial-interval: 1000 - useRandomPolicy: true - -eureka: - client: - serviceUrl: - defaultZone: ${EUREKA_URI:http://localhost:8761/eureka/} - instance: - instance-id: "${spring.application.name}:${random.value}" - leaseRenewalIntervalInSeconds: 10 diff --git a/core/stats-service/stats-server/src/main/resources/schema.sql b/core/stats-service/stats-server/src/main/resources/schema.sql deleted file mode 100644 index ead75e2..0000000 --- a/core/stats-service/stats-server/src/main/resources/schema.sql +++ /dev/null @@ -1,8 +0,0 @@ -CREATE TABLE IF NOT EXISTS endpoint_hits ( - id BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL, - app VARCHAR(32) NOT NULL, - uri VARCHAR(128) NOT NULL, - ip VARCHAR(16) NOT NULL, - "timestamp" TIMESTAMP WITHOUT TIME ZONE NOT NULL, - CONSTRAINT pk_endpoint_hits PRIMARY KEY (id) -); \ No newline at end of file diff --git a/core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/controller/StatsControllerTest.java b/core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/controller/StatsControllerTest.java deleted file mode 100644 index 116bae5..0000000 --- a/core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/controller/StatsControllerTest.java +++ /dev/null @@ -1,167 +0,0 @@ -package ru.practicum.explorewithme.stats.server.controller; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import static org.mockito.Mockito.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import ru.practicum.explorewithme.stats.dto.EndpointHitDto; -import ru.practicum.explorewithme.stats.dto.ViewStatsDto; -import ru.practicum.explorewithme.stats.server.service.StatsService; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoUnit; -import java.util.List; - -@ExtendWith(MockitoExtension.class) -class StatsControllerTest { - - @InjectMocks - private StatsController statsController; - - @Mock - private StatsService statsService; - - private MockMvc mvc; - - private EndpointHitDto validHitDto; - private LocalDateTime now; - private ObjectMapper objectMapper; - private DateTimeFormatter dateTimeFormatter; - - @BeforeEach - void setUp() { - objectMapper = new ObjectMapper(); - objectMapper.registerModule(new JavaTimeModule()); - objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); - mvc = MockMvcBuilders - .standaloneSetup(statsController) - .build(); - now = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS); - validHitDto = EndpointHitDto.builder() - .app("test-app") - .uri("/test-uri") - .ip("127.0.0.1") - .timestamp(now.minusHours(1)) - .build(); - dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - } - - @Test - void saveHit_whenDtoIsValid_shouldReturnCreated() throws Exception { - doNothing().when(statsService).saveHit(any(EndpointHitDto.class)); - - mvc.perform(post("/hit") - .contentType(MediaType.APPLICATION_JSON) - .content(objectMapper.writeValueAsString(validHitDto))) - .andExpect(status().isCreated()); - - verify(statsService, times(1)).saveHit(any(EndpointHitDto.class)); - - } - - @Test - void saveHitShouldReturn400WhenAppIsBlank() throws Exception { - validHitDto.setApp(""); - - mvc.perform(post("/hit") - .contentType(MediaType.APPLICATION_JSON) - .content(objectMapper.writeValueAsString(validHitDto))) - .andExpect(status().isBadRequest()); - - verify(statsService, never()).saveHit(any()); - } - - @Test - void saveHitShouldReturn400WhenUriIsBlank() throws Exception { - validHitDto.setUri(""); - - mvc.perform(post("/hit") - .contentType(MediaType.APPLICATION_JSON) - .content(objectMapper.writeValueAsString(validHitDto))) - .andExpect(status().isBadRequest()); - - verify(statsService, never()).saveHit(any()); - } - - @Test - void saveHitShouldReturn400WhenIpIsBlank() throws Exception { - validHitDto.setIp(""); - - mvc.perform(post("/hit") - .contentType(MediaType.APPLICATION_JSON) - .content(objectMapper.writeValueAsString(validHitDto))) - .andExpect(status().isBadRequest()); - - verify(statsService, never()).saveHit(any()); - } - - @Test - void saveHitShouldReturn400WhenTimestampIsNull() throws Exception { - validHitDto.setTimestamp(null); - - mvc.perform(post("/hit") - .contentType(MediaType.APPLICATION_JSON) - .content(objectMapper.writeValueAsString(validHitDto))) - .andExpect(status().isBadRequest()); - - verify(statsService, never()).saveHit(any()); - } - - @Test - void getStats_whenParamsAreValid_shouldReturn200Ok() throws Exception { - LocalDateTime start = now.minusDays(1); - LocalDateTime end = now; - List uris = List.of("/test-uri"); - Boolean unique = false; - - when(statsService.getStats(eq(start), eq(end), eq(uris), eq(unique))) - .thenReturn(List.of(new ViewStatsDto("test-app", "/test-uri", 10L))); - - mvc.perform(get("/stats") - .param("start", start.format(dateTimeFormatter)) - .param("end", end.format(dateTimeFormatter)) - .param("uris", "/test-uri") - .param("unique", String.valueOf(unique))) - .andExpect(status().isOk()) - .andExpect(content().json(objectMapper.writeValueAsString( - List.of(new ViewStatsDto("test-app", "/test-uri", 10L))) - )); - - verify(statsService, times(1)).getStats(eq(start), eq(end), eq(uris), eq(unique)); - } - - @Test - void getStats_whenNoUris_shouldReturn200Ok() throws Exception { - LocalDateTime start = now.minusDays(1); - LocalDateTime end = now; - Boolean unique = false; - - List statsList = List.of(new ViewStatsDto("test-app", "/", 5L)); - when(statsService.getStats(eq(start), eq(end), isNull(), eq(unique))).thenReturn(statsList); - - mvc.perform(get("/stats") - .param("start", start.format(dateTimeFormatter)) - .param("end", end.format(dateTimeFormatter)) - .param("unique", String.valueOf(unique))) - .andExpect(status().isOk()) - .andExpect(content().json(objectMapper.writeValueAsString(statsList))); - - verify(statsService, times(1)).getStats(eq(start), eq(end), isNull(), eq(unique)); - } -} \ No newline at end of file diff --git a/core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/controller/StatsServerIntegrationTest.java b/core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/controller/StatsServerIntegrationTest.java deleted file mode 100644 index 2edcb04..0000000 --- a/core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/controller/StatsServerIntegrationTest.java +++ /dev/null @@ -1,158 +0,0 @@ -package ru.practicum.explorewithme.stats.server.controller; - -import static org.assertj.core.api.Assertions.assertThat; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMATTER; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.web.client.TestRestTemplate; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; -import org.testcontainers.containers.PostgreSQLContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import ru.practicum.explorewithme.stats.dto.EndpointHitDto; -import ru.practicum.explorewithme.stats.dto.ViewStatsDto; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@Testcontainers -public class StatsServerIntegrationTest { - - @Container - private static final PostgreSQLContainer postgresqlContainer = new PostgreSQLContainer<>("postgres:16.1") - .withDatabaseName("testdb") - .withUsername("testuser") - .withPassword("testpass"); - - @DynamicPropertySource - static void postgresqlProperties(DynamicPropertyRegistry registry) { - registry.add("spring.datasource.url", postgresqlContainer::getJdbcUrl); - registry.add("spring.datasource.username", postgresqlContainer::getUsername); - registry.add("spring.datasource.password", postgresqlContainer::getPassword); - registry.add("spring.jpa.hibernate.ddl-auto", () -> "create"); - } - - @Autowired - private TestRestTemplate restTemplate; - - private static final DateTimeFormatter FORMATTER = DATE_TIME_FORMATTER; - private final LocalDateTime now = LocalDateTime.now(); - - @Test - void shouldRetrieveUniqueStats_whenUniqueFlagIsTrue() { - EndpointHitDto hit1 = EndpointHitDto.builder() - .app("app1") - .uri("/event/1") - .ip("192.168.0.1") - .timestamp(now.minusHours(1)) - .build(); - - EndpointHitDto hit2 = EndpointHitDto.builder() - .app("app1") - .uri("/event/1") - .ip("192.168.0.1") // Повторный IP - .timestamp(now.minusMinutes(30)) - .build(); - - ResponseEntity response1 = restTemplate.postForEntity("/hit", hit1, Void.class); - ResponseEntity response2 = restTemplate.postForEntity("/hit", hit2, Void.class); - - assertThat(response1.getStatusCode()).isEqualTo(HttpStatus.CREATED); - assertThat(response2.getStatusCode()).isEqualTo(HttpStatus.CREATED); - - String start = now.minusHours(2).format(FORMATTER); - String end = now.plusHours(1).format(FORMATTER); - String uris = "/event/1"; - String url = "/stats?start={start}&end={end}&uris={uris}&unique=true"; - - ResponseEntity statsResponse = restTemplate.getForEntity(url, ViewStatsDto[].class, start, end, uris); - - assertThat(statsResponse.getStatusCode()).isEqualTo(HttpStatus.OK); - ViewStatsDto[] stats = statsResponse.getBody(); - assertThat(stats).isNotNull(); - assertThat(stats).hasSize(1); - - ViewStatsDto statsEvent1 = stats[0]; - assertThat(statsEvent1.getApp()).isEqualTo("app1"); - assertThat(statsEvent1.getUri()).isEqualTo("/event/1"); - assertThat(statsEvent1.getHits()).isEqualTo(1L); - } - - @Test - void shouldReturnEmptyStats_whenTimeRangeHasNoHits() { - String start = now.minusHours(10).format(FORMATTER); - String end = now.minusHours(8).format(FORMATTER); - String url = "/stats?start={start}&end={end}"; - - ResponseEntity statsResponse = restTemplate.getForEntity( - url, ViewStatsDto[].class, start, end); - - assertThat(statsResponse.getStatusCode()).isEqualTo(HttpStatus.OK); - ViewStatsDto[] stats = statsResponse.getBody(); - assertThat(stats).isNotNull(); - assertThat(stats).isEmpty(); - } - - @Test - void shouldReturnStatsForAllUris_whenUrisParameterIsNotProvided() { - EndpointHitDto hit1 = EndpointHitDto.builder() - .app("app1") - .uri("/event/1") - .ip("192.168.0.1") - .timestamp(now.minusHours(1)) - .build(); - - EndpointHitDto hit2 = EndpointHitDto.builder() - .app("app2") - .uri("/event/2") - .ip("192.168.0.2") - .timestamp(now.minusMinutes(30)) - .build(); - - restTemplate.postForEntity("/hit", hit1, Void.class); - restTemplate.postForEntity("/hit", hit2, Void.class); - - String start = now.minusHours(2).format(FORMATTER); - String end = now.plusHours(1).format(FORMATTER); - String url = "/stats?start={start}&end={end}&unique=false"; - - ResponseEntity statsResponse = restTemplate.getForEntity( - url, ViewStatsDto[].class, start, end); - - assertThat(statsResponse.getStatusCode()).isEqualTo(HttpStatus.OK); - ViewStatsDto[] stats = statsResponse.getBody(); - assertThat(stats).isNotNull(); - assertThat(stats).hasSize(2); - } - - @Test - void shouldReturnBadRequest_whenStartIsAfterEnd() { - String start = now.plusHours(1).format(FORMATTER); - String end = now.minusHours(1).format(FORMATTER); - String url = "/stats?start={start}&end={end}"; - - ResponseEntity response = restTemplate.getForEntity(url, String.class, start, end); - - assertThat(response.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); - assertThat(response.getBody()).contains("Start date cannot be after end date"); - } - - @Test - void shouldReturnBadRequest_whenHitDtoIsInvalid() { - EndpointHitDto invalidHit = EndpointHitDto.builder() - .uri("/event/1") - .ip("192.168.0.1") - .timestamp(now.minusHours(1)) - .build(); - - ResponseEntity response = restTemplate.postForEntity("/hit", invalidHit, String.class); - - assertThat(response.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); - assertThat(response.getBody()).contains("Validation error"); - } -} \ No newline at end of file diff --git a/core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/repository/StatsRepositoryTest.java b/core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/repository/StatsRepositoryTest.java deleted file mode 100644 index 43266ed..0000000 --- a/core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/repository/StatsRepositoryTest.java +++ /dev/null @@ -1,180 +0,0 @@ -package ru.practicum.explorewithme.stats.server.repository; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.time.LocalDateTime; -import java.util.List; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; -import org.testcontainers.containers.PostgreSQLContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.utility.DockerImageName; -import ru.practicum.explorewithme.stats.dto.ViewStatsDto; -import ru.practicum.explorewithme.stats.server.model.EndpointHit; - -@DataJpaTest -@Testcontainers -@DisplayName("Stats Repository DataJpa Tests") -public class StatsRepositoryTest { - - // Настройка контейнера с тестовой БД - @Container - private static final PostgreSQLContainer postgresqlContainer = new PostgreSQLContainer<>( - DockerImageName.parse("postgres:16.1")); - - @DynamicPropertySource - static void postgresqlProperties(DynamicPropertyRegistry registry) { - registry.add("spring.datasource.url", postgresqlContainer::getJdbcUrl); - registry.add("spring.datasource.username", postgresqlContainer::getUsername); - registry.add("spring.datasource.password", postgresqlContainer::getPassword); - registry.add("spring.jpa.hibernate.ddl-auto", () -> "create"); - } - - @Autowired - private StatsRepository statsRepository; // Тестируемый репозиторий - - @Autowired - private TestEntityManager entityManager; - - // Тестовые данные для EndpointHit - private EndpointHit hit1, hit2, hit3, hit4, hit5; - private final LocalDateTime now = LocalDateTime.now(); - - @BeforeEach - void setUp() { - hit1 = new EndpointHit(null, "app1", "/uri1", "192.168.0.1", now.minusHours(1)); - hit2 = new EndpointHit(null, "app1", "/uri1", "192.168.0.2", now.minusMinutes(30)); - hit3 = new EndpointHit(null, "app1", "/uri1", "192.168.0.1", now.minusMinutes(10)); // Повторный IP для /uri1 - hit4 = new EndpointHit(null, "app2", "/uri2", "192.168.0.3", now.minusHours(2)); - hit5 = new EndpointHit(null, "app1", "/uri3", "192.168.0.1", now.minusMinutes(5)); // Другой URI, но IP как у hit1 - - statsRepository.saveAll(List.of(hit1, hit2, hit3, hit4, hit5)); - } - - @AfterEach - void tearDown() { - statsRepository.deleteAll(); - } - - @Nested - @DisplayName("findStats (статистика по общему количеству хитов)") - class FindStatsTest { - - @Test - @DisplayName("Должен вернуть корректное общее количество хитов для указанных URI в заданном временном диапазоне") - void findStats_whenUrisProvided_shouldReturnCorrectStats() { - LocalDateTime start = now.minusHours(3); - LocalDateTime end = now.plusHours(1); - List uris = List.of("/uri1", "/uri3"); - - List result = statsRepository.findStats(start, end, uris); - - assertThat(result).hasSize(2); // Ожидаем статистику для двух URI: /uri1 и /uri3 - - // Проверка статистики для /uri1 - ViewStatsDto statsUri1 = result.stream().filter(s -> s.getUri().equals("/uri1")).findFirst().orElse(null); - assertThat(statsUri1).isNotNull(); - assertThat(statsUri1.getApp()).isEqualTo("app1"); - assertThat(statsUri1.getHits()).isEqualTo(3L); // hit1, hit2, hit3 для /uri1 - - // Проверка статистики для /uri3 - ViewStatsDto statsUri3 = result.stream().filter(s -> s.getUri().equals("/uri3")).findFirst().orElse(null); - assertThat(statsUri3).isNotNull(); - assertThat(statsUri3.getApp()).isEqualTo("app1"); - assertThat(statsUri3.getHits()).isEqualTo(1L); // hit5 для /uri3 - } - - @Test - @DisplayName("Должен вернуть корректное общее количество хитов для всех URI в заданном временном диапазоне, если URI не указаны") - void findStats_whenUrisNotProvided_shouldReturnStatsForAllUris() { - LocalDateTime start = now.minusHours(3); - LocalDateTime end = now.plusHours(1); - - // На уровне сервиса пустой список URI должен быть явно преобразован в null - List result = statsRepository.findStats(start, end, null); // URI не указаны - - assertThat(result).hasSize(3); // Ожидаем статистику для трех уникальных URI: /uri1, /uri2, /uri3 - - // Результат отсортирован по app, затем по URI, затем по количеству хитов (здесь /uri1 первый) - assertThat(result.getFirst().getUri()).isEqualTo("/uri1"); // /uri1 имеет 3 хита - assertThat(result.getFirst().getHits()).isEqualTo(3L); - - // Проверка наличия и корректности данных для /uri2 и /uri3 - boolean foundUri2 = result.stream().anyMatch(s -> s.getUri().equals("/uri2") && s.getHits() == 1L); // hit4 для /uri2 - boolean foundUri3 = result.stream().anyMatch(s -> s.getUri().equals("/uri3") && s.getHits() == 1L); // hit5 для /uri3 - assertThat(foundUri2).isTrue(); - assertThat(foundUri3).isTrue(); - } - - @Test - @DisplayName("Должен вернуть пустой список, если временной диапазон не содержит хитов") - void findStats_whenTimeRangeExcludesData_shouldReturnEmptyList() { - // Задаем временной диапазон, который гарантированно не содержит тестовых данных - LocalDateTime start = now.plusHours(1); - LocalDateTime end = now.plusHours(2); - - List result = statsRepository.findStats(start, end, null); - assertThat(result).isEmpty(); - } - } - - @Nested - @DisplayName("findUniqueStats (статистика по уникальным IP)") - class FindUniqueStatsTest { - - @Test - @DisplayName("Должен вернуть корректное количество уникальных хитов (по IP) для указанных URI в заданном временном диапазоне") - void findUniqueStats_whenUrisProvided_shouldReturnCorrectUniqueStats() { - LocalDateTime start = now.minusHours(3); - LocalDateTime end = now.plusHours(1); - List uris = List.of("/uri1"); // Только для /uri1 - - List result = statsRepository.findUniqueStats(start, end, uris); - - assertThat(result).hasSize(1); // Ожидаем статистику только для /uri1 - ViewStatsDto statsUri1 = result.getFirst(); - assertThat(statsUri1.getApp()).isEqualTo("app1"); - assertThat(statsUri1.getUri()).isEqualTo("/uri1"); - assertThat(statsUri1.getHits()).isEqualTo(2L); // Уникальные IP для /uri1: 192.168.0.1, 192.168.0.2 - } - - @Test - @DisplayName("Должен вернуть корректное количество уникальных хитов (по IP) для всех URI в заданном временном диапазоне, если URI не указаны") - void findUniqueStats_whenUrisNotProvided_shouldReturnUniqueStatsForAllUris() { - LocalDateTime start = now.minusHours(3); - LocalDateTime end = now.plusHours(1); - - // На уровне сервиса пустой список URI должен быть явно преобразован в null - List result = statsRepository.findUniqueStats(start, end, null); // URI не указаны - - assertThat(result).hasSize(3); // Ожидаем статистику для трех уникальных URI - - // Проверка статистики для /uri1 - ViewStatsDto statsUri1 = result.stream().filter(s -> s.getUri().equals("/uri1")).findFirst().orElse(null); - assertThat(statsUri1).isNotNull(); - assertThat(statsUri1.getApp()).isEqualTo("app1"); - assertThat(statsUri1.getHits()).isEqualTo(2L); // Уникальные IP для /uri1: 192.168.0.1, 192.168.0.2 - - // Проверка статистики для /uri2 - ViewStatsDto statsUri2 = result.stream().filter(s -> s.getUri().equals("/uri2")).findFirst().orElse(null); - assertThat(statsUri2).isNotNull(); - assertThat(statsUri2.getApp()).isEqualTo("app2"); - assertThat(statsUri2.getHits()).isEqualTo(1L); // Уникальный IP для /uri2: 192.168.0.3 - - // Проверка статистики для /uri3 - ViewStatsDto statsUri3 = result.stream().filter(s -> s.getUri().equals("/uri3")).findFirst().orElse(null); - assertThat(statsUri3).isNotNull(); - assertThat(statsUri3.getApp()).isEqualTo("app1"); - assertThat(statsUri3.getHits()).isEqualTo(1L); // Уникальный IP для /uri3: 192.168.0.1 - } - } -} \ No newline at end of file diff --git a/core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/service/StatsServiceImplTest.java b/core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/service/StatsServiceImplTest.java deleted file mode 100644 index 909905a..0000000 --- a/core/stats-service/stats-server/src/test/java/ru/practicum/explorewithme/stats/server/service/StatsServiceImplTest.java +++ /dev/null @@ -1,224 +0,0 @@ -package ru.practicum.explorewithme.stats.server.service; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.time.LocalDateTime; -import java.util.Collections; -import java.util.List; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; -import ru.practicum.explorewithme.stats.dto.EndpointHitDto; -import ru.practicum.explorewithme.stats.dto.ViewStatsDto; -import ru.practicum.explorewithme.stats.server.mapper.EndpointHitMapper; -import ru.practicum.explorewithme.stats.server.model.EndpointHit; -import ru.practicum.explorewithme.stats.server.repository.StatsRepository; - -@ExtendWith(MockitoExtension.class) -@DisplayName("Тесты реализации сервиса статистики") -class StatsServiceImplTest { - - @Mock // Мок репозитория статистики - private StatsRepository statsRepository; - - @Mock // Мок маппера EndpointHit - private EndpointHitMapper endpointHitMapper; - - @InjectMocks // Тестируемый сервис статистики - private StatsServiceImpl statsService; - - @Captor // Для захвата аргумента при вызове save - private ArgumentCaptor endpointHitArgumentCaptor; - - // Тестовые данные и вспомогательные переменные - private EndpointHitDto validHitDto; - private EndpointHit mappedEndpointHit; - private LocalDateTime now; - - @BeforeEach - void setUp() { - now = LocalDateTime.now(); - validHitDto = EndpointHitDto.builder() - .app("test-app") - .uri("/test-uri") - .ip("127.0.0.1") - .timestamp(now.minusHours(1)) - .build(); - - mappedEndpointHit = EndpointHit.builder() - .app(validHitDto.getApp()) - .uri(validHitDto.getUri()) - .ip(validHitDto.getIp()) - .timestamp(validHitDto.getTimestamp()) - .build(); - } - - @Nested - @DisplayName("Тесты метода saveHit") - class SaveHitTests { - @Test - @DisplayName("Должен успешно сохранить хит при получении валидного DTO") - void saveHit_whenDtoIsValid_shouldMapAndSave() { - when(endpointHitMapper.toEndpointHit(validHitDto)).thenReturn(mappedEndpointHit); - - statsService.saveHit(validHitDto); - - verify(endpointHitMapper, times(1)).toEndpointHit(validHitDto); - verify(statsRepository, times(1)).save(endpointHitArgumentCaptor.capture()); - - EndpointHit capturedHit = endpointHitArgumentCaptor.getValue(); - assertThat(capturedHit.getApp()).isEqualTo(validHitDto.getApp()); - assertThat(capturedHit.getUri()).isEqualTo(validHitDto.getUri()); - assertThat(capturedHit.getIp()).isEqualTo(validHitDto.getIp()); - assertThat(capturedHit.getTimestamp()).isEqualTo(validHitDto.getTimestamp()); - } - - @Test - @DisplayName("Должен выбросить исключение, если DTO равен null") - void saveHit_whenDtoIsNull_shouldThrowIllegalArgumentException() { - assertThatThrownBy(() -> statsService.saveHit(null)) - .isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("Input EndpointHitDto cannot be null"); - - verify(endpointHitMapper, never()).toEndpointHit(any()); - verify(statsRepository, never()).save(any()); - } - - @Test - @DisplayName("Должен выбросить исключение, если маппер вернул null для валидного DTO") - void saveHit_whenMapperReturnsNull_shouldThrowIllegalStateExceptionOrHandle() { - EndpointHitDto nonNullDto = validHitDto; - when(endpointHitMapper.toEndpointHit(nonNullDto)).thenReturn(null); - // Имитируем, что репозиторий выбросит исключение при попытке сохранить null - doThrow(new IllegalArgumentException("Entity must not be null")).when(statsRepository).save(null); - - assertThatThrownBy(() -> statsService.saveHit(nonNullDto)) - .isInstanceOf(IllegalArgumentException.class) // Исключение выброшено репозиторием - .hasMessageContaining("Entity must not be null"); - - verify(endpointHitMapper, times(1)).toEndpointHit(nonNullDto); - verify(statsRepository, times(1)).save(null); // Проверяем, что была попытка сохранить null - } - } - - @Nested - @DisplayName("Тесты метода getStats") - class GetStatsTests { - private LocalDateTime start; - private LocalDateTime end; - private List expectedStatsList; - - // Вспомогательные данные для getStats - @BeforeEach - void getStatsSetup() { - start = now.minusDays(1); - end = now; - expectedStatsList = List.of( - ViewStatsDto.builder().app("app1").uri("/uri1").hits(10L).build(), - ViewStatsDto.builder().app("app2").uri("/uri2").hits(5L).build() - ); - } - - @Test - @DisplayName("Должен вызвать findStats, когда unique=false и uris=null") - void getStats_whenUniqueFalseAndUrisNull_shouldCallFindStats() { - when(statsRepository.findStats(start, end, null)).thenReturn(expectedStatsList); - - List actualStats = statsService.getStats(start, end, null, false); - - assertThat(actualStats).isEqualTo(expectedStatsList); - verify(statsRepository, times(1)).findStats(start, end, null); - verify(statsRepository, never()).findUniqueStats(any(), any(), any()); - } - - @Test - @DisplayName("Должен вызвать findStats с uris=null, когда unique=false и uris пустой список") - void getStats_whenUniqueFalseAndUrisEmpty_shouldCallFindStatsWithNullUris() { - when(statsRepository.findStats(start, end, null)).thenReturn(expectedStatsList); - - List actualStats = statsService.getStats(start, end, Collections.emptyList(), false); - - assertThat(actualStats).isEqualTo(expectedStatsList); - verify(statsRepository, times(1)).findStats(start, end, null); // Сервис преобразует пустой список в null - verify(statsRepository, never()).findUniqueStats(any(), any(), any()); - } - - @Test - @DisplayName("Должен вызвать findStats с указанными uris, когда unique=false") - void getStats_whenUniqueFalseAndUrisProvided_shouldCallFindStatsWithUris() { - List uris = List.of("/uri1", "/uri2"); - when(statsRepository.findStats(start, end, uris)).thenReturn(expectedStatsList); - - List actualStats = statsService.getStats(start, end, uris, false); - - assertThat(actualStats).isEqualTo(expectedStatsList); - verify(statsRepository, times(1)).findStats(start, end, uris); - verify(statsRepository, never()).findUniqueStats(any(), any(), any()); - } - - @Test - @DisplayName("Должен вызвать findUniqueStats, когда unique=true и uris=null") - void getStats_whenUniqueTrueAndUrisNull_shouldCallFindUniqueStats() { - when(statsRepository.findUniqueStats(start, end, null)).thenReturn(expectedStatsList); - - List actualStats = statsService.getStats(start, end, null, true); - - assertThat(actualStats).isEqualTo(expectedStatsList); - verify(statsRepository, times(1)).findUniqueStats(start, end, null); - verify(statsRepository, never()).findStats(any(), any(), any()); - } - - @Test - @DisplayName("Должен вызвать findUniqueStats с uris=null, когда unique=true и uris пустой список") - void getStats_whenUniqueTrueAndUrisEmpty_shouldCallFindUniqueStatsWithNullUris() { - when(statsRepository.findUniqueStats(start, end, null)).thenReturn(expectedStatsList); - - List actualStats = statsService.getStats(start, end, Collections.emptyList(), true); - - assertThat(actualStats).isEqualTo(expectedStatsList); - verify(statsRepository, times(1)).findUniqueStats(start, end, null); // Сервис преобразует пустой список в null - verify(statsRepository, never()).findStats(any(), any(), any()); - } - - @Test - @DisplayName("Должен вызвать findUniqueStats с указанными uris, когда unique=true") - void getStats_whenUniqueTrueAndUrisProvided_shouldCallFindUniqueStatsWithUris() { - List uris = List.of("/uri1", "/uri2"); - when(statsRepository.findUniqueStats(start, end, uris)).thenReturn(expectedStatsList); - - List actualStats = statsService.getStats(start, end, uris, true); - - assertThat(actualStats).isEqualTo(expectedStatsList); - verify(statsRepository, times(1)).findUniqueStats(start, end, uris); - verify(statsRepository, never()).findStats(any(), any(), any()); - } - - @Test - @DisplayName("Должен выбросить IllegalArgumentException, если дата начала после даты окончания") - void getStats_whenStartIsAfterEnd_shouldReturnEmptyList() { - LocalDateTime laterStart = now; - LocalDateTime earlierEnd = now.minusDays(1); - - assertThatThrownBy(() -> statsService.getStats(laterStart, earlierEnd, null, false)) - .isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("Error: Start date cannot be after end date."); - - verify(statsRepository, never()).findStats(any(), any(), any()); - verify(statsRepository, never()).findUniqueStats(any(), any(), any()); - } - } -} \ No newline at end of file diff --git a/core/stats-service/stats-server/src/test/resources/application.yaml b/core/stats-service/stats-server/src/test/resources/application.yaml deleted file mode 100644 index 689e431..0000000 --- a/core/stats-service/stats-server/src/test/resources/application.yaml +++ /dev/null @@ -1,9 +0,0 @@ -spring: - cloud: - config: - enabled: false - discovery: - enabled: false -eureka: - client: - enabled: false \ No newline at end of file From 3b7eb4c0c1fffa1e791cef95c63eb017c099f8ce Mon Sep 17 00:00:00 2001 From: Pepe Ronin Date: Mon, 22 Sep 2025 22:55:13 +0300 Subject: [PATCH 02/43] build: scaffold new stats aggregation modules - Create base package structure for aggregator, analyzer, and collector. - Add initial POM files for the new modules. - Lays the foundation for the new event-driven architecture. --- core/aggregator/pom.xml | 34 ++++++++++++++++++++++++++++++++++ core/analyzer/pom.xml | 34 ++++++++++++++++++++++++++++++++++ core/collector/pom.xml | 34 ++++++++++++++++++++++++++++++++++ core/pom.xml | 4 ++++ 4 files changed, 106 insertions(+) create mode 100644 core/aggregator/pom.xml create mode 100644 core/analyzer/pom.xml create mode 100644 core/collector/pom.xml diff --git a/core/aggregator/pom.xml b/core/aggregator/pom.xml new file mode 100644 index 0000000..43cd6df --- /dev/null +++ b/core/aggregator/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + ru.practicum + core + 0.0.1-SNAPSHOT + + + aggregator + jar + + + 21 + 21 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.springframework.boot + spring-boot-maven-plugin + + + + + \ No newline at end of file diff --git a/core/analyzer/pom.xml b/core/analyzer/pom.xml new file mode 100644 index 0000000..976e93b --- /dev/null +++ b/core/analyzer/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + ru.practicum + core + 0.0.1-SNAPSHOT + + + analyzer + jar + + + 21 + 21 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.springframework.boot + spring-boot-maven-plugin + + + + + \ No newline at end of file diff --git a/core/collector/pom.xml b/core/collector/pom.xml new file mode 100644 index 0000000..1b5ec2c --- /dev/null +++ b/core/collector/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + ru.practicum + core + 0.0.1-SNAPSHOT + + + collector + jar + + + 21 + 21 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.springframework.boot + spring-boot-maven-plugin + + + + + \ No newline at end of file diff --git a/core/pom.xml b/core/pom.xml index 522e98d..490fec6 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -25,6 +25,10 @@ request-service comment-service interaction-api + collector + aggregator + analyzer + serialization \ No newline at end of file From 0e56e05634248985ecd6c5a3a237b699e1135481 Mon Sep 17 00:00:00 2001 From: Pepe Ronin Date: Mon, 22 Sep 2025 22:55:37 +0300 Subject: [PATCH 03/43] build(compose): update services for new architecture - Add aggregator, analyzer, and collector services. - Introduce Kafka service for event streaming. - Remove the now-obsolete stats-server service. --- compose.yaml | 171 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 117 insertions(+), 54 deletions(-) diff --git a/compose.yaml b/compose.yaml index db826ea..51b2371 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,4 +1,7 @@ services: + # =================================================================== + # INFRASTRUCTURE SERVICES + # =================================================================== discovery-server: build: infra/discovery-server container_name: ewm-discovery-server @@ -49,24 +52,112 @@ services: EUREKA_URI: http://discovery-server:8761/eureka/ PORT: 8080 - stats-server: - build: core/stats-service/stats-server - container_name: ewm-stats-server + # =================================================================== + # KAFKA AND DATABASE + # =================================================================== + kafka: + image: confluentinc/confluent-local:7.4.10 + hostname: kafka + container_name: kafka + ports: + - "9092:9092" + restart: unless-stopped + environment: + KAFKA_NODE_ID: 1 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT' + KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092' + KAFKA_PROCESS_ROLES: 'broker,controller' + KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka:29093' + KAFKA_LISTENERS: 'PLAINTEXT://0.0.0.0:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092' + KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT' + KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER' + CLUSTER_ID: 'MkU3OEVBNTcwNTJENDM2Qk' + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 + KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 + KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 + healthcheck: + test: [ "CMD-SHELL", "kafka-topics --bootstrap-server localhost:9092 --list" ] + interval: 10s + timeout: 5s + retries: 5 + + kafka-init-topics: + image: confluentinc/confluent-local:7.4.3 + container_name: kafka-init-topics depends_on: - discovery-server: - condition: service_healthy - config-server: - condition: service_healthy - ewm-db: - condition: service_healthy + kafka: + condition: service_healthy + command: > + bash -c " + echo 'Waiting for Kafka to be ready...' && + cub kafka-ready -b kafka:29092 1 20 && + echo 'Kafka is ready!' && + kafka-topics --create --topic stats.user-actions.v1 --partitions 1 --replication-factor 1 --if-not-exists --bootstrap-server kafka:29092 && + kafka-topics --create --topic stats.events-similarity.v1 --partitions 1 --replication-factor 1 --if-not-exists --bootstrap-server kafka:29092 + " + + ewm-db: + image: postgres:16.1 + container_name: ewm-main-db ports: - - "9090:9090" + - "5432:5432" + environment: + POSTGRES_USER: ewm_user + POSTGRES_PASSWORD: ewm_password + POSTGRES_DB: ewm_db + volumes: + - main_db_data:/var/lib/postgresql/data + - ./init-scripts/init.sql:/docker-entrypoint-initdb.d/01-schema.sql + healthcheck: + test: [ "CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB} -p 5432" ] + interval: 10s + timeout: 5s + retries: 5 + start_period: 10s + + # =================================================================== + # BUSINESS LOGIC SERVICES + # =================================================================== + collector-service: + build: core/collector + container_name: ewm-collector-service + depends_on: + discovery-server: { condition: service_healthy } + config-server: { condition: service_healthy } + kafka: { condition: service_healthy } + restart: unless-stopped environment: EUREKA_URI: http://discovery-server:8761/eureka/ - SPRING_DATASOURCE_URL: jdbc:postgresql://ewm-db:5432/ewm_stats_db - SPRING_DATASOURCE_USERNAME: ewm_user - SPRING_DATASOURCE_PASSWORD: ewm_password - JAVA_OPTS: -Duser.timezone=UTC + KAFKA_BOOTSTRAP_SERVERS: kafka:29092 + + aggregator-service: + build: core/aggregator + container_name: ewm-aggregator-service + depends_on: + discovery-server: { condition: service_healthy } + config-server: { condition: service_healthy } + kafka: { condition: service_healthy } + restart: unless-stopped + environment: + EUREKA_URI: http://discovery-server:8761/eureka/ + KAFKA_BOOTSTRAP_SERVERS: kafka:29092 + + analyzer-service: + build: core/analyzer + container_name: ewm-analyzer-service + depends_on: + discovery-server: { condition: service_healthy } + config-server: { condition: service_healthy } + ewm-db: { condition: service_healthy } + kafka: { condition: service_healthy } + restart: unless-stopped + environment: + EUREKA_URI: http://discovery-server:8761/eureka/ + POSTGRES_HOST: ewm-db + POSTGRES_USER: ewm_user + POSTGRES_PASSWORD: ewm_password + KAFKA_BOOTSTRAP_SERVERS: kafka:29092 event-service: build: core/event-service @@ -78,15 +169,13 @@ services: condition: service_healthy ewm-db: condition: service_healthy - stats-server: - condition: service_started ports: - "8081:8081" environment: EUREKA_URI: http://discovery-server:8761/eureka/ - SPRING_DATASOURCE_URL: jdbc:postgresql://ewm-db:5432/ewm_event - SPRING_DATASOURCE_USERNAME: ewm_user - SPRING_DATASOURCE_PASSWORD: ewm_password + POSTGRES_HOST: ewm-db + POSTGRES_USER: ewm_user + POSTGRES_PASSWORD: ewm_password JAVA_OPTS: -Duser.timezone=UTC user-service: @@ -99,15 +188,13 @@ services: condition: service_healthy ewm-db: condition: service_healthy - stats-server: - condition: service_started ports: - "8082:8082" environment: EUREKA_URI: http://discovery-server:8761/eureka/ - SPRING_DATASOURCE_URL: jdbc:postgresql://ewm-db:5432/ewm_user - SPRING_DATASOURCE_USERNAME: ewm_user - SPRING_DATASOURCE_PASSWORD: ewm_password + POSTGRES_HOST: ewm-db + POSTGRES_USER: ewm_user + POSTGRES_PASSWORD: ewm_password JAVA_OPTS: -Duser.timezone=UTC request-service: @@ -120,15 +207,13 @@ services: condition: service_healthy ewm-db: condition: service_healthy - stats-server: - condition: service_started ports: - "8083:8083" environment: EUREKA_URI: http://discovery-server:8761/eureka/ - SPRING_DATASOURCE_URL: jdbc:postgresql://ewm-db:5432/ewm_request - SPRING_DATASOURCE_USERNAME: ewm_user - SPRING_DATASOURCE_PASSWORD: ewm_password + POSTGRES_HOST: ewm-db + POSTGRES_USER: ewm_user + POSTGRES_PASSWORD: ewm_password JAVA_OPTS: -Duser.timezone=UTC comment-service: @@ -141,36 +226,14 @@ services: condition: service_healthy ewm-db: condition: service_healthy - stats-server: - condition: service_started ports: - "8084:8084" environment: EUREKA_URI: http://discovery-server:8761/eureka/ - SPRING_DATASOURCE_URL: jdbc:postgresql://ewm-db:5432/ewm_comment - SPRING_DATASOURCE_USERNAME: ewm_user - SPRING_DATASOURCE_PASSWORD: ewm_password - JAVA_OPTS: -Duser.timezone=UTC - - ewm-db: - image: postgres:16.1 - container_name: ewm-main-db - ports: - - "5432:5432" - environment: + POSTGRES_HOST: ewm-db POSTGRES_USER: ewm_user POSTGRES_PASSWORD: ewm_password - POSTGRES_DB: ewm_db - volumes: - - main_db_data:/var/lib/postgresql/data - - ./init-scripts/init.sql:/docker-entrypoint-initdb.d/01-schema.sql - healthcheck: - test: [ "CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB} -p 5432" ] - interval: 10s - timeout: 5s - retries: 5 - start_period: 10s + JAVA_OPTS: -Duser.timezone=UTC volumes: - stats_db_data: {} - main_db_data: {} \ No newline at end of file + main_db_data: { } \ No newline at end of file From 014b92d90b053c8574ed8cd82a0e55c116ab56d9 Mon Sep 17 00:00:00 2001 From: Pepe Ronin Date: Mon, 22 Sep 2025 22:57:16 +0300 Subject: [PATCH 04/43] feat(serialization): add Avro/Protobuf schemas and generation - Define Avro and Protobuf schemas for core data models. - Implement custom Avro serializers and deserializers (ser/de). - Configure Maven plugins to auto-generate Java classes from schemas. --- core/serialization/pom.xml | 127 ++++++++++++++++++ .../src/main/avro/ActionTypeAvro.avsc | 6 + .../src/main/avro/EventSimilarityAvro.avsc | 30 +++++ .../src/main/avro/UserActionAvro.avsc | 30 +++++ .../stats/common/kafka/AvroSerializer.java | 45 +++++++ .../EventSimilarityAvroDeserializer.java | 43 ++++++ .../kafka/UserActionAvroDeserializer.java | 43 ++++++ .../src/main/protobuf/recommendations.proto | 62 +++++++++ pom.xml | 45 +++++++ 9 files changed, 431 insertions(+) create mode 100644 core/serialization/pom.xml create mode 100644 core/serialization/src/main/avro/ActionTypeAvro.avsc create mode 100644 core/serialization/src/main/avro/EventSimilarityAvro.avsc create mode 100644 core/serialization/src/main/avro/UserActionAvro.avsc create mode 100644 core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/AvroSerializer.java create mode 100644 core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/EventSimilarityAvroDeserializer.java create mode 100644 core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/UserActionAvroDeserializer.java create mode 100644 core/serialization/src/main/protobuf/recommendations.proto diff --git a/core/serialization/pom.xml b/core/serialization/pom.xml new file mode 100644 index 0000000..2e8a036 --- /dev/null +++ b/core/serialization/pom.xml @@ -0,0 +1,127 @@ + + + 4.0.0 + + ru.practicum + core + 0.0.1-SNAPSHOT + + + serialization + jar + + + 21 + 21 + UTF-8 + + + + + org.apache.avro + avro + + + io.grpc + grpc-protobuf + + + io.grpc + grpc-stub + + + com.google.protobuf + protobuf-java-util + + + jakarta.annotation + jakarta.annotation-api + provided + + + org.apache.kafka + kafka_2.13 + + + org.projectlombok + lombok + + + + + + + org.apache.avro + avro-maven-plugin + + + generate-sources + + schema + + + ${project.basedir}/src/main/avro/ + ${project.build.directory}/generated-sources/avro + String + + + + + + io.github.ascopes + protobuf-maven-plugin + + ${protobuf.version} + + + io.grpc + protoc-gen-grpc-java + ${grpc.version} + + + + + + + generate + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.5.0 + + + add-protobuf-source + generate-sources + + add-source + + + + ${project.build.directory}/generated-sources/protobuf + + + + + add-avro-source + generate-sources + + add-source + + + + ${project.build.directory}/generated-sources/avro + + + + + + + + + \ No newline at end of file diff --git a/core/serialization/src/main/avro/ActionTypeAvro.avsc b/core/serialization/src/main/avro/ActionTypeAvro.avsc new file mode 100644 index 0000000..64720f2 --- /dev/null +++ b/core/serialization/src/main/avro/ActionTypeAvro.avsc @@ -0,0 +1,6 @@ +{ + "namespace": "ru.practicum.explorewithme.stats.kafka", + "type": "enum", + "name": "ActionTypeAvro", + "symbols": ["VIEW", "REGISTER", "LIKE"] +} \ No newline at end of file diff --git a/core/serialization/src/main/avro/EventSimilarityAvro.avsc b/core/serialization/src/main/avro/EventSimilarityAvro.avsc new file mode 100644 index 0000000..b6f4896 --- /dev/null +++ b/core/serialization/src/main/avro/EventSimilarityAvro.avsc @@ -0,0 +1,30 @@ +{ + "namespace": "ru.practicum.explorewithme.stats.kafka", + "type": "record", + "name": "EventSimilarityAvro", + "fields": [ + { + "name": "eventA", + "type": "long", + "doc": "Identifier for the first event in the pair (always the smaller ID)." + }, + { + "name": "eventB", + "type": "long", + "doc": "Identifier for the second event in the pair (always the larger ID)." + }, + { + "name": "score", + "type": "double", + "doc": "The calculated cosine similarity score between eventA and eventB." + }, + { + "name": "timestamp", + "type": { + "type": "long", + "logicalType": "timestamp-millis" + }, + "doc": "The timestamp of the user action that triggered this recalculation." + } + ] +} \ No newline at end of file diff --git a/core/serialization/src/main/avro/UserActionAvro.avsc b/core/serialization/src/main/avro/UserActionAvro.avsc new file mode 100644 index 0000000..ec3280c --- /dev/null +++ b/core/serialization/src/main/avro/UserActionAvro.avsc @@ -0,0 +1,30 @@ +{ + "namespace": "ru.practicum.explorewithme.stats.kafka", + "type": "record", + "name": "UserActionAvro", + "fields": [ + { + "name": "userId", + "type": "long", + "doc": "Identifier of the user who performed the action." + }, + { + "name": "eventId", + "type": "long", + "doc": "Identifier of the event associated with the action." + }, + { + "name": "actionType", + "type": "ru.practicum.explorewithme.stats.kafka.ActionTypeAvro", + "doc": "The type of action performed." + }, + { + "name": "timestamp", + "type": { + "type": "long", + "logicalType": "timestamp-millis" + }, + "doc": "The timestamp of when the action occurred, in milliseconds since the Unix epoch." + } + ] +} \ No newline at end of file diff --git a/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/AvroSerializer.java b/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/AvroSerializer.java new file mode 100644 index 0000000..042bf95 --- /dev/null +++ b/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/AvroSerializer.java @@ -0,0 +1,45 @@ +package ru.practicum.ewm.stats.common.kafka; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Map; +import lombok.extern.slf4j.Slf4j; +import org.apache.avro.generic.GenericDatumWriter; +import org.apache.avro.generic.GenericRecord; +import org.apache.avro.io.BinaryEncoder; +import org.apache.avro.io.EncoderFactory; +import org.apache.avro.specific.SpecificRecordBase; +import org.apache.kafka.common.errors.SerializationException; +import org.apache.kafka.common.serialization.Serializer; + +@Slf4j +public class AvroSerializer implements Serializer { + + @Override + public void configure(Map configs, boolean isKey) { + // No-op + } + + @Override + public byte[] serialize(String topic, T payload) { + if (payload == null) { + return null; + } + + GenericDatumWriter datumWriter = new GenericDatumWriter<>(payload.getSchema()); + try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { + BinaryEncoder encoder = EncoderFactory.get().binaryEncoder(outputStream, null); + datumWriter.write(payload, encoder); + encoder.flush(); + return outputStream.toByteArray(); + } catch (IOException e) { + log.error("Error serializing Avro message for topic {}: {}", topic, payload, e); + throw new SerializationException("Error serializing Avro message", e); + } + } + + @Override + public void close() { + // No-op + } +} \ No newline at end of file diff --git a/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/EventSimilarityAvroDeserializer.java b/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/EventSimilarityAvroDeserializer.java new file mode 100644 index 0000000..73d5f30 --- /dev/null +++ b/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/EventSimilarityAvroDeserializer.java @@ -0,0 +1,43 @@ +package ru.practicum.ewm.stats.common.kafka; + +import java.io.IOException; +import java.util.Map; +import lombok.extern.slf4j.Slf4j; +import org.apache.avro.io.BinaryDecoder; +import org.apache.avro.io.DecoderFactory; +import org.apache.avro.specific.SpecificDatumReader; +import org.apache.kafka.common.errors.SerializationException; +import org.apache.kafka.common.serialization.Deserializer; +import ru.practicum.explorewithme.stats.kafka.EventSimilarityAvro; + +@Slf4j +public class EventSimilarityAvroDeserializer implements Deserializer { + + private final SpecificDatumReader datumReader = new SpecificDatumReader<>( + EventSimilarityAvro.getClassSchema()); + + @Override + public void configure(Map configs, boolean isKey) { + // No-op + } + + @Override + public EventSimilarityAvro deserialize(String topic, byte[] data) { + if (data == null) { + return null; + } + + try { + BinaryDecoder decoder = DecoderFactory.get().binaryDecoder(data, null); + return datumReader.read(null, decoder); + } catch (IOException e) { + log.error("Error deserializing Avro message for topic {}", topic, e); + throw new SerializationException("Error deserializing Avro message", e); + } + } + + @Override + public void close() { + // No-op + } +} diff --git a/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/UserActionAvroDeserializer.java b/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/UserActionAvroDeserializer.java new file mode 100644 index 0000000..913866f --- /dev/null +++ b/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/UserActionAvroDeserializer.java @@ -0,0 +1,43 @@ +package ru.practicum.ewm.stats.common.kafka; + +import java.io.IOException; +import java.util.Map; +import lombok.extern.slf4j.Slf4j; +import org.apache.avro.io.BinaryDecoder; +import org.apache.avro.io.DecoderFactory; +import org.apache.avro.specific.SpecificDatumReader; +import org.apache.kafka.common.errors.SerializationException; +import org.apache.kafka.common.serialization.Deserializer; +import ru.practicum.explorewithme.stats.kafka.UserActionAvro; + +@Slf4j +public class UserActionAvroDeserializer implements Deserializer { + + private final SpecificDatumReader datumReader = new SpecificDatumReader<>( + UserActionAvro.getClassSchema()); + + @Override + public void configure(Map configs, boolean isKey) { + // No-op + } + + @Override + public UserActionAvro deserialize(String topic, byte[] data) { + if (data == null) { + return null; + } + + try { + BinaryDecoder decoder = DecoderFactory.get().binaryDecoder(data, null); + return datumReader.read(null, decoder); + } catch (IOException e) { + log.error("Error deserializing Avro message for topic {}", topic, e); + throw new SerializationException("Error deserializing Avro message", e); + } + } + + @Override + public void close() { + // No-op + } +} \ No newline at end of file diff --git a/core/serialization/src/main/protobuf/recommendations.proto b/core/serialization/src/main/protobuf/recommendations.proto new file mode 100644 index 0000000..d662d4e --- /dev/null +++ b/core/serialization/src/main/protobuf/recommendations.proto @@ -0,0 +1,62 @@ +syntax = "proto3"; + +option java_package = "ru.practicum.explorewithme.stats.grpc"; +option java_multiple_files = true; + +import "google/protobuf/timestamp.proto"; +import "google/protobuf/empty.proto"; + +// =================================================================== +// SERVICE 1: Collector Service (UserActionController) +// =================================================================== + +service UserActionController { + rpc CollectUserAction(UserActionProto) returns (google.protobuf.Empty); +} + +enum ActionTypeProto { + ACTION_UNKNOWN = 0; + ACTION_VIEW = 1; + ACTION_REGISTER = 2; + ACTION_LIKE = 3; +} + +message UserActionProto { + int64 user_id = 1; + int64 event_id = 2; + ActionTypeProto action_type = 3; + google.protobuf.Timestamp timestamp = 4; +} + + +// =================================================================== +// SERVICE 2: Analyzer Service (RecommendationsController) +// =================================================================== + +service RecommendationsController { + rpc GetRecommendationsForUser(UserPredictionsRequestProto) returns (stream RecommendedEventProto); + + rpc GetSimilarEvents(SimilarEventsRequestProto) returns (stream RecommendedEventProto); + + rpc GetInteractionsCount(InteractionsCountRequestProto) returns (stream RecommendedEventProto); +} + +message UserPredictionsRequestProto { + int64 user_id = 1; + int32 max_results = 2; +} + +message SimilarEventsRequestProto { + int64 event_id = 1; + int64 user_id = 2; + int32 max_results = 3; +} + +message InteractionsCountRequestProto { + repeated int64 event_ids = 1; +} + +message RecommendedEventProto { + int64 event_id = 1; + double score = 2; +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6de200d..d96f668 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,11 @@ 5.14.2 5.1.0 1.6.3 + 1.12.0 + 3.9.1 + 3.9.1 + 1.75.0 + 4.1.0 ${java.version} ${java.version} @@ -157,6 +162,31 @@ mapstruct ${org.mapstruct.version} + + org.apache.avro + avro + ${avro.version} + + + io.grpc + grpc-protobuf + ${grpc.version} + + + io.grpc + grpc-stub + ${grpc.version} + + + com.google.protobuf + protobuf-java-util + ${protobuf.version} + + + org.apache.kafka + kafka_2.13 + ${kafka.version} + @@ -199,6 +229,21 @@ ${project.build.directory}/generated-sources/annotations + + org.apache.avro + avro-maven-plugin + ${avro.version} + + + io.github.ascopes + protobuf-maven-plugin + ${protobuf-plugin.version} + + + org.codehaus.mojo + build-helper-maven-plugin + 3.6.1 + org.apache.maven.plugins maven-surefire-plugin From 6753a615f4392c0726671da61a6ee5474dafa67c Mon Sep 17 00:00:00 2001 From: Pepe Ronin Date: Mon, 22 Sep 2025 23:23:49 +0300 Subject: [PATCH 05/43] refactor: shorten root package name to 'ewm' - Rename root package from `ru.practicum.explorewithme` to `ru.practicum.ewm`. - Apply this change across all modules for brevity and consistency. --- .../comment/CommentServiceApplication.java | 6 +-- .../comment/application/CommentService.java | 14 +++--- .../application/CommentServiceImpl.java | 40 +++++++-------- .../params/AdminCommentSearchParams.java | 2 +- .../params/PublicCommentParameters.java | 2 +- .../comment/domain/Comment.java | 2 +- .../comment/domain/CommentRepository.java | 4 +- .../config/JpaAuditingConfig.java | 2 +- .../infrastructure/mapper/CommentMapper.java | 10 ++-- .../persistence/CommentRepositoryAdapter.java | 10 ++-- .../persistence/JpaCommentRepository.java | 4 +- .../admin/AdminCommentController.java | 8 +-- .../error/GlobalExceptionHandler.java | 10 ++-- .../priv/PrivateCommentController.java | 10 ++-- .../pub/PublicCommentController.java | 8 +-- .../event/EventServiceApplication.java | 8 +-- .../event/application/CategoryService.java | 6 +-- .../application/CategoryServiceImpl.java | 20 ++++---- .../event/application/CompilationService.java | 8 +-- .../application/CompilationServiceImpl.java | 24 ++++----- .../event/application/EventService.java | 18 +++---- .../event/application/EventServiceImpl.java | 49 +++++++++---------- .../params/AdminEventSearchParams.java | 8 +-- .../params/PublicEventSearchParams.java | 6 +-- .../params/SearchParamsWithDateRange.java | 2 +- .../validation/DateRangeValidator.java | 4 +- .../validation/ValidDateRange.java | 2 +- .../event/domain/Category.java | 2 +- .../event/domain/CategoryRepository.java | 2 +- .../event/domain/Compilation.java | 2 +- .../event/domain/CompilationRepository.java | 2 +- .../event/domain/Event.java | 2 +- .../event/domain/EventRepository.java | 6 +-- .../event/domain/EventState.java | 2 +- .../event/domain/Location.java | 2 +- .../config/JpaAuditingConfig.java | 2 +- .../infrastructure/mapper/CategoryMapper.java | 8 +-- .../mapper/CompilationMapper.java | 10 ++-- .../infrastructure/mapper/EnumMapper.java | 22 +++++++++ .../infrastructure/mapper/EventMapper.java | 14 +++--- .../infrastructure/mapper/LocationMapper.java | 6 +-- .../CategoryRepositoryAdapter.java | 6 +-- .../CompilationRepositoryAdapter.java | 6 +-- .../persistence/EventRepositoryAdapter.java | 14 +++--- .../persistence/JpaCategoryRepository.java | 4 +- .../persistence/JpaCompilationRepository.java | 4 +- .../persistence/JpaEventRepository.java | 6 +-- .../admin/AdminCategoryController.java | 8 +-- .../admin/AdminCompilationController.java | 10 ++-- .../admin/AdminEventController.java | 12 ++--- .../error/GlobalExceptionHandler.java | 14 +++--- .../internal/InternalEventController.java | 8 +-- .../priv/PrivateEventController.java | 12 ++--- .../pub/PublicCategoryController.java | 6 +-- .../pub/PublicCompilationController.java | 6 +-- .../pub/PublicEventController.java | 12 ++--- .../infrastructure/mapper/EnumMapper.java | 22 --------- .../DtoMapperAutoConfiguration.java | 4 +- .../api/client/AbstractErrorDecoder.java | 8 +-- .../client/comment/dto/CommentAdminDto.java | 6 +-- .../api/client/comment/dto/CommentDto.java | 6 +-- .../comment/dto/CommentDtoWithAuthor.java | 8 +++ .../api/client/comment/dto/NewCommentDto.java | 2 +- .../client/comment/dto/UpdateCommentDto.java | 2 +- .../api/client/event/EventClient.java | 4 +- .../event/EventClientConfiguration.java | 2 +- .../client/event/EventClientErrorDecoder.java | 8 +-- .../api/client/event/dto/CategoryDto.java | 2 +- .../api/client/event/dto/CompilationDto.java | 2 +- .../dto/EventDtoWithConfirmedRequests.java | 2 +- .../api/client/event/dto/EventFullDto.java | 8 +-- .../client/event/dto/EventInternalDto.java | 4 +- .../api/client/event/dto/EventShortDto.java | 6 +-- .../api/client/event/dto/LocationDto.java | 2 +- .../api/client/event/dto/NewCategoryDto.java | 2 +- .../client/event/dto/NewCompilationDto.java | 2 +- .../api/client/event/dto/NewEventDto.java | 4 +- .../dto/UpdateCompilationRequestDto.java | 2 +- .../event/dto/UpdateEventAdminRequestDto.java | 4 +- .../event/dto/UpdateEventUserRequestDto.java | 4 +- .../api/client/event/enums/EventState.java | 2 +- .../api/client/request/RequestClient.java | 2 +- .../request/RequestClientConfiguration.java | 2 +- .../request/RequestClientErrorDecoder.java | 8 +-- .../EventRequestStatusUpdateRequestDto.java | 4 +- .../EventRequestStatusUpdateResultDto.java | 2 +- .../request/dto/ParticipationRequestDto.java | 6 +-- .../client/request/enums}/RequestStatus.java | 2 +- .../api/client/user/UserClient.java | 4 +- .../client/user/UserClientConfiguration.java | 2 +- .../client/user/UserClientErrorDecoder.java | 6 +-- .../client/user/dto/NewUserRequestDto.java | 2 +- .../api/client/user/dto/UserDto.java | 2 +- .../api/client/user/dto/UserShortDto.java | 2 +- .../api/constants/DateTimeConstants.java | 2 +- .../api/error/ApiError.java | 4 +- .../api/error/BaseExceptionHandler.java | 2 +- .../error/BusinessRuleViolationException.java | 2 +- .../error/EntityAlreadyExistsException.java | 2 +- .../api/error/EntityDeletedException.java | 2 +- .../api/error/EntityNotFoundException.java | 2 +- .../api/error/RemoteServiceException.java | 2 +- .../practicum/ewm/api/utility/DtoMapper.java | 13 +++++ .../api/utility/ErrorParser.java | 4 +- .../comment/dto/CommentDtoWithAuthor.java | 8 --- .../explorewithme/api/utility/DtoMapper.java | 13 ----- ...ot.autoconfigure.AutoConfiguration.imports | 2 +- .../request/RequestServiceApplication.java | 6 +-- .../request/application/RequestService.java | 8 +-- .../application/RequestServiceImpl.java | 28 +++++------ ...EventRequestStatusUpdateRequestParams.java | 4 +- .../request/domain/ParticipationRequest.java | 2 +- .../request/domain/RequestRepository.java | 2 +- .../ewm/request/domain}/RequestStatus.java | 2 +- .../config/JpaAuditingConfig.java | 2 +- .../infrastructure/mapper/EnumMapper.java | 23 +++++++++ .../infrastructure/mapper/RequestMapper.java | 12 +++++ .../persistence/JpaRequestRepository.java | 6 +-- .../persistence/RequestRepositoryAdapter.java | 8 +-- .../error/GlobalExceptionHandler.java | 12 ++--- .../internal/InternalRequestController.java | 6 +-- .../priv/EventRequestController.java | 14 +++--- .../priv/UserRequestController.java | 6 +-- .../infrastructure/mapper/EnumMapper.java | 22 --------- .../infrastructure/mapper/RequestMapper.java | 12 ----- .../src/main/avro/ActionTypeAvro.avsc | 2 +- .../src/main/avro/EventSimilarityAvro.avsc | 2 +- .../src/main/avro/UserActionAvro.avsc | 4 +- .../EventSimilarityAvroDeserializer.java | 2 +- .../kafka/UserActionAvroDeserializer.java | 2 +- .../src/main/protobuf/recommendations.proto | 2 +- .../user/UserServiceApplication.java | 2 +- .../user/application/UserService.java | 8 +-- .../user/application/UserServiceImpl.java | 18 +++---- .../params/GetListUsersParameters.java | 2 +- .../user/domain/User.java | 2 +- .../user/domain/UserRepository.java | 2 +- .../infrastructure/mapper/UserMapper.java | 10 ++-- .../persistence/JpaUserRepository.java | 4 +- .../persistence/UserRepositoryAdapter.java | 6 +-- .../admin/AdminUserController.java | 10 ++-- .../error/GlobalExceptionHandler.java | 10 ++-- .../internal/InternalUserController.java | 8 +-- .../configserver/ConfigServerApplication.java | 2 +- .../event-service/application-local.yaml | 2 +- .../infra/discovery/EurekaServerApp.java | 2 +- .../infra/gateway/GatewayApplication.java | 2 +- .../controller/FallbackController.java | 4 +- 148 files changed, 500 insertions(+), 500 deletions(-) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/CommentServiceApplication.java (77%) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/application/CommentService.java (57%) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/application/CommentServiceImpl.java (84%) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/application/params/AdminCommentSearchParams.java (83%) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/application/params/PublicCommentParameters.java (85%) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/domain/Comment.java (98%) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/domain/CommentRepository.java (92%) rename core/{event-service/src/main/java/ru/practicum/explorewithme/event => comment-service/src/main/java/ru/practicum/ewm/comment}/infrastructure/config/JpaAuditingConfig.java (78%) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/infrastructure/mapper/CommentMapper.java (85%) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/infrastructure/persistence/CommentRepositoryAdapter.java (86%) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/infrastructure/persistence/JpaCommentRepository.java (81%) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/presentation/admin/AdminCommentController.java (92%) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/presentation/error/GlobalExceptionHandler.java (90%) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/presentation/priv/PrivateCommentController.java (90%) rename core/comment-service/src/main/java/ru/practicum/{explorewithme => ewm}/comment/presentation/pub/PublicCommentController.java (89%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/EventServiceApplication.java (72%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/application/CategoryService.java (65%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/application/CategoryServiceImpl.java (80%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/application/CompilationService.java (58%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/application/CompilationServiceImpl.java (86%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/application/EventService.java (53%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/application/EventServiceImpl.java (90%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/application/params/AdminEventSearchParams.java (71%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/application/params/PublicEventSearchParams.java (76%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/application/params/SearchParamsWithDateRange.java (70%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/application/validation/DateRangeValidator.java (77%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/application/validation/ValidDateRange.java (93%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/domain/Category.java (95%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/domain/CategoryRepository.java (94%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/domain/Compilation.java (97%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/domain/CompilationRepository.java (95%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/domain/Event.java (98%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/domain/EventRepository.java (90%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/domain/EventState.java (85%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/domain/Location.java (93%) rename core/{comment-service/src/main/java/ru/practicum/explorewithme/comment => event-service/src/main/java/ru/practicum/ewm/event}/infrastructure/config/JpaAuditingConfig.java (77%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/infrastructure/mapper/CategoryMapper.java (65%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/infrastructure/mapper/CompilationMapper.java (65%) create mode 100644 core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/EnumMapper.java rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/infrastructure/mapper/EventMapper.java (74%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/infrastructure/mapper/LocationMapper.java (51%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/infrastructure/persistence/CategoryRepositoryAdapter.java (87%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/infrastructure/persistence/CompilationRepositoryAdapter.java (88%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/infrastructure/persistence/EventRepositoryAdapter.java (91%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/infrastructure/persistence/JpaCategoryRepository.java (80%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/infrastructure/persistence/JpaCompilationRepository.java (88%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/infrastructure/persistence/JpaEventRepository.java (79%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/presentation/admin/AdminCategoryController.java (88%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/presentation/admin/AdminCompilationController.java (86%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/presentation/admin/AdminEventController.java (91%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/presentation/error/GlobalExceptionHandler.java (90%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/presentation/internal/InternalEventController.java (71%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/presentation/priv/PrivateEventController.java (93%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/presentation/pub/PublicCategoryController.java (90%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/presentation/pub/PublicCompilationController.java (90%) rename core/event-service/src/main/java/ru/practicum/{explorewithme => ewm}/event/presentation/pub/PublicEventController.java (85%) delete mode 100644 core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/EnumMapper.java rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/autoconfiguration/DtoMapperAutoConfiguration.java (75%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/AbstractErrorDecoder.java (89%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/comment/dto/CommentAdminDto.java (77%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/comment/dto/CommentDto.java (76%) create mode 100644 core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/CommentDtoWithAuthor.java rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/comment/dto/NewCommentDto.java (90%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/comment/dto/UpdateCommentDto.java (90%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/EventClient.java (82%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/EventClientConfiguration.java (82%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/EventClientErrorDecoder.java (58%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/dto/CategoryDto.java (85%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/dto/CompilationDto.java (87%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/dto/EventDtoWithConfirmedRequests.java (66%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/dto/EventFullDto.java (79%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/dto/EventInternalDto.java (81%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/dto/EventShortDto.java (76%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/dto/LocationDto.java (87%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/dto/NewCategoryDto.java (90%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/dto/NewCompilationDto.java (92%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/dto/NewEventDto.java (93%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/dto/UpdateCompilationRequestDto.java (90%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/dto/UpdateEventAdminRequestDto.java (90%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/dto/UpdateEventUserRequestDto.java (90%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/event/enums/EventState.java (83%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/request/RequestClient.java (93%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/request/RequestClientConfiguration.java (81%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/request/RequestClientErrorDecoder.java (58%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/request/dto/EventRequestStatusUpdateRequestDto.java (80%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/request/dto/EventRequestStatusUpdateResultDto.java (90%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/request/dto/ParticipationRequestDto.java (75%) rename core/{request-service/src/main/java/ru/practicum/explorewithme/request/domain => interaction-api/src/main/java/ru/practicum/ewm/api/client/request/enums}/RequestStatus.java (87%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/user/UserClient.java (93%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/user/UserClientConfiguration.java (82%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/user/UserClientErrorDecoder.java (62%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/user/dto/NewUserRequestDto.java (93%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/user/dto/UserDto.java (80%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/client/user/dto/UserShortDto.java (85%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/constants/DateTimeConstants.java (95%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/error/ApiError.java (80%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/error/BaseExceptionHandler.java (99%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/error/BusinessRuleViolationException.java (78%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/error/EntityAlreadyExistsException.java (88%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/error/EntityDeletedException.java (88%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/error/EntityNotFoundException.java (87%) rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/error/RemoteServiceException.java (89%) create mode 100644 core/interaction-api/src/main/java/ru/practicum/ewm/api/utility/DtoMapper.java rename core/interaction-api/src/main/java/ru/practicum/{explorewithme => ewm}/api/utility/ErrorParser.java (88%) delete mode 100644 core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/CommentDtoWithAuthor.java delete mode 100644 core/interaction-api/src/main/java/ru/practicum/explorewithme/api/utility/DtoMapper.java rename core/request-service/src/main/java/ru/practicum/{explorewithme => ewm}/request/RequestServiceApplication.java (77%) rename core/request-service/src/main/java/ru/practicum/{explorewithme => ewm}/request/application/RequestService.java (66%) rename core/request-service/src/main/java/ru/practicum/{explorewithme => ewm}/request/application/RequestServiceImpl.java (88%) rename core/request-service/src/main/java/ru/practicum/{explorewithme => ewm}/request/application/params/EventRequestStatusUpdateRequestParams.java (75%) rename core/request-service/src/main/java/ru/practicum/{explorewithme => ewm}/request/domain/ParticipationRequest.java (97%) rename core/request-service/src/main/java/ru/practicum/{explorewithme => ewm}/request/domain/RequestRepository.java (96%) rename core/{interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/enums => request-service/src/main/java/ru/practicum/ewm/request/domain}/RequestStatus.java (85%) rename core/request-service/src/main/java/ru/practicum/{explorewithme => ewm}/request/infrastructure/config/JpaAuditingConfig.java (77%) create mode 100644 core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/mapper/EnumMapper.java create mode 100644 core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/mapper/RequestMapper.java rename core/request-service/src/main/java/ru/practicum/{explorewithme => ewm}/request/infrastructure/persistence/JpaRequestRepository.java (88%) rename core/request-service/src/main/java/ru/practicum/{explorewithme => ewm}/request/infrastructure/persistence/RequestRepositoryAdapter.java (92%) rename core/request-service/src/main/java/ru/practicum/{explorewithme => ewm}/request/presentation/error/GlobalExceptionHandler.java (88%) rename core/request-service/src/main/java/ru/practicum/{explorewithme => ewm}/request/presentation/internal/InternalRequestController.java (79%) rename core/request-service/src/main/java/ru/practicum/{explorewithme => ewm}/request/presentation/priv/EventRequestController.java (81%) rename core/request-service/src/main/java/ru/practicum/{explorewithme => ewm}/request/presentation/priv/UserRequestController.java (91%) delete mode 100644 core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/mapper/EnumMapper.java delete mode 100644 core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/mapper/RequestMapper.java rename core/user-service/src/main/java/ru/practicum/{explorewithme => ewm}/user/UserServiceApplication.java (90%) rename core/user-service/src/main/java/ru/practicum/{explorewithme => ewm}/user/application/UserService.java (54%) rename core/user-service/src/main/java/ru/practicum/{explorewithme => ewm}/user/application/UserServiceImpl.java (81%) rename core/user-service/src/main/java/ru/practicum/{explorewithme => ewm}/user/application/params/GetListUsersParameters.java (84%) rename core/user-service/src/main/java/ru/practicum/{explorewithme => ewm}/user/domain/User.java (95%) rename core/user-service/src/main/java/ru/practicum/{explorewithme => ewm}/user/domain/UserRepository.java (97%) rename core/user-service/src/main/java/ru/practicum/{explorewithme => ewm}/user/infrastructure/mapper/UserMapper.java (50%) rename core/user-service/src/main/java/ru/practicum/{explorewithme => ewm}/user/infrastructure/persistence/JpaUserRepository.java (79%) rename core/user-service/src/main/java/ru/practicum/{explorewithme => ewm}/user/infrastructure/persistence/UserRepositoryAdapter.java (89%) rename core/user-service/src/main/java/ru/practicum/{explorewithme => ewm}/user/presentation/admin/AdminUserController.java (87%) rename core/user-service/src/main/java/ru/practicum/{explorewithme => ewm}/user/presentation/error/GlobalExceptionHandler.java (90%) rename core/user-service/src/main/java/ru/practicum/{explorewithme => ewm}/user/presentation/internal/InternalUserController.java (83%) rename infra/config-server/src/main/java/ru/practicum/{explorewithme => ewm}/infra/configserver/ConfigServerApplication.java (89%) rename infra/discovery-server/src/main/java/ru/practicum/{explorewithme => ewm}/infra/discovery/EurekaServerApp.java (88%) rename infra/gateway-server/src/main/java/ru/practicum/{explorewithme => ewm}/infra/gateway/GatewayApplication.java (88%) rename infra/gateway-server/src/main/java/ru/practicum/{explorewithme => ewm}/infra/gateway/controller/FallbackController.java (89%) diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/CommentServiceApplication.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/CommentServiceApplication.java similarity index 77% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/CommentServiceApplication.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/CommentServiceApplication.java index a89c3ef..7f3aebe 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/CommentServiceApplication.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/CommentServiceApplication.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.comment; +package ru.practicum.ewm.comment; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -8,8 +8,8 @@ @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients(basePackages = { - "ru.practicum.explorewithme.api.client.user", - "ru.practicum.explorewithme.api.client.event" + "ru.practicum.ewm.api.client.user", + "ru.practicum.ewm.api.client.event" }) public class CommentServiceApplication { public static void main(String[] args) { diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/application/CommentService.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/application/CommentService.java similarity index 57% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/application/CommentService.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/application/CommentService.java index 4466b62..5019cde 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/application/CommentService.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/application/CommentService.java @@ -1,12 +1,12 @@ -package ru.practicum.explorewithme.comment.application; +package ru.practicum.ewm.comment.application; import java.util.List; -import ru.practicum.explorewithme.api.client.comment.dto.CommentAdminDto; -import ru.practicum.explorewithme.api.client.comment.dto.CommentDto; -import ru.practicum.explorewithme.api.client.comment.dto.NewCommentDto; -import ru.practicum.explorewithme.api.client.comment.dto.UpdateCommentDto; -import ru.practicum.explorewithme.comment.application.params.AdminCommentSearchParams; -import ru.practicum.explorewithme.comment.application.params.PublicCommentParameters; +import ru.practicum.ewm.api.client.comment.dto.CommentAdminDto; +import ru.practicum.ewm.api.client.comment.dto.CommentDto; +import ru.practicum.ewm.api.client.comment.dto.NewCommentDto; +import ru.practicum.ewm.api.client.comment.dto.UpdateCommentDto; +import ru.practicum.ewm.comment.application.params.AdminCommentSearchParams; +import ru.practicum.ewm.comment.application.params.PublicCommentParameters; public interface CommentService { diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/application/CommentServiceImpl.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/application/CommentServiceImpl.java similarity index 84% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/application/CommentServiceImpl.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/application/CommentServiceImpl.java index 551e506..d12aa36 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/application/CommentServiceImpl.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/application/CommentServiceImpl.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.comment.application; +package ru.practicum.ewm.comment.application; import java.time.LocalDateTime; import java.util.ArrayList; @@ -11,25 +11,25 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.practicum.explorewithme.api.client.comment.dto.CommentAdminDto; -import ru.practicum.explorewithme.api.client.comment.dto.CommentDto; -import ru.practicum.explorewithme.api.client.comment.dto.CommentDtoWithAuthor; -import ru.practicum.explorewithme.api.client.comment.dto.NewCommentDto; -import ru.practicum.explorewithme.api.client.comment.dto.UpdateCommentDto; -import ru.practicum.explorewithme.api.client.event.EventClient; -import ru.practicum.explorewithme.api.client.event.dto.EventInternalDto; -import ru.practicum.explorewithme.api.client.event.enums.EventState; -import ru.practicum.explorewithme.api.client.user.UserClient; -import ru.practicum.explorewithme.api.client.user.dto.UserDto; -import ru.practicum.explorewithme.api.client.user.dto.UserShortDto; -import ru.practicum.explorewithme.api.error.BusinessRuleViolationException; -import ru.practicum.explorewithme.api.error.EntityNotFoundException; -import ru.practicum.explorewithme.api.utility.DtoMapper; -import ru.practicum.explorewithme.comment.application.params.AdminCommentSearchParams; -import ru.practicum.explorewithme.comment.application.params.PublicCommentParameters; -import ru.practicum.explorewithme.comment.domain.Comment; -import ru.practicum.explorewithme.comment.domain.CommentRepository; -import ru.practicum.explorewithme.comment.infrastructure.mapper.CommentMapper; +import ru.practicum.ewm.api.client.comment.dto.CommentAdminDto; +import ru.practicum.ewm.api.client.comment.dto.CommentDto; +import ru.practicum.ewm.api.client.comment.dto.CommentDtoWithAuthor; +import ru.practicum.ewm.api.client.comment.dto.NewCommentDto; +import ru.practicum.ewm.api.client.comment.dto.UpdateCommentDto; +import ru.practicum.ewm.api.client.event.EventClient; +import ru.practicum.ewm.api.client.event.dto.EventInternalDto; +import ru.practicum.ewm.api.client.event.enums.EventState; +import ru.practicum.ewm.api.client.user.UserClient; +import ru.practicum.ewm.api.client.user.dto.UserDto; +import ru.practicum.ewm.api.client.user.dto.UserShortDto; +import ru.practicum.ewm.api.error.BusinessRuleViolationException; +import ru.practicum.ewm.api.error.EntityNotFoundException; +import ru.practicum.ewm.api.utility.DtoMapper; +import ru.practicum.ewm.comment.application.params.AdminCommentSearchParams; +import ru.practicum.ewm.comment.application.params.PublicCommentParameters; +import ru.practicum.ewm.comment.domain.Comment; +import ru.practicum.ewm.comment.domain.CommentRepository; +import ru.practicum.ewm.comment.infrastructure.mapper.CommentMapper; @Service @RequiredArgsConstructor diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/application/params/AdminCommentSearchParams.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/application/params/AdminCommentSearchParams.java similarity index 83% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/application/params/AdminCommentSearchParams.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/application/params/AdminCommentSearchParams.java index c2d73e0..37a5f92 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/application/params/AdminCommentSearchParams.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/application/params/AdminCommentSearchParams.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.comment.application.params; +package ru.practicum.ewm.comment.application.params; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/application/params/PublicCommentParameters.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/application/params/PublicCommentParameters.java similarity index 85% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/application/params/PublicCommentParameters.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/application/params/PublicCommentParameters.java index 5db0370..0873ac2 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/application/params/PublicCommentParameters.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/application/params/PublicCommentParameters.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.comment.application.params; +package ru.practicum.ewm.comment.application.params; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/domain/Comment.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/domain/Comment.java similarity index 98% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/domain/Comment.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/domain/Comment.java index 05a4ca0..da94a70 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/domain/Comment.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/domain/Comment.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.comment.domain; +package ru.practicum.ewm.comment.domain; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/domain/CommentRepository.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/domain/CommentRepository.java similarity index 92% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/domain/CommentRepository.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/domain/CommentRepository.java index 27d7672..969bdb4 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/domain/CommentRepository.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/domain/CommentRepository.java @@ -1,9 +1,9 @@ -package ru.practicum.explorewithme.comment.domain; +package ru.practicum.ewm.comment.domain; import java.util.List; import java.util.Optional; import org.springframework.data.domain.Sort; -import ru.practicum.explorewithme.comment.application.params.AdminCommentSearchParams; +import ru.practicum.ewm.comment.application.params.AdminCommentSearchParams; public interface CommentRepository { diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/config/JpaAuditingConfig.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/infrastructure/config/JpaAuditingConfig.java similarity index 78% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/config/JpaAuditingConfig.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/infrastructure/config/JpaAuditingConfig.java index b6a4e90..3f49d10 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/config/JpaAuditingConfig.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/infrastructure/config/JpaAuditingConfig.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.infrastructure.config; +package ru.practicum.ewm.comment.infrastructure.config; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/infrastructure/mapper/CommentMapper.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/infrastructure/mapper/CommentMapper.java similarity index 85% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/infrastructure/mapper/CommentMapper.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/infrastructure/mapper/CommentMapper.java index 969777e..ca188fa 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/infrastructure/mapper/CommentMapper.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/infrastructure/mapper/CommentMapper.java @@ -1,13 +1,13 @@ -package ru.practicum.explorewithme.comment.infrastructure.mapper; +package ru.practicum.ewm.comment.infrastructure.mapper; import java.util.List; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; -import ru.practicum.explorewithme.api.client.comment.dto.CommentAdminDto; -import ru.practicum.explorewithme.api.client.comment.dto.CommentDto; -import ru.practicum.explorewithme.api.client.comment.dto.NewCommentDto; -import ru.practicum.explorewithme.comment.domain.Comment; +import ru.practicum.ewm.api.client.comment.dto.CommentAdminDto; +import ru.practicum.ewm.api.client.comment.dto.CommentDto; +import ru.practicum.ewm.api.client.comment.dto.NewCommentDto; +import ru.practicum.ewm.comment.domain.Comment; @Mapper(componentModel = "spring") public interface CommentMapper { diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/infrastructure/persistence/CommentRepositoryAdapter.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/infrastructure/persistence/CommentRepositoryAdapter.java similarity index 86% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/infrastructure/persistence/CommentRepositoryAdapter.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/infrastructure/persistence/CommentRepositoryAdapter.java index 379a593..d058b3c 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/infrastructure/persistence/CommentRepositoryAdapter.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/infrastructure/persistence/CommentRepositoryAdapter.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.comment.infrastructure.persistence; +package ru.practicum.ewm.comment.infrastructure.persistence; import com.querydsl.core.BooleanBuilder; import java.util.List; @@ -8,10 +8,10 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Component; -import ru.practicum.explorewithme.comment.application.params.AdminCommentSearchParams; -import ru.practicum.explorewithme.comment.domain.Comment; -import ru.practicum.explorewithme.comment.domain.CommentRepository; -import ru.practicum.explorewithme.comment.domain.QComment; +import ru.practicum.ewm.comment.application.params.AdminCommentSearchParams; +import ru.practicum.ewm.comment.domain.Comment; +import ru.practicum.ewm.comment.domain.CommentRepository; +import ru.practicum.ewm.comment.domain.QComment; @Component @RequiredArgsConstructor diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/infrastructure/persistence/JpaCommentRepository.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/infrastructure/persistence/JpaCommentRepository.java similarity index 81% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/infrastructure/persistence/JpaCommentRepository.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/infrastructure/persistence/JpaCommentRepository.java index 1d9a979..ea8aebc 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/infrastructure/persistence/JpaCommentRepository.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/infrastructure/persistence/JpaCommentRepository.java @@ -1,11 +1,11 @@ -package ru.practicum.explorewithme.comment.infrastructure.persistence; +package ru.practicum.ewm.comment.infrastructure.persistence; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.querydsl.QuerydslPredicateExecutor; import org.springframework.stereotype.Repository; -import ru.practicum.explorewithme.comment.domain.Comment; +import ru.practicum.ewm.comment.domain.Comment; @Repository public interface JpaCommentRepository extends JpaRepository, QuerydslPredicateExecutor { diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/presentation/admin/AdminCommentController.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/presentation/admin/AdminCommentController.java similarity index 92% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/presentation/admin/AdminCommentController.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/presentation/admin/AdminCommentController.java index 2943e69..7002213 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/presentation/admin/AdminCommentController.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/presentation/admin/AdminCommentController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.comment.presentation.admin; +package ru.practicum.ewm.comment.presentation.admin; import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.PositiveOrZero; @@ -15,9 +15,9 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.comment.dto.CommentAdminDto; -import ru.practicum.explorewithme.comment.application.params.AdminCommentSearchParams; -import ru.practicum.explorewithme.comment.application.CommentService; +import ru.practicum.ewm.api.client.comment.dto.CommentAdminDto; +import ru.practicum.ewm.comment.application.params.AdminCommentSearchParams; +import ru.practicum.ewm.comment.application.CommentService; @RestController @RequestMapping("/admin/comments") diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/presentation/error/GlobalExceptionHandler.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/presentation/error/GlobalExceptionHandler.java similarity index 90% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/presentation/error/GlobalExceptionHandler.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/presentation/error/GlobalExceptionHandler.java index efced85..4a34ac1 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/presentation/error/GlobalExceptionHandler.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/presentation/error/GlobalExceptionHandler.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.comment.presentation.error; +package ru.practicum.ewm.comment.presentation.error; import java.time.LocalDateTime; import lombok.extern.slf4j.Slf4j; @@ -7,10 +7,10 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; -import ru.practicum.explorewithme.api.error.ApiError; -import ru.practicum.explorewithme.api.error.BaseExceptionHandler; -import ru.practicum.explorewithme.api.error.BusinessRuleViolationException; -import ru.practicum.explorewithme.api.error.EntityNotFoundException; +import ru.practicum.ewm.api.error.ApiError; +import ru.practicum.ewm.api.error.BaseExceptionHandler; +import ru.practicum.ewm.api.error.BusinessRuleViolationException; +import ru.practicum.ewm.api.error.EntityNotFoundException; @RestControllerAdvice @Slf4j diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/presentation/priv/PrivateCommentController.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/presentation/priv/PrivateCommentController.java similarity index 90% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/presentation/priv/PrivateCommentController.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/presentation/priv/PrivateCommentController.java index 4a0b111..4503754 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/presentation/priv/PrivateCommentController.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/presentation/priv/PrivateCommentController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.comment.presentation.priv; +package ru.practicum.ewm.comment.presentation.priv; import jakarta.validation.Valid; import jakarta.validation.constraints.Positive; @@ -19,10 +19,10 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.comment.dto.CommentDto; -import ru.practicum.explorewithme.api.client.comment.dto.NewCommentDto; -import ru.practicum.explorewithme.api.client.comment.dto.UpdateCommentDto; -import ru.practicum.explorewithme.comment.application.CommentService; +import ru.practicum.ewm.api.client.comment.dto.CommentDto; +import ru.practicum.ewm.api.client.comment.dto.NewCommentDto; +import ru.practicum.ewm.api.client.comment.dto.UpdateCommentDto; +import ru.practicum.ewm.comment.application.CommentService; @RestController @RequestMapping("/users/{userId}/comments") diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/presentation/pub/PublicCommentController.java b/core/comment-service/src/main/java/ru/practicum/ewm/comment/presentation/pub/PublicCommentController.java similarity index 89% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/presentation/pub/PublicCommentController.java rename to core/comment-service/src/main/java/ru/practicum/ewm/comment/presentation/pub/PublicCommentController.java index e469082..faeec85 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/presentation/pub/PublicCommentController.java +++ b/core/comment-service/src/main/java/ru/practicum/ewm/comment/presentation/pub/PublicCommentController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.comment.presentation.pub; +package ru.practicum.ewm.comment.presentation.pub; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Positive; @@ -15,9 +15,9 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.comment.dto.CommentDto; -import ru.practicum.explorewithme.comment.application.CommentService; -import ru.practicum.explorewithme.comment.application.params.PublicCommentParameters; +import ru.practicum.ewm.api.client.comment.dto.CommentDto; +import ru.practicum.ewm.comment.application.CommentService; +import ru.practicum.ewm.comment.application.params.PublicCommentParameters; @RestController @RequestMapping("/events/{eventId}/comments") diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/EventServiceApplication.java b/core/event-service/src/main/java/ru/practicum/ewm/event/EventServiceApplication.java similarity index 72% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/EventServiceApplication.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/EventServiceApplication.java index 70437f0..ea62159 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/EventServiceApplication.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/EventServiceApplication.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event; +package ru.practicum.ewm.event; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -8,9 +8,9 @@ @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients(basePackages = { - "ru.practicum.explorewithme.stats.client", - "ru.practicum.explorewithme.api.client.user", - "ru.practicum.explorewithme.api.client.request" + "ru.practicum.ewm.stats.client", + "ru.practicum.ewm.api.client.user", + "ru.practicum.ewm.api.client.request" }) public class EventServiceApplication { public static void main(String[] args) { diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/CategoryService.java b/core/event-service/src/main/java/ru/practicum/ewm/event/application/CategoryService.java similarity index 65% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/application/CategoryService.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/application/CategoryService.java index 94d5735..03ad52c 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/CategoryService.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/application/CategoryService.java @@ -1,8 +1,8 @@ -package ru.practicum.explorewithme.event.application; +package ru.practicum.ewm.event.application; import java.util.List; -import ru.practicum.explorewithme.api.client.event.dto.CategoryDto; -import ru.practicum.explorewithme.api.client.event.dto.NewCategoryDto; +import ru.practicum.ewm.api.client.event.dto.CategoryDto; +import ru.practicum.ewm.api.client.event.dto.NewCategoryDto; public interface CategoryService { diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/CategoryServiceImpl.java b/core/event-service/src/main/java/ru/practicum/ewm/event/application/CategoryServiceImpl.java similarity index 80% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/application/CategoryServiceImpl.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/application/CategoryServiceImpl.java index f85d226..7b9a857 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/CategoryServiceImpl.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/application/CategoryServiceImpl.java @@ -1,19 +1,19 @@ -package ru.practicum.explorewithme.event.application; +package ru.practicum.ewm.event.application; import java.util.List; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.practicum.explorewithme.api.client.event.dto.CategoryDto; -import ru.practicum.explorewithme.api.client.event.dto.NewCategoryDto; -import ru.practicum.explorewithme.api.error.EntityAlreadyExistsException; -import ru.practicum.explorewithme.api.error.EntityDeletedException; -import ru.practicum.explorewithme.api.error.EntityNotFoundException; -import ru.practicum.explorewithme.event.domain.Category; -import ru.practicum.explorewithme.event.domain.CategoryRepository; -import ru.practicum.explorewithme.event.domain.EventRepository; -import ru.practicum.explorewithme.event.infrastructure.mapper.CategoryMapper; +import ru.practicum.ewm.api.client.event.dto.CategoryDto; +import ru.practicum.ewm.api.client.event.dto.NewCategoryDto; +import ru.practicum.ewm.api.error.EntityAlreadyExistsException; +import ru.practicum.ewm.api.error.EntityDeletedException; +import ru.practicum.ewm.api.error.EntityNotFoundException; +import ru.practicum.ewm.event.domain.Category; +import ru.practicum.ewm.event.domain.CategoryRepository; +import ru.practicum.ewm.event.domain.EventRepository; +import ru.practicum.ewm.event.infrastructure.mapper.CategoryMapper; @Service @RequiredArgsConstructor diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/CompilationService.java b/core/event-service/src/main/java/ru/practicum/ewm/event/application/CompilationService.java similarity index 58% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/application/CompilationService.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/application/CompilationService.java index 572aea6..4c843d4 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/CompilationService.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/application/CompilationService.java @@ -1,9 +1,9 @@ -package ru.practicum.explorewithme.event.application; +package ru.practicum.ewm.event.application; import java.util.List; -import ru.practicum.explorewithme.api.client.event.dto.CompilationDto; -import ru.practicum.explorewithme.api.client.event.dto.NewCompilationDto; -import ru.practicum.explorewithme.api.client.event.dto.UpdateCompilationRequestDto; +import ru.practicum.ewm.api.client.event.dto.CompilationDto; +import ru.practicum.ewm.api.client.event.dto.NewCompilationDto; +import ru.practicum.ewm.api.client.event.dto.UpdateCompilationRequestDto; public interface CompilationService { List getCompilations(Boolean pinned, Integer from, Integer size); diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/CompilationServiceImpl.java b/core/event-service/src/main/java/ru/practicum/ewm/event/application/CompilationServiceImpl.java similarity index 86% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/application/CompilationServiceImpl.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/application/CompilationServiceImpl.java index 6917782..3d78571 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/CompilationServiceImpl.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/application/CompilationServiceImpl.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.application; +package ru.practicum.ewm.event.application; import java.util.HashSet; import java.util.List; @@ -9,17 +9,17 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.practicum.explorewithme.api.client.event.dto.CompilationDto; -import ru.practicum.explorewithme.api.client.event.dto.EventShortDto; -import ru.practicum.explorewithme.api.client.event.dto.NewCompilationDto; -import ru.practicum.explorewithme.api.client.event.dto.UpdateCompilationRequestDto; -import ru.practicum.explorewithme.api.error.EntityAlreadyExistsException; -import ru.practicum.explorewithme.api.error.EntityNotFoundException; -import ru.practicum.explorewithme.event.domain.Compilation; -import ru.practicum.explorewithme.event.domain.CompilationRepository; -import ru.practicum.explorewithme.event.domain.Event; -import ru.practicum.explorewithme.event.domain.EventRepository; -import ru.practicum.explorewithme.event.infrastructure.mapper.CompilationMapper; +import ru.practicum.ewm.api.client.event.dto.CompilationDto; +import ru.practicum.ewm.api.client.event.dto.EventShortDto; +import ru.practicum.ewm.api.client.event.dto.NewCompilationDto; +import ru.practicum.ewm.api.client.event.dto.UpdateCompilationRequestDto; +import ru.practicum.ewm.api.error.EntityAlreadyExistsException; +import ru.practicum.ewm.api.error.EntityNotFoundException; +import ru.practicum.ewm.event.domain.Compilation; +import ru.practicum.ewm.event.domain.CompilationRepository; +import ru.practicum.ewm.event.domain.Event; +import ru.practicum.ewm.event.domain.EventRepository; +import ru.practicum.ewm.event.infrastructure.mapper.CompilationMapper; @Service @RequiredArgsConstructor diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/EventService.java b/core/event-service/src/main/java/ru/practicum/ewm/event/application/EventService.java similarity index 53% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/application/EventService.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/application/EventService.java index 1dd2e25..5437c31 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/EventService.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/application/EventService.java @@ -1,14 +1,14 @@ -package ru.practicum.explorewithme.event.application; +package ru.practicum.ewm.event.application; import java.util.List; -import ru.practicum.explorewithme.api.client.event.dto.EventFullDto; -import ru.practicum.explorewithme.api.client.event.dto.EventInternalDto; -import ru.practicum.explorewithme.api.client.event.dto.EventShortDto; -import ru.practicum.explorewithme.api.client.event.dto.NewEventDto; -import ru.practicum.explorewithme.api.client.event.dto.UpdateEventAdminRequestDto; -import ru.practicum.explorewithme.api.client.event.dto.UpdateEventUserRequestDto; -import ru.practicum.explorewithme.event.application.params.AdminEventSearchParams; -import ru.practicum.explorewithme.event.application.params.PublicEventSearchParams; +import ru.practicum.ewm.api.client.event.dto.EventFullDto; +import ru.practicum.ewm.api.client.event.dto.EventInternalDto; +import ru.practicum.ewm.api.client.event.dto.EventShortDto; +import ru.practicum.ewm.api.client.event.dto.NewEventDto; +import ru.practicum.ewm.api.client.event.dto.UpdateEventAdminRequestDto; +import ru.practicum.ewm.api.client.event.dto.UpdateEventUserRequestDto; +import ru.practicum.ewm.event.application.params.AdminEventSearchParams; +import ru.practicum.ewm.event.application.params.PublicEventSearchParams; public interface EventService { List getEventsAdmin( diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/EventServiceImpl.java b/core/event-service/src/main/java/ru/practicum/ewm/event/application/EventServiceImpl.java similarity index 90% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/application/EventServiceImpl.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/application/EventServiceImpl.java index f0899c9..79123a2 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/EventServiceImpl.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/application/EventServiceImpl.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.application; +package ru.practicum.ewm.event.application; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; @@ -13,30 +13,29 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.practicum.explorewithme.api.client.event.dto.EventDtoWithConfirmedRequests; -import ru.practicum.explorewithme.api.client.event.dto.EventFullDto; -import ru.practicum.explorewithme.api.client.event.dto.EventInternalDto; -import ru.practicum.explorewithme.api.client.event.dto.EventShortDto; -import ru.practicum.explorewithme.api.client.event.dto.NewEventDto; -import ru.practicum.explorewithme.api.client.event.dto.UpdateEventAdminRequestDto; -import ru.practicum.explorewithme.api.client.event.dto.UpdateEventUserRequestDto; -import ru.practicum.explorewithme.api.client.request.RequestClient; -import ru.practicum.explorewithme.api.client.user.UserClient; -import ru.practicum.explorewithme.api.client.user.dto.UserDto; -import ru.practicum.explorewithme.api.error.BusinessRuleViolationException; -import ru.practicum.explorewithme.api.error.EntityNotFoundException; -import ru.practicum.explorewithme.api.utility.DtoMapper; -import ru.practicum.explorewithme.event.application.params.AdminEventSearchParams; -import ru.practicum.explorewithme.event.application.params.PublicEventSearchParams; -import ru.practicum.explorewithme.event.domain.Category; -import ru.practicum.explorewithme.event.domain.CategoryRepository; -import ru.practicum.explorewithme.event.domain.Event; -import ru.practicum.explorewithme.event.domain.EventRepository; -import ru.practicum.explorewithme.event.domain.EventState; -import ru.practicum.explorewithme.event.infrastructure.mapper.EventMapper; -import ru.practicum.explorewithme.event.infrastructure.mapper.LocationMapper; -import ru.practicum.explorewithme.stats.client.StatsClient; -import ru.practicum.explorewithme.stats.dto.ViewStatsDto; +import ru.practicum.ewm.api.client.event.dto.EventDtoWithConfirmedRequests; +import ru.practicum.ewm.api.client.event.dto.EventFullDto; +import ru.practicum.ewm.api.client.event.dto.EventInternalDto; +import ru.practicum.ewm.api.client.event.dto.EventShortDto; +import ru.practicum.ewm.api.client.event.dto.NewEventDto; +import ru.practicum.ewm.api.client.event.dto.UpdateEventAdminRequestDto; +import ru.practicum.ewm.api.client.event.dto.UpdateEventUserRequestDto; +import ru.practicum.ewm.api.client.request.RequestClient; +import ru.practicum.ewm.api.client.user.UserClient; +import ru.practicum.ewm.api.client.user.dto.UserDto; +import ru.practicum.ewm.api.error.BusinessRuleViolationException; +import ru.practicum.ewm.api.error.EntityNotFoundException; +import ru.practicum.ewm.api.utility.DtoMapper; +import ru.practicum.ewm.event.application.params.AdminEventSearchParams; +import ru.practicum.ewm.event.application.params.PublicEventSearchParams; +import ru.practicum.ewm.event.domain.Category; +import ru.practicum.ewm.event.domain.CategoryRepository; +import ru.practicum.ewm.event.domain.Event; +import ru.practicum.ewm.event.domain.EventRepository; +import ru.practicum.ewm.event.domain.EventState; +import ru.practicum.ewm.event.infrastructure.mapper.EventMapper; +import ru.practicum.ewm.event.infrastructure.mapper.LocationMapper; +import ru.practicum.ewm.stats.dto.ViewStatsDto; @Service @RequiredArgsConstructor diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/params/AdminEventSearchParams.java b/core/event-service/src/main/java/ru/practicum/ewm/event/application/params/AdminEventSearchParams.java similarity index 71% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/application/params/AdminEventSearchParams.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/application/params/AdminEventSearchParams.java index 3febf2a..da591fd 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/params/AdminEventSearchParams.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/application/params/AdminEventSearchParams.java @@ -1,6 +1,6 @@ -package ru.practicum.explorewithme.event.application.params; +package ru.practicum.ewm.event.application.params; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; +import static ru.practicum.ewm.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; import java.time.LocalDateTime; import java.util.List; @@ -9,8 +9,8 @@ import lombok.EqualsAndHashCode; import lombok.Getter; import org.springframework.format.annotation.DateTimeFormat; -import ru.practicum.explorewithme.event.application.validation.ValidDateRange; -import ru.practicum.explorewithme.event.domain.EventState; +import ru.practicum.ewm.event.application.validation.ValidDateRange; +import ru.practicum.ewm.event.domain.EventState; @Getter @Builder diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/params/PublicEventSearchParams.java b/core/event-service/src/main/java/ru/practicum/ewm/event/application/params/PublicEventSearchParams.java similarity index 76% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/application/params/PublicEventSearchParams.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/application/params/PublicEventSearchParams.java index b984e4b..e134418 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/params/PublicEventSearchParams.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/application/params/PublicEventSearchParams.java @@ -1,6 +1,6 @@ -package ru.practicum.explorewithme.event.application.params; +package ru.practicum.ewm.event.application.params; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; +import static ru.practicum.ewm.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; import java.time.LocalDateTime; import java.util.List; @@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode; import lombok.Getter; import org.springframework.format.annotation.DateTimeFormat; -import ru.practicum.explorewithme.event.application.validation.ValidDateRange; +import ru.practicum.ewm.event.application.validation.ValidDateRange; @Getter @Builder diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/params/SearchParamsWithDateRange.java b/core/event-service/src/main/java/ru/practicum/ewm/event/application/params/SearchParamsWithDateRange.java similarity index 70% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/application/params/SearchParamsWithDateRange.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/application/params/SearchParamsWithDateRange.java index 798eb26..774d646 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/params/SearchParamsWithDateRange.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/application/params/SearchParamsWithDateRange.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.application.params; +package ru.practicum.ewm.event.application.params; import java.time.LocalDateTime; diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/validation/DateRangeValidator.java b/core/event-service/src/main/java/ru/practicum/ewm/event/application/validation/DateRangeValidator.java similarity index 77% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/application/validation/DateRangeValidator.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/application/validation/DateRangeValidator.java index faa3ed4..7f1ac7c 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/validation/DateRangeValidator.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/application/validation/DateRangeValidator.java @@ -1,8 +1,8 @@ -package ru.practicum.explorewithme.event.application.validation; +package ru.practicum.ewm.event.application.validation; import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; -import ru.practicum.explorewithme.event.application.params.SearchParamsWithDateRange; +import ru.practicum.ewm.event.application.params.SearchParamsWithDateRange; public class DateRangeValidator implements ConstraintValidator { diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/validation/ValidDateRange.java b/core/event-service/src/main/java/ru/practicum/ewm/event/application/validation/ValidDateRange.java similarity index 93% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/application/validation/ValidDateRange.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/application/validation/ValidDateRange.java index 1c47102..4c04a7b 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/application/validation/ValidDateRange.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/application/validation/ValidDateRange.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.application.validation; +package ru.practicum.ewm.event.application.validation; import jakarta.validation.Constraint; import jakarta.validation.Payload; diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/Category.java b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/Category.java similarity index 95% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/Category.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/domain/Category.java index 6085f84..9c330ff 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/Category.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/Category.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.domain; +package ru.practicum.ewm.event.domain; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/CategoryRepository.java b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/CategoryRepository.java similarity index 94% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/CategoryRepository.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/domain/CategoryRepository.java index 3e228f4..31fc2ca 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/CategoryRepository.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/CategoryRepository.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.domain; +package ru.practicum.ewm.event.domain; import java.util.List; import java.util.Optional; diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/Compilation.java b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/Compilation.java similarity index 97% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/Compilation.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/domain/Compilation.java index 71016ca..cf2e301 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/Compilation.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/Compilation.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.domain; +package ru.practicum.ewm.event.domain; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/CompilationRepository.java b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/CompilationRepository.java similarity index 95% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/CompilationRepository.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/domain/CompilationRepository.java index 2f75f09..0e2a64f 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/CompilationRepository.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/CompilationRepository.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.domain; +package ru.practicum.ewm.event.domain; import java.util.List; import java.util.Optional; diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/Event.java b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/Event.java similarity index 98% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/Event.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/domain/Event.java index 6f38d1f..2d42fed 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/Event.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/Event.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.domain; +package ru.practicum.ewm.event.domain; import jakarta.persistence.Column; import jakarta.persistence.Embedded; diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/EventRepository.java b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/EventRepository.java similarity index 90% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/EventRepository.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/domain/EventRepository.java index 5c8f864..db78fd5 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/EventRepository.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/EventRepository.java @@ -1,10 +1,10 @@ -package ru.practicum.explorewithme.event.domain; +package ru.practicum.ewm.event.domain; import java.util.List; import java.util.Optional; import java.util.Set; -import ru.practicum.explorewithme.event.application.params.AdminEventSearchParams; -import ru.practicum.explorewithme.event.application.params.PublicEventSearchParams; +import ru.practicum.ewm.event.application.params.AdminEventSearchParams; +import ru.practicum.ewm.event.application.params.PublicEventSearchParams; public interface EventRepository { diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/EventState.java b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/EventState.java similarity index 85% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/EventState.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/domain/EventState.java index f132543..18276a7 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/EventState.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/EventState.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.domain; +package ru.practicum.ewm.event.domain; /** * Состояния жизненного цикла события diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/Location.java b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/Location.java similarity index 93% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/Location.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/domain/Location.java index d4ab540..0587391 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/domain/Location.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/domain/Location.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.domain; +package ru.practicum.ewm.event.domain; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; diff --git a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/infrastructure/config/JpaAuditingConfig.java b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/config/JpaAuditingConfig.java similarity index 77% rename from core/comment-service/src/main/java/ru/practicum/explorewithme/comment/infrastructure/config/JpaAuditingConfig.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/config/JpaAuditingConfig.java index 6f0c801..7cf9f6a 100644 --- a/core/comment-service/src/main/java/ru/practicum/explorewithme/comment/infrastructure/config/JpaAuditingConfig.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/config/JpaAuditingConfig.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.comment.infrastructure.config; +package ru.practicum.ewm.event.infrastructure.config; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/CategoryMapper.java b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/CategoryMapper.java similarity index 65% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/CategoryMapper.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/CategoryMapper.java index fc73149..86dec53 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/CategoryMapper.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/CategoryMapper.java @@ -1,10 +1,10 @@ -package ru.practicum.explorewithme.event.infrastructure.mapper; +package ru.practicum.ewm.event.infrastructure.mapper; import org.mapstruct.Mapper; import org.mapstruct.Mapping; -import ru.practicum.explorewithme.api.client.event.dto.CategoryDto; -import ru.practicum.explorewithme.api.client.event.dto.NewCategoryDto; -import ru.practicum.explorewithme.event.domain.Category; +import ru.practicum.ewm.api.client.event.dto.CategoryDto; +import ru.practicum.ewm.api.client.event.dto.NewCategoryDto; +import ru.practicum.ewm.event.domain.Category; @Mapper(componentModel = "spring") public interface CategoryMapper { diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/CompilationMapper.java b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/CompilationMapper.java similarity index 65% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/CompilationMapper.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/CompilationMapper.java index 4611b1c..e5db3db 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/CompilationMapper.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/CompilationMapper.java @@ -1,12 +1,12 @@ -package ru.practicum.explorewithme.event.infrastructure.mapper; +package ru.practicum.ewm.event.infrastructure.mapper; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; -import ru.practicum.explorewithme.api.client.event.dto.CompilationDto; -import ru.practicum.explorewithme.api.client.event.dto.NewCompilationDto; -import ru.practicum.explorewithme.api.client.event.dto.UpdateCompilationRequestDto; -import ru.practicum.explorewithme.event.domain.Compilation; +import ru.practicum.ewm.api.client.event.dto.CompilationDto; +import ru.practicum.ewm.api.client.event.dto.NewCompilationDto; +import ru.practicum.ewm.api.client.event.dto.UpdateCompilationRequestDto; +import ru.practicum.ewm.event.domain.Compilation; @Mapper(componentModel = "spring", uses = {EventMapper.class}) public interface CompilationMapper { diff --git a/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/EnumMapper.java b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/EnumMapper.java new file mode 100644 index 0000000..85ffdba --- /dev/null +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/EnumMapper.java @@ -0,0 +1,22 @@ +package ru.practicum.ewm.event.infrastructure.mapper; + +import org.mapstruct.Mapper; +import ru.practicum.ewm.api.client.event.enums.EventState; + +@Mapper(componentModel = "spring") +public class EnumMapper { + + public EventState toApiEventState(ru.practicum.ewm.event.domain.EventState eventState) { + if (eventState == null) { + return null; + } + return EventState.valueOf(eventState.name()); + } + + public ru.practicum.ewm.event.domain.EventState toModelEventState(EventState eventState) { + if (eventState == null) { + return null; + } + return ru.practicum.ewm.event.domain.EventState.valueOf(eventState.name()); + } +} \ No newline at end of file diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/EventMapper.java b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/EventMapper.java similarity index 74% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/EventMapper.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/EventMapper.java index a18e67e..2c502d1 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/EventMapper.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/EventMapper.java @@ -1,14 +1,14 @@ -package ru.practicum.explorewithme.event.infrastructure.mapper; +package ru.practicum.ewm.event.infrastructure.mapper; import java.util.List; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; -import ru.practicum.explorewithme.api.client.event.dto.EventFullDto; -import ru.practicum.explorewithme.api.client.event.dto.EventInternalDto; -import ru.practicum.explorewithme.api.client.event.dto.EventShortDto; -import ru.practicum.explorewithme.api.client.event.dto.NewEventDto; -import ru.practicum.explorewithme.event.domain.Event; +import ru.practicum.ewm.api.client.event.dto.EventFullDto; +import ru.practicum.ewm.api.client.event.dto.EventInternalDto; +import ru.practicum.ewm.api.client.event.dto.EventShortDto; +import ru.practicum.ewm.api.client.event.dto.NewEventDto; +import ru.practicum.ewm.event.domain.Event; @Mapper(componentModel = "spring", uses = {CategoryMapper.class, LocationMapper.class, EnumMapper.class}) public interface EventMapper { @@ -27,7 +27,7 @@ public interface EventMapper { @Mapping(target = "compilations", ignore = true) @Mapping(target = "initiatorId", ignore = true) @Mapping(target = "createdOn", ignore = true) - @Mapping(target = "state", expression = "java(ru.practicum.explorewithme.event.domain.EventState.PENDING)") + @Mapping(target = "state", expression = "java(ru.practicum.ewm.event.domain.EventState.PENDING)") Event toEvent(NewEventDto newEventDto); List toEventFullDtoList(List events); diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/LocationMapper.java b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/LocationMapper.java similarity index 51% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/LocationMapper.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/LocationMapper.java index d3827b6..09c6fb0 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/LocationMapper.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/mapper/LocationMapper.java @@ -1,8 +1,8 @@ -package ru.practicum.explorewithme.event.infrastructure.mapper; +package ru.practicum.ewm.event.infrastructure.mapper; import org.mapstruct.Mapper; -import ru.practicum.explorewithme.api.client.event.dto.LocationDto; -import ru.practicum.explorewithme.event.domain.Location; +import ru.practicum.ewm.api.client.event.dto.LocationDto; +import ru.practicum.ewm.event.domain.Location; @Mapper(componentModel = "spring") public interface LocationMapper { diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/CategoryRepositoryAdapter.java b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/CategoryRepositoryAdapter.java similarity index 87% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/CategoryRepositoryAdapter.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/CategoryRepositoryAdapter.java index 92deb78..4b3c771 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/CategoryRepositoryAdapter.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/CategoryRepositoryAdapter.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.infrastructure.persistence; +package ru.practicum.ewm.event.infrastructure.persistence; import java.util.Comparator; import java.util.List; @@ -8,8 +8,8 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Component; -import ru.practicum.explorewithme.event.domain.Category; -import ru.practicum.explorewithme.event.domain.CategoryRepository; +import ru.practicum.ewm.event.domain.Category; +import ru.practicum.ewm.event.domain.CategoryRepository; @Component @RequiredArgsConstructor diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/CompilationRepositoryAdapter.java b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/CompilationRepositoryAdapter.java similarity index 88% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/CompilationRepositoryAdapter.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/CompilationRepositoryAdapter.java index 0d1b91d..f2974a7 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/CompilationRepositoryAdapter.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/CompilationRepositoryAdapter.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.infrastructure.persistence; +package ru.practicum.ewm.event.infrastructure.persistence; import java.util.List; import java.util.Optional; @@ -6,8 +6,8 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Component; -import ru.practicum.explorewithme.event.domain.Compilation; -import ru.practicum.explorewithme.event.domain.CompilationRepository; +import ru.practicum.ewm.event.domain.Compilation; +import ru.practicum.ewm.event.domain.CompilationRepository; @Component @RequiredArgsConstructor diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/EventRepositoryAdapter.java b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/EventRepositoryAdapter.java similarity index 91% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/EventRepositoryAdapter.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/EventRepositoryAdapter.java index 5ba5eb4..24116a7 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/EventRepositoryAdapter.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/EventRepositoryAdapter.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.infrastructure.persistence; +package ru.practicum.ewm.event.infrastructure.persistence; import com.querydsl.core.BooleanBuilder; import java.time.LocalDateTime; @@ -10,12 +10,12 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Component; -import ru.practicum.explorewithme.event.application.params.AdminEventSearchParams; -import ru.practicum.explorewithme.event.application.params.PublicEventSearchParams; -import ru.practicum.explorewithme.event.domain.Event; -import ru.practicum.explorewithme.event.domain.EventRepository; -import ru.practicum.explorewithme.event.domain.EventState; -import ru.practicum.explorewithme.event.domain.QEvent; +import ru.practicum.ewm.event.application.params.AdminEventSearchParams; +import ru.practicum.ewm.event.application.params.PublicEventSearchParams; +import ru.practicum.ewm.event.domain.Event; +import ru.practicum.ewm.event.domain.EventRepository; +import ru.practicum.ewm.event.domain.EventState; +import ru.practicum.ewm.event.domain.QEvent; @Component @RequiredArgsConstructor diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/JpaCategoryRepository.java b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/JpaCategoryRepository.java similarity index 80% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/JpaCategoryRepository.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/JpaCategoryRepository.java index 85a4e90..a7cbc14 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/JpaCategoryRepository.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/JpaCategoryRepository.java @@ -1,10 +1,10 @@ -package ru.practicum.explorewithme.event.infrastructure.persistence; +package ru.practicum.ewm.event.infrastructure.persistence; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import ru.practicum.explorewithme.event.domain.Category; +import ru.practicum.ewm.event.domain.Category; @Repository public interface JpaCategoryRepository extends JpaRepository { diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/JpaCompilationRepository.java b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/JpaCompilationRepository.java similarity index 88% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/JpaCompilationRepository.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/JpaCompilationRepository.java index 2dfd013..fa1b45d 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/JpaCompilationRepository.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/JpaCompilationRepository.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.infrastructure.persistence; +package ru.practicum.ewm.event.infrastructure.persistence; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -7,7 +7,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import ru.practicum.explorewithme.event.domain.Compilation; +import ru.practicum.ewm.event.domain.Compilation; @Repository public interface JpaCompilationRepository extends JpaRepository { diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/JpaEventRepository.java b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/JpaEventRepository.java similarity index 79% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/JpaEventRepository.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/JpaEventRepository.java index c332c57..1ce4e3d 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/persistence/JpaEventRepository.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/infrastructure/persistence/JpaEventRepository.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.infrastructure.persistence; +package ru.practicum.ewm.event.infrastructure.persistence; import java.util.Optional; import org.springframework.data.domain.Page; @@ -6,8 +6,8 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.querydsl.QuerydslPredicateExecutor; import org.springframework.stereotype.Repository; -import ru.practicum.explorewithme.event.domain.Event; -import ru.practicum.explorewithme.event.domain.EventState; +import ru.practicum.ewm.event.domain.Event; +import ru.practicum.ewm.event.domain.EventState; @Repository public interface JpaEventRepository extends JpaRepository, QuerydslPredicateExecutor { diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/admin/AdminCategoryController.java b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/admin/AdminCategoryController.java similarity index 88% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/admin/AdminCategoryController.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/presentation/admin/AdminCategoryController.java index f71a50d..d16640e 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/admin/AdminCategoryController.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/admin/AdminCategoryController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.presentation.admin; +package ru.practicum.ewm.event.presentation.admin; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -13,9 +13,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.event.dto.CategoryDto; -import ru.practicum.explorewithme.api.client.event.dto.NewCategoryDto; -import ru.practicum.explorewithme.event.application.CategoryService; +import ru.practicum.ewm.api.client.event.dto.CategoryDto; +import ru.practicum.ewm.api.client.event.dto.NewCategoryDto; +import ru.practicum.ewm.event.application.CategoryService; @RestController @RequestMapping("/admin/categories") diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/admin/AdminCompilationController.java b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/admin/AdminCompilationController.java similarity index 86% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/admin/AdminCompilationController.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/presentation/admin/AdminCompilationController.java index 3795c1f..d79eecb 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/admin/AdminCompilationController.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/admin/AdminCompilationController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.presentation.admin; +package ru.practicum.ewm.event.presentation.admin; import jakarta.validation.Valid; import jakarta.validation.constraints.Positive; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.event.dto.CompilationDto; -import ru.practicum.explorewithme.api.client.event.dto.NewCompilationDto; -import ru.practicum.explorewithme.api.client.event.dto.UpdateCompilationRequestDto; -import ru.practicum.explorewithme.event.application.CompilationService; +import ru.practicum.ewm.api.client.event.dto.CompilationDto; +import ru.practicum.ewm.api.client.event.dto.NewCompilationDto; +import ru.practicum.ewm.api.client.event.dto.UpdateCompilationRequestDto; +import ru.practicum.ewm.event.application.CompilationService; @RestController @RequestMapping("/admin/compilations") diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/admin/AdminEventController.java b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/admin/AdminEventController.java similarity index 91% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/admin/AdminEventController.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/presentation/admin/AdminEventController.java index 0f68872..3cc21c4 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/admin/AdminEventController.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/admin/AdminEventController.java @@ -1,6 +1,6 @@ -package ru.practicum.explorewithme.event.presentation.admin; +package ru.practicum.ewm.event.presentation.admin; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; +import static ru.practicum.ewm.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; import jakarta.validation.Valid; import jakarta.validation.constraints.Positive; @@ -18,10 +18,10 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.event.dto.EventFullDto; -import ru.practicum.explorewithme.api.client.event.dto.UpdateEventAdminRequestDto; -import ru.practicum.explorewithme.event.application.params.AdminEventSearchParams; -import ru.practicum.explorewithme.event.application.EventService; +import ru.practicum.ewm.api.client.event.dto.EventFullDto; +import ru.practicum.ewm.api.client.event.dto.UpdateEventAdminRequestDto; +import ru.practicum.ewm.event.application.params.AdminEventSearchParams; +import ru.practicum.ewm.event.application.EventService; @RestController @RequestMapping("/admin/events") diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/error/GlobalExceptionHandler.java b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/error/GlobalExceptionHandler.java similarity index 90% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/error/GlobalExceptionHandler.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/presentation/error/GlobalExceptionHandler.java index 2e004e3..dfefde7 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/error/GlobalExceptionHandler.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/error/GlobalExceptionHandler.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.presentation.error; +package ru.practicum.ewm.event.presentation.error; import java.time.LocalDateTime; import lombok.extern.slf4j.Slf4j; @@ -7,12 +7,12 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; -import ru.practicum.explorewithme.api.error.ApiError; -import ru.practicum.explorewithme.api.error.BaseExceptionHandler; -import ru.practicum.explorewithme.api.error.BusinessRuleViolationException; -import ru.practicum.explorewithme.api.error.EntityAlreadyExistsException; -import ru.practicum.explorewithme.api.error.EntityDeletedException; -import ru.practicum.explorewithme.api.error.EntityNotFoundException; +import ru.practicum.ewm.api.error.ApiError; +import ru.practicum.ewm.api.error.BaseExceptionHandler; +import ru.practicum.ewm.api.error.BusinessRuleViolationException; +import ru.practicum.ewm.api.error.EntityAlreadyExistsException; +import ru.practicum.ewm.api.error.EntityDeletedException; +import ru.practicum.ewm.api.error.EntityNotFoundException; @RestControllerAdvice @Slf4j diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/internal/InternalEventController.java b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/internal/InternalEventController.java similarity index 71% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/internal/InternalEventController.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/presentation/internal/InternalEventController.java index eabc354..71611bc 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/internal/InternalEventController.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/internal/InternalEventController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.presentation.internal; +package ru.practicum.ewm.event.presentation.internal; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -6,9 +6,9 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.event.EventClient; -import ru.practicum.explorewithme.api.client.event.dto.EventInternalDto; -import ru.practicum.explorewithme.event.application.EventService; +import ru.practicum.ewm.api.client.event.EventClient; +import ru.practicum.ewm.api.client.event.dto.EventInternalDto; +import ru.practicum.ewm.event.application.EventService; @RestController @RequestMapping("/internal/events") diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/priv/PrivateEventController.java b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/priv/PrivateEventController.java similarity index 93% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/priv/PrivateEventController.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/presentation/priv/PrivateEventController.java index c062d04..5b66ce9 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/priv/PrivateEventController.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/priv/PrivateEventController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.presentation.priv; +package ru.practicum.ewm.event.presentation.priv; import jakarta.validation.Valid; import jakarta.validation.constraints.Positive; @@ -18,11 +18,11 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.event.dto.EventFullDto; -import ru.practicum.explorewithme.api.client.event.dto.EventShortDto; -import ru.practicum.explorewithme.api.client.event.dto.NewEventDto; -import ru.practicum.explorewithme.api.client.event.dto.UpdateEventUserRequestDto; -import ru.practicum.explorewithme.event.application.EventService; +import ru.practicum.ewm.api.client.event.dto.EventFullDto; +import ru.practicum.ewm.api.client.event.dto.EventShortDto; +import ru.practicum.ewm.api.client.event.dto.NewEventDto; +import ru.practicum.ewm.api.client.event.dto.UpdateEventUserRequestDto; +import ru.practicum.ewm.event.application.EventService; @RestController @RequestMapping("/users/{userId}/events") diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/pub/PublicCategoryController.java b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/pub/PublicCategoryController.java similarity index 90% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/pub/PublicCategoryController.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/presentation/pub/PublicCategoryController.java index d6180c3..b0ba27c 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/pub/PublicCategoryController.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/pub/PublicCategoryController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.presentation.pub; +package ru.practicum.ewm.event.presentation.pub; import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.PositiveOrZero; @@ -13,8 +13,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.event.dto.CategoryDto; -import ru.practicum.explorewithme.event.application.CategoryService; +import ru.practicum.ewm.api.client.event.dto.CategoryDto; +import ru.practicum.ewm.event.application.CategoryService; @RestController @RequestMapping("/categories") diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/pub/PublicCompilationController.java b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/pub/PublicCompilationController.java similarity index 90% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/pub/PublicCompilationController.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/presentation/pub/PublicCompilationController.java index abebeba..7a64a02 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/pub/PublicCompilationController.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/pub/PublicCompilationController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.presentation.pub; +package ru.practicum.ewm.event.presentation.pub; import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.PositiveOrZero; @@ -13,8 +13,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.event.dto.CompilationDto; -import ru.practicum.explorewithme.event.application.CompilationService; +import ru.practicum.ewm.api.client.event.dto.CompilationDto; +import ru.practicum.ewm.event.application.CompilationService; @RestController @RequestMapping("/compilations") diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/pub/PublicEventController.java b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/pub/PublicEventController.java similarity index 85% rename from core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/pub/PublicEventController.java rename to core/event-service/src/main/java/ru/practicum/ewm/event/presentation/pub/PublicEventController.java index 402b35b..3abadfd 100644 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/presentation/pub/PublicEventController.java +++ b/core/event-service/src/main/java/ru/practicum/ewm/event/presentation/pub/PublicEventController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.event.presentation.pub; +package ru.practicum.ewm.event.presentation.pub; import jakarta.validation.Valid; import jakarta.validation.constraints.Positive; @@ -15,11 +15,11 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.event.dto.EventFullDto; -import ru.practicum.explorewithme.api.client.event.dto.EventShortDto; -import ru.practicum.explorewithme.event.application.EventService; -import ru.practicum.explorewithme.event.application.params.PublicEventSearchParams; -import ru.practicum.explorewithme.stats.client.aop.LogStatsHit; +import ru.practicum.ewm.api.client.event.dto.EventFullDto; +import ru.practicum.ewm.api.client.event.dto.EventShortDto; +import ru.practicum.ewm.event.application.EventService; +import ru.practicum.ewm.event.application.params.PublicEventSearchParams; +import ru.practicum.ewm.stats.client.aop.LogStatsHit; @RestController @RequestMapping("/events") diff --git a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/EnumMapper.java b/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/EnumMapper.java deleted file mode 100644 index 0fe1f13..0000000 --- a/core/event-service/src/main/java/ru/practicum/explorewithme/event/infrastructure/mapper/EnumMapper.java +++ /dev/null @@ -1,22 +0,0 @@ -package ru.practicum.explorewithme.event.infrastructure.mapper; - -import org.mapstruct.Mapper; -import ru.practicum.explorewithme.api.client.event.enums.EventState; - -@Mapper(componentModel = "spring") -public class EnumMapper { - - public EventState toApiEventState(ru.practicum.explorewithme.event.domain.EventState eventState) { - if (eventState == null) { - return null; - } - return EventState.valueOf(eventState.name()); - } - - public ru.practicum.explorewithme.event.domain.EventState toModelEventState(EventState eventState) { - if (eventState == null) { - return null; - } - return ru.practicum.explorewithme.event.domain.EventState.valueOf(eventState.name()); - } -} \ No newline at end of file diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/autoconfiguration/DtoMapperAutoConfiguration.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/autoconfiguration/DtoMapperAutoConfiguration.java similarity index 75% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/autoconfiguration/DtoMapperAutoConfiguration.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/autoconfiguration/DtoMapperAutoConfiguration.java index c132c83..77208f4 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/autoconfiguration/DtoMapperAutoConfiguration.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/autoconfiguration/DtoMapperAutoConfiguration.java @@ -1,9 +1,9 @@ -package ru.practicum.explorewithme.api.autoconfiguration; +package ru.practicum.ewm.api.autoconfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.context.annotation.ComponentScan; -import ru.practicum.explorewithme.api.utility.DtoMapper; +import ru.practicum.ewm.api.utility.DtoMapper; @AutoConfiguration @ConditionalOnClass(DtoMapper.class) diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/AbstractErrorDecoder.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/AbstractErrorDecoder.java similarity index 89% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/AbstractErrorDecoder.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/AbstractErrorDecoder.java index 3d8f9cd..ea325d4 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/AbstractErrorDecoder.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/AbstractErrorDecoder.java @@ -1,12 +1,12 @@ -package ru.practicum.explorewithme.api.client; +package ru.practicum.ewm.api.client; import feign.Response; import feign.codec.ErrorDecoder; import java.util.Map; import java.util.function.Function; -import ru.practicum.explorewithme.api.error.ApiError; -import ru.practicum.explorewithme.api.error.RemoteServiceException; -import ru.practicum.explorewithme.api.utility.ErrorParser; +import ru.practicum.ewm.api.error.ApiError; +import ru.practicum.ewm.api.error.RemoteServiceException; +import ru.practicum.ewm.api.utility.ErrorParser; public abstract class AbstractErrorDecoder implements ErrorDecoder { private Map> errorHandlers; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/CommentAdminDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/CommentAdminDto.java similarity index 77% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/CommentAdminDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/CommentAdminDto.java index 57457a0..61b179a 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/CommentAdminDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/CommentAdminDto.java @@ -1,6 +1,6 @@ -package ru.practicum.explorewithme.api.client.comment.dto; +package ru.practicum.ewm.api.client.comment.dto; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; +import static ru.practicum.ewm.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; import com.fasterxml.jackson.annotation.JsonFormat; import java.time.LocalDateTime; @@ -10,7 +10,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.FieldDefaults; -import ru.practicum.explorewithme.api.client.user.dto.UserShortDto; +import ru.practicum.ewm.api.client.user.dto.UserShortDto; @Data @NoArgsConstructor diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/CommentDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/CommentDto.java similarity index 76% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/CommentDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/CommentDto.java index 73bba9d..7fa3506 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/CommentDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/CommentDto.java @@ -1,6 +1,6 @@ -package ru.practicum.explorewithme.api.client.comment.dto; +package ru.practicum.ewm.api.client.comment.dto; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; +import static ru.practicum.ewm.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AccessLevel; @@ -11,7 +11,7 @@ import lombok.experimental.FieldDefaults; import java.time.LocalDateTime; -import ru.practicum.explorewithme.api.client.user.dto.UserShortDto; +import ru.practicum.ewm.api.client.user.dto.UserShortDto; @Data @NoArgsConstructor diff --git a/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/CommentDtoWithAuthor.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/CommentDtoWithAuthor.java new file mode 100644 index 0000000..5f50530 --- /dev/null +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/CommentDtoWithAuthor.java @@ -0,0 +1,8 @@ +package ru.practicum.ewm.api.client.comment.dto; + +import ru.practicum.ewm.api.client.user.dto.UserShortDto; + +public interface CommentDtoWithAuthor { + + void setAuthor(UserShortDto author); +} diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/NewCommentDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/NewCommentDto.java similarity index 90% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/NewCommentDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/NewCommentDto.java index 96350d9..399dace 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/NewCommentDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/NewCommentDto.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.comment.dto; +package ru.practicum.ewm.api.client.comment.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/UpdateCommentDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/UpdateCommentDto.java similarity index 90% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/UpdateCommentDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/UpdateCommentDto.java index ab15316..e32f2f2 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/UpdateCommentDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/comment/dto/UpdateCommentDto.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.comment.dto; +package ru.practicum.ewm.api.client.comment.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/EventClient.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/EventClient.java similarity index 82% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/EventClient.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/EventClient.java index 86861f3..e4c6b2b 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/EventClient.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/EventClient.java @@ -1,9 +1,9 @@ -package ru.practicum.explorewithme.api.client.event; +package ru.practicum.ewm.api.client.event; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -import ru.practicum.explorewithme.api.client.event.dto.EventInternalDto; +import ru.practicum.ewm.api.client.event.dto.EventInternalDto; @FeignClient(name = "event-service", path = "/internal/events", configuration = EventClientConfiguration.class) public interface EventClient { diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/EventClientConfiguration.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/EventClientConfiguration.java similarity index 82% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/EventClientConfiguration.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/EventClientConfiguration.java index 58ef07d..e3b4e4f 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/EventClientConfiguration.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/EventClientConfiguration.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.event; +package ru.practicum.ewm.api.client.event; import feign.codec.ErrorDecoder; import org.springframework.context.annotation.Bean; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/EventClientErrorDecoder.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/EventClientErrorDecoder.java similarity index 58% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/EventClientErrorDecoder.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/EventClientErrorDecoder.java index d033c07..77393d5 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/EventClientErrorDecoder.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/EventClientErrorDecoder.java @@ -1,10 +1,10 @@ -package ru.practicum.explorewithme.api.client.event; +package ru.practicum.ewm.api.client.event; import java.util.Map; import java.util.function.Function; -import ru.practicum.explorewithme.api.client.AbstractErrorDecoder; -import ru.practicum.explorewithme.api.error.BusinessRuleViolationException; -import ru.practicum.explorewithme.api.error.EntityNotFoundException; +import ru.practicum.ewm.api.client.AbstractErrorDecoder; +import ru.practicum.ewm.api.error.BusinessRuleViolationException; +import ru.practicum.ewm.api.error.EntityNotFoundException; public class EventClientErrorDecoder extends AbstractErrorDecoder { diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/CategoryDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/CategoryDto.java similarity index 85% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/CategoryDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/CategoryDto.java index a9eb383..8b9ce45 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/CategoryDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/CategoryDto.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.event.dto; +package ru.practicum.ewm.api.client.event.dto; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/CompilationDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/CompilationDto.java similarity index 87% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/CompilationDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/CompilationDto.java index 928a907..4bce1ee 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/CompilationDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/CompilationDto.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.event.dto; +package ru.practicum.ewm.api.client.event.dto; import java.util.Set; import lombok.AccessLevel; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/EventDtoWithConfirmedRequests.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/EventDtoWithConfirmedRequests.java similarity index 66% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/EventDtoWithConfirmedRequests.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/EventDtoWithConfirmedRequests.java index 9782f2d..41f8c34 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/EventDtoWithConfirmedRequests.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/EventDtoWithConfirmedRequests.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.event.dto; +package ru.practicum.ewm.api.client.event.dto; public interface EventDtoWithConfirmedRequests { Long getId(); diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/EventFullDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/EventFullDto.java similarity index 79% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/EventFullDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/EventFullDto.java index 6a92bf8..acf7c0f 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/EventFullDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/EventFullDto.java @@ -1,6 +1,6 @@ -package ru.practicum.explorewithme.api.client.event.dto; +package ru.practicum.ewm.api.client.event.dto; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; +import static ru.practicum.ewm.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; import com.fasterxml.jackson.annotation.JsonFormat; import java.time.LocalDateTime; @@ -10,8 +10,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.FieldDefaults; -import ru.practicum.explorewithme.api.client.user.dto.UserShortDto; -import ru.practicum.explorewithme.api.client.event.enums.EventState; +import ru.practicum.ewm.api.client.user.dto.UserShortDto; +import ru.practicum.ewm.api.client.event.enums.EventState; @Data @AllArgsConstructor diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/EventInternalDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/EventInternalDto.java similarity index 81% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/EventInternalDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/EventInternalDto.java index 5b8f2ba..5b28d99 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/EventInternalDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/EventInternalDto.java @@ -1,8 +1,8 @@ -package ru.practicum.explorewithme.api.client.event.dto; +package ru.practicum.ewm.api.client.event.dto; import lombok.Data; import lombok.NoArgsConstructor; -import ru.practicum.explorewithme.api.client.event.enums.EventState; +import ru.practicum.ewm.api.client.event.enums.EventState; /** * A DTO for service-to-service communication. diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/EventShortDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/EventShortDto.java similarity index 76% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/EventShortDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/EventShortDto.java index 6e6e376..3bd77e2 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/EventShortDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/EventShortDto.java @@ -1,6 +1,6 @@ -package ru.practicum.explorewithme.api.client.event.dto; +package ru.practicum.ewm.api.client.event.dto; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; +import static ru.practicum.ewm.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; import com.fasterxml.jackson.annotation.JsonFormat; import java.time.LocalDateTime; @@ -10,7 +10,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.FieldDefaults; -import ru.practicum.explorewithme.api.client.user.dto.UserShortDto; +import ru.practicum.ewm.api.client.user.dto.UserShortDto; @Data @AllArgsConstructor diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/LocationDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/LocationDto.java similarity index 87% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/LocationDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/LocationDto.java index 19da489..0d57c6c 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/LocationDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/LocationDto.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.event.dto; +package ru.practicum.ewm.api.client.event.dto; import jakarta.validation.constraints.PositiveOrZero; import lombok.AllArgsConstructor; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/NewCategoryDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/NewCategoryDto.java similarity index 90% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/NewCategoryDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/NewCategoryDto.java index 580ab50..bb9e298 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/NewCategoryDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/NewCategoryDto.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.event.dto; +package ru.practicum.ewm.api.client.event.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/NewCompilationDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/NewCompilationDto.java similarity index 92% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/NewCompilationDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/NewCompilationDto.java index 08ae2a5..b37eb6c 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/NewCompilationDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/NewCompilationDto.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.event.dto; +package ru.practicum.ewm.api.client.event.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/NewEventDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/NewEventDto.java similarity index 93% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/NewEventDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/NewEventDto.java index c132c52..26b4b1b 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/NewEventDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/NewEventDto.java @@ -1,6 +1,6 @@ -package ru.practicum.explorewithme.api.client.event.dto; +package ru.practicum.ewm.api.client.event.dto; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; +import static ru.practicum.ewm.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/UpdateCompilationRequestDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/UpdateCompilationRequestDto.java similarity index 90% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/UpdateCompilationRequestDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/UpdateCompilationRequestDto.java index 090c120..bb614b5 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/UpdateCompilationRequestDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/UpdateCompilationRequestDto.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.event.dto; +package ru.practicum.ewm.api.client.event.dto; import jakarta.validation.constraints.Size; import java.util.List; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/UpdateEventAdminRequestDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/UpdateEventAdminRequestDto.java similarity index 90% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/UpdateEventAdminRequestDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/UpdateEventAdminRequestDto.java index 1a53e2f..fffa101 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/UpdateEventAdminRequestDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/UpdateEventAdminRequestDto.java @@ -1,6 +1,6 @@ -package ru.practicum.explorewithme.api.client.event.dto; +package ru.practicum.ewm.api.client.event.dto; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; +import static ru.practicum.ewm.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.validation.constraints.Future; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/UpdateEventUserRequestDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/UpdateEventUserRequestDto.java similarity index 90% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/UpdateEventUserRequestDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/UpdateEventUserRequestDto.java index 7c16e23..48600f9 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/dto/UpdateEventUserRequestDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/dto/UpdateEventUserRequestDto.java @@ -1,6 +1,6 @@ -package ru.practicum.explorewithme.api.client.event.dto; +package ru.practicum.ewm.api.client.event.dto; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; +import static ru.practicum.ewm.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.validation.constraints.Future; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/enums/EventState.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/enums/EventState.java similarity index 83% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/enums/EventState.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/enums/EventState.java index 94332c9..7a83224 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/event/enums/EventState.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/event/enums/EventState.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.event.enums; +package ru.practicum.ewm.api.client.event.enums; /** * Состояния жизненного цикла события diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/RequestClient.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/RequestClient.java similarity index 93% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/RequestClient.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/RequestClient.java index 19d7a0e..4a8cc6d 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/RequestClient.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/RequestClient.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.request; +package ru.practicum.ewm.api.client.request; import java.util.Map; import java.util.Set; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/RequestClientConfiguration.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/RequestClientConfiguration.java similarity index 81% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/RequestClientConfiguration.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/RequestClientConfiguration.java index 0e163f5..ffc910a 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/RequestClientConfiguration.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/RequestClientConfiguration.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.request; +package ru.practicum.ewm.api.client.request; import feign.codec.ErrorDecoder; import org.springframework.context.annotation.Bean; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/RequestClientErrorDecoder.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/RequestClientErrorDecoder.java similarity index 58% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/RequestClientErrorDecoder.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/RequestClientErrorDecoder.java index d97cd7c..f355609 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/RequestClientErrorDecoder.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/RequestClientErrorDecoder.java @@ -1,10 +1,10 @@ -package ru.practicum.explorewithme.api.client.request; +package ru.practicum.ewm.api.client.request; import java.util.Map; import java.util.function.Function; -import ru.practicum.explorewithme.api.client.AbstractErrorDecoder; -import ru.practicum.explorewithme.api.error.BusinessRuleViolationException; -import ru.practicum.explorewithme.api.error.EntityNotFoundException; +import ru.practicum.ewm.api.client.AbstractErrorDecoder; +import ru.practicum.ewm.api.error.BusinessRuleViolationException; +import ru.practicum.ewm.api.error.EntityNotFoundException; public class RequestClientErrorDecoder extends AbstractErrorDecoder { diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/dto/EventRequestStatusUpdateRequestDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/dto/EventRequestStatusUpdateRequestDto.java similarity index 80% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/dto/EventRequestStatusUpdateRequestDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/dto/EventRequestStatusUpdateRequestDto.java index 69fd1dd..ffa35d0 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/dto/EventRequestStatusUpdateRequestDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/dto/EventRequestStatusUpdateRequestDto.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.request.dto; +package ru.practicum.ewm.api.client.request.dto; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; @@ -9,7 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.FieldDefaults; -import ru.practicum.explorewithme.api.client.request.enums.RequestStatus; +import ru.practicum.ewm.api.client.request.enums.RequestStatus; @Data @Builder diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/dto/EventRequestStatusUpdateResultDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/dto/EventRequestStatusUpdateResultDto.java similarity index 90% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/dto/EventRequestStatusUpdateResultDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/dto/EventRequestStatusUpdateResultDto.java index 3be2b1c..bd58715 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/dto/EventRequestStatusUpdateResultDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/dto/EventRequestStatusUpdateResultDto.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.request.dto; +package ru.practicum.ewm.api.client.request.dto; import java.util.ArrayList; import java.util.List; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/dto/ParticipationRequestDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/dto/ParticipationRequestDto.java similarity index 75% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/dto/ParticipationRequestDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/dto/ParticipationRequestDto.java index 5823217..e6bbd00 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/dto/ParticipationRequestDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/dto/ParticipationRequestDto.java @@ -1,6 +1,6 @@ -package ru.practicum.explorewithme.api.client.request.dto; +package ru.practicum.ewm.api.client.request.dto; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; +import static ru.practicum.ewm.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; @@ -11,7 +11,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.FieldDefaults; -import ru.practicum.explorewithme.api.client.request.enums.RequestStatus; +import ru.practicum.ewm.api.client.request.enums.RequestStatus; @Data diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/domain/RequestStatus.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/enums/RequestStatus.java similarity index 87% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/domain/RequestStatus.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/enums/RequestStatus.java index d82ec22..1769916 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/domain/RequestStatus.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/request/enums/RequestStatus.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.request.domain; +package ru.practicum.ewm.api.client.request.enums; /** * Статусы запросов на участие в событии diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/UserClient.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/UserClient.java similarity index 93% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/UserClient.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/UserClient.java index f2d1991..f700e52 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/UserClient.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/UserClient.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.user; +package ru.practicum.ewm.api.client.user; import java.util.List; import org.springframework.cloud.openfeign.FeignClient; @@ -7,7 +7,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; -import ru.practicum.explorewithme.api.client.user.dto.UserDto; +import ru.practicum.ewm.api.client.user.dto.UserDto; @FeignClient(name = "user-service", path = "/internal/users", configuration = UserClientConfiguration.class) public interface UserClient { diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/UserClientConfiguration.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/UserClientConfiguration.java similarity index 82% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/UserClientConfiguration.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/UserClientConfiguration.java index a1ab106..cefc335 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/UserClientConfiguration.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/UserClientConfiguration.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.user; +package ru.practicum.ewm.api.client.user; import feign.codec.ErrorDecoder; import org.springframework.context.annotation.Bean; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/UserClientErrorDecoder.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/UserClientErrorDecoder.java similarity index 62% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/UserClientErrorDecoder.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/UserClientErrorDecoder.java index bee2600..fa6e357 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/UserClientErrorDecoder.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/UserClientErrorDecoder.java @@ -1,9 +1,9 @@ -package ru.practicum.explorewithme.api.client.user; +package ru.practicum.ewm.api.client.user; import java.util.Map; import java.util.function.Function; -import ru.practicum.explorewithme.api.client.AbstractErrorDecoder; -import ru.practicum.explorewithme.api.error.EntityNotFoundException; +import ru.practicum.ewm.api.client.AbstractErrorDecoder; +import ru.practicum.ewm.api.error.EntityNotFoundException; public class UserClientErrorDecoder extends AbstractErrorDecoder { diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/dto/NewUserRequestDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/dto/NewUserRequestDto.java similarity index 93% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/dto/NewUserRequestDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/dto/NewUserRequestDto.java index 0812df2..9302b93 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/dto/NewUserRequestDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/dto/NewUserRequestDto.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.user.dto; +package ru.practicum.ewm.api.client.user.dto; import jakarta.validation.constraints.Size; import lombok.*; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/dto/UserDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/dto/UserDto.java similarity index 80% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/dto/UserDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/dto/UserDto.java index 0419355..a2b315d 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/dto/UserDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/dto/UserDto.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.user.dto; +package ru.practicum.ewm.api.client.user.dto; import lombok.*; import lombok.experimental.FieldDefaults; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/dto/UserShortDto.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/dto/UserShortDto.java similarity index 85% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/dto/UserShortDto.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/dto/UserShortDto.java index 64b5534..ec49335 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/user/dto/UserShortDto.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/client/user/dto/UserShortDto.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.user.dto; +package ru.practicum.ewm.api.client.user.dto; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/constants/DateTimeConstants.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/constants/DateTimeConstants.java similarity index 95% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/constants/DateTimeConstants.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/constants/DateTimeConstants.java index 0ed45d5..565bb7f 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/constants/DateTimeConstants.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/constants/DateTimeConstants.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.constants; +package ru.practicum.ewm.api.constants; import java.time.format.DateTimeFormatter; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/ApiError.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/ApiError.java similarity index 80% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/ApiError.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/error/ApiError.java index c29146b..45887cf 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/ApiError.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/ApiError.java @@ -1,6 +1,6 @@ -package ru.practicum.explorewithme.api.error; +package ru.practicum.ewm.api.error; -import static ru.practicum.explorewithme.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; +import static ru.practicum.ewm.api.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/BaseExceptionHandler.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/BaseExceptionHandler.java similarity index 99% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/BaseExceptionHandler.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/error/BaseExceptionHandler.java index 06ba96b..52746fc 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/BaseExceptionHandler.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/BaseExceptionHandler.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.error; +package ru.practicum.ewm.api.error; import jakarta.validation.ConstraintViolation; import jakarta.validation.ConstraintViolationException; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/BusinessRuleViolationException.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/BusinessRuleViolationException.java similarity index 78% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/BusinessRuleViolationException.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/error/BusinessRuleViolationException.java index 9611674..5ca2df7 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/BusinessRuleViolationException.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/BusinessRuleViolationException.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.error; +package ru.practicum.ewm.api.error; public class BusinessRuleViolationException extends RuntimeException { diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/EntityAlreadyExistsException.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/EntityAlreadyExistsException.java similarity index 88% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/EntityAlreadyExistsException.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/error/EntityAlreadyExistsException.java index 3a8b656..5b3c991 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/EntityAlreadyExistsException.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/EntityAlreadyExistsException.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.error; +package ru.practicum.ewm.api.error; public class EntityAlreadyExistsException extends RuntimeException { diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/EntityDeletedException.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/EntityDeletedException.java similarity index 88% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/EntityDeletedException.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/error/EntityDeletedException.java index 026c6ea..3185d6a 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/EntityDeletedException.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/EntityDeletedException.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.error; +package ru.practicum.ewm.api.error; public class EntityDeletedException extends RuntimeException { diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/EntityNotFoundException.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/EntityNotFoundException.java similarity index 87% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/EntityNotFoundException.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/error/EntityNotFoundException.java index 0e30ef0..4328eba 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/EntityNotFoundException.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/EntityNotFoundException.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.error; +package ru.practicum.ewm.api.error; public class EntityNotFoundException extends RuntimeException { diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/RemoteServiceException.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/RemoteServiceException.java similarity index 89% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/RemoteServiceException.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/error/RemoteServiceException.java index 96a954f..fdf67c4 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/error/RemoteServiceException.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/error/RemoteServiceException.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.error; +package ru.practicum.ewm.api.error; /** * A generic runtime exception used to wrap unexpected errors diff --git a/core/interaction-api/src/main/java/ru/practicum/ewm/api/utility/DtoMapper.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/utility/DtoMapper.java new file mode 100644 index 0000000..3b24aa1 --- /dev/null +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/utility/DtoMapper.java @@ -0,0 +1,13 @@ +package ru.practicum.ewm.api.utility; + + +import org.mapstruct.Mapper; +import ru.practicum.ewm.api.client.user.dto.UserDto; +import ru.practicum.ewm.api.client.user.dto.UserShortDto; + +@Mapper(componentModel = "spring") +public interface DtoMapper { + + UserShortDto toUserShortDto(UserDto userDto); + +} diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/utility/ErrorParser.java b/core/interaction-api/src/main/java/ru/practicum/ewm/api/utility/ErrorParser.java similarity index 88% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/utility/ErrorParser.java rename to core/interaction-api/src/main/java/ru/practicum/ewm/api/utility/ErrorParser.java index 625a4b3..f087f8e 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/utility/ErrorParser.java +++ b/core/interaction-api/src/main/java/ru/practicum/ewm/api/utility/ErrorParser.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.utility; +package ru.practicum.ewm.api.utility; import com.fasterxml.jackson.databind.ObjectMapper; import feign.Response; @@ -6,7 +6,7 @@ import java.io.InputStream; import java.util.Optional; import lombok.extern.slf4j.Slf4j; -import ru.practicum.explorewithme.api.error.ApiError; +import ru.practicum.ewm.api.error.ApiError; @Slf4j public class ErrorParser { diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/CommentDtoWithAuthor.java b/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/CommentDtoWithAuthor.java deleted file mode 100644 index 2907b3e..0000000 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/comment/dto/CommentDtoWithAuthor.java +++ /dev/null @@ -1,8 +0,0 @@ -package ru.practicum.explorewithme.api.client.comment.dto; - -import ru.practicum.explorewithme.api.client.user.dto.UserShortDto; - -public interface CommentDtoWithAuthor { - - void setAuthor(UserShortDto author); -} diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/utility/DtoMapper.java b/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/utility/DtoMapper.java deleted file mode 100644 index 40fae45..0000000 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/utility/DtoMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package ru.practicum.explorewithme.api.utility; - - -import org.mapstruct.Mapper; -import ru.practicum.explorewithme.api.client.user.dto.UserDto; -import ru.practicum.explorewithme.api.client.user.dto.UserShortDto; - -@Mapper(componentModel = "spring") -public interface DtoMapper { - - UserShortDto toUserShortDto(UserDto userDto); - -} diff --git a/core/interaction-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/core/interaction-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 15a92b1..400bfa4 100644 --- a/core/interaction-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/core/interaction-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1 @@ -ru.practicum.explorewithme.api.autoconfiguration.DtoMapperAutoConfiguration \ No newline at end of file +autoconfiguration.ru.practicum.ewm.api.DtoMapperAutoConfiguration \ No newline at end of file diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/RequestServiceApplication.java b/core/request-service/src/main/java/ru/practicum/ewm/request/RequestServiceApplication.java similarity index 77% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/RequestServiceApplication.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/RequestServiceApplication.java index 055278b..b7cdf57 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/RequestServiceApplication.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/RequestServiceApplication.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.request; +package ru.practicum.ewm.request; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -8,8 +8,8 @@ @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients(basePackages = { - "ru.practicum.explorewithme.api.client.user", - "ru.practicum.explorewithme.api.client.event" + "ru.practicum.ewm.api.client.user", + "ru.practicum.ewm.api.client.event" }) public class RequestServiceApplication { diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/application/RequestService.java b/core/request-service/src/main/java/ru/practicum/ewm/request/application/RequestService.java similarity index 66% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/application/RequestService.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/application/RequestService.java index 90332f3..8d36dbc 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/application/RequestService.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/application/RequestService.java @@ -1,12 +1,12 @@ -package ru.practicum.explorewithme.request.application; +package ru.practicum.ewm.request.application; import jakarta.validation.constraints.Positive; import java.util.List; import java.util.Map; import java.util.Set; -import ru.practicum.explorewithme.api.client.request.dto.EventRequestStatusUpdateResultDto; -import ru.practicum.explorewithme.api.client.request.dto.ParticipationRequestDto; -import ru.practicum.explorewithme.request.application.params.EventRequestStatusUpdateRequestParams; +import ru.practicum.ewm.api.client.request.dto.EventRequestStatusUpdateResultDto; +import ru.practicum.ewm.api.client.request.dto.ParticipationRequestDto; +import ru.practicum.ewm.request.application.params.EventRequestStatusUpdateRequestParams; public interface RequestService { diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/application/RequestServiceImpl.java b/core/request-service/src/main/java/ru/practicum/ewm/request/application/RequestServiceImpl.java similarity index 88% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/application/RequestServiceImpl.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/application/RequestServiceImpl.java index bf163c5..513024c 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/application/RequestServiceImpl.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/application/RequestServiceImpl.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.request.application; +package ru.practicum.ewm.request.application; import java.util.Comparator; import java.util.LinkedHashMap; @@ -11,19 +11,19 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.practicum.explorewithme.api.client.event.EventClient; -import ru.practicum.explorewithme.api.client.event.dto.EventInternalDto; -import ru.practicum.explorewithme.api.client.event.enums.EventState; -import ru.practicum.explorewithme.api.client.request.dto.EventRequestStatusUpdateResultDto; -import ru.practicum.explorewithme.api.client.request.dto.ParticipationRequestDto; -import ru.practicum.explorewithme.api.client.user.UserClient; -import ru.practicum.explorewithme.api.error.BusinessRuleViolationException; -import ru.practicum.explorewithme.api.error.EntityNotFoundException; -import ru.practicum.explorewithme.request.application.params.EventRequestStatusUpdateRequestParams; -import ru.practicum.explorewithme.request.domain.ParticipationRequest; -import ru.practicum.explorewithme.request.domain.RequestRepository; -import ru.practicum.explorewithme.request.domain.RequestStatus; -import ru.practicum.explorewithme.request.infrastructure.mapper.RequestMapper; +import ru.practicum.ewm.api.client.event.EventClient; +import ru.practicum.ewm.api.client.event.dto.EventInternalDto; +import ru.practicum.ewm.api.client.event.enums.EventState; +import ru.practicum.ewm.api.client.request.dto.EventRequestStatusUpdateResultDto; +import ru.practicum.ewm.api.client.request.dto.ParticipationRequestDto; +import ru.practicum.ewm.api.client.user.UserClient; +import ru.practicum.ewm.api.error.BusinessRuleViolationException; +import ru.practicum.ewm.api.error.EntityNotFoundException; +import ru.practicum.ewm.request.application.params.EventRequestStatusUpdateRequestParams; +import ru.practicum.ewm.request.domain.ParticipationRequest; +import ru.practicum.ewm.request.domain.RequestRepository; +import ru.practicum.ewm.request.domain.RequestStatus; +import ru.practicum.ewm.request.infrastructure.mapper.RequestMapper; @Service @RequiredArgsConstructor diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/application/params/EventRequestStatusUpdateRequestParams.java b/core/request-service/src/main/java/ru/practicum/ewm/request/application/params/EventRequestStatusUpdateRequestParams.java similarity index 75% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/application/params/EventRequestStatusUpdateRequestParams.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/application/params/EventRequestStatusUpdateRequestParams.java index 170c545..c6218bb 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/application/params/EventRequestStatusUpdateRequestParams.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/application/params/EventRequestStatusUpdateRequestParams.java @@ -1,11 +1,11 @@ -package ru.practicum.explorewithme.request.application.params; +package ru.practicum.ewm.request.application.params; import java.util.List; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.EqualsAndHashCode; import lombok.Getter; -import ru.practicum.explorewithme.request.domain.RequestStatus; +import ru.practicum.ewm.request.domain.RequestStatus; @Getter @Builder diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/domain/ParticipationRequest.java b/core/request-service/src/main/java/ru/practicum/ewm/request/domain/ParticipationRequest.java similarity index 97% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/domain/ParticipationRequest.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/domain/ParticipationRequest.java index 84e61d6..2ef88d9 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/domain/ParticipationRequest.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/domain/ParticipationRequest.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.request.domain; +package ru.practicum.ewm.request.domain; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/domain/RequestRepository.java b/core/request-service/src/main/java/ru/practicum/ewm/request/domain/RequestRepository.java similarity index 96% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/domain/RequestRepository.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/domain/RequestRepository.java index 7928369..a9874bb 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/domain/RequestRepository.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/domain/RequestRepository.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.request.domain; +package ru.practicum.ewm.request.domain; import java.util.List; import java.util.Map; diff --git a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/enums/RequestStatus.java b/core/request-service/src/main/java/ru/practicum/ewm/request/domain/RequestStatus.java similarity index 85% rename from core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/enums/RequestStatus.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/domain/RequestStatus.java index 0c16758..108cd6b 100644 --- a/core/interaction-api/src/main/java/ru/practicum/explorewithme/api/client/request/enums/RequestStatus.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/domain/RequestStatus.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.api.client.request.enums; +package ru.practicum.ewm.request.domain; /** * Статусы запросов на участие в событии diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/config/JpaAuditingConfig.java b/core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/config/JpaAuditingConfig.java similarity index 77% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/config/JpaAuditingConfig.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/config/JpaAuditingConfig.java index bb18f1f..d9d182f 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/config/JpaAuditingConfig.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/config/JpaAuditingConfig.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.request.infrastructure.config; +package ru.practicum.ewm.request.infrastructure.config; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; diff --git a/core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/mapper/EnumMapper.java b/core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/mapper/EnumMapper.java new file mode 100644 index 0000000..2281834 --- /dev/null +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/mapper/EnumMapper.java @@ -0,0 +1,23 @@ +package ru.practicum.ewm.request.infrastructure.mapper; + +import org.mapstruct.Mapper; +import ru.practicum.ewm.api.client.request.enums.RequestStatus; + +@Mapper(componentModel = "spring") +public class EnumMapper { + + public RequestStatus toApiRequestStatus( + ru.practicum.ewm.request.domain.RequestStatus modelStatus) { + if (modelStatus == null) { + return null; + } + return RequestStatus.valueOf(modelStatus.name()); + } + + public ru.practicum.ewm.request.domain.RequestStatus toModelRequestStatus(RequestStatus apiStatus) { + if (apiStatus == null) { + return null; + } + return ru.practicum.ewm.request.domain.RequestStatus.valueOf(apiStatus.name()); + } +} \ No newline at end of file diff --git a/core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/mapper/RequestMapper.java b/core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/mapper/RequestMapper.java new file mode 100644 index 0000000..81c796a --- /dev/null +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/mapper/RequestMapper.java @@ -0,0 +1,12 @@ +package ru.practicum.ewm.request.infrastructure.mapper; + +import org.mapstruct.Mapper; +import ru.practicum.ewm.api.client.request.dto.ParticipationRequestDto; +import ru.practicum.ewm.request.domain.ParticipationRequest; + +@Mapper(componentModel = "spring", uses = EnumMapper.class) +public interface RequestMapper { + + ParticipationRequestDto toRequestDto(ParticipationRequest participationRequest); + +} diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/persistence/JpaRequestRepository.java b/core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/persistence/JpaRequestRepository.java similarity index 88% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/persistence/JpaRequestRepository.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/persistence/JpaRequestRepository.java index 76603f5..3d68f6d 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/persistence/JpaRequestRepository.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/persistence/JpaRequestRepository.java @@ -1,12 +1,12 @@ -package ru.practicum.explorewithme.request.infrastructure.persistence; +package ru.practicum.ewm.request.infrastructure.persistence; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import ru.practicum.explorewithme.request.domain.ParticipationRequest; -import ru.practicum.explorewithme.request.domain.RequestStatus; +import ru.practicum.ewm.request.domain.ParticipationRequest; +import ru.practicum.ewm.request.domain.RequestStatus; import java.util.List; import java.util.Optional; diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/persistence/RequestRepositoryAdapter.java b/core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/persistence/RequestRepositoryAdapter.java similarity index 92% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/persistence/RequestRepositoryAdapter.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/persistence/RequestRepositoryAdapter.java index 5070dd5..79ee283 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/persistence/RequestRepositoryAdapter.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/infrastructure/persistence/RequestRepositoryAdapter.java @@ -1,13 +1,13 @@ -package ru.practicum.explorewithme.request.infrastructure.persistence; +package ru.practicum.ewm.request.infrastructure.persistence; import java.util.Comparator; import java.util.function.Function; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Component; -import ru.practicum.explorewithme.request.domain.ParticipationRequest; -import ru.practicum.explorewithme.request.domain.RequestRepository; -import ru.practicum.explorewithme.request.domain.RequestStatus; +import ru.practicum.ewm.request.domain.ParticipationRequest; +import ru.practicum.ewm.request.domain.RequestRepository; +import ru.practicum.ewm.request.domain.RequestStatus; import java.util.List; import java.util.Map; diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/presentation/error/GlobalExceptionHandler.java b/core/request-service/src/main/java/ru/practicum/ewm/request/presentation/error/GlobalExceptionHandler.java similarity index 88% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/presentation/error/GlobalExceptionHandler.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/presentation/error/GlobalExceptionHandler.java index c4d8017..c5028ef 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/presentation/error/GlobalExceptionHandler.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/presentation/error/GlobalExceptionHandler.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.request.presentation.error; +package ru.practicum.ewm.request.presentation.error; import java.time.LocalDateTime; import lombok.extern.slf4j.Slf4j; @@ -7,11 +7,11 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; -import ru.practicum.explorewithme.api.error.ApiError; -import ru.practicum.explorewithme.api.error.BaseExceptionHandler; -import ru.practicum.explorewithme.api.error.BusinessRuleViolationException; -import ru.practicum.explorewithme.api.error.EntityAlreadyExistsException; -import ru.practicum.explorewithme.api.error.EntityNotFoundException; +import ru.practicum.ewm.api.error.ApiError; +import ru.practicum.ewm.api.error.BaseExceptionHandler; +import ru.practicum.ewm.api.error.BusinessRuleViolationException; +import ru.practicum.ewm.api.error.EntityAlreadyExistsException; +import ru.practicum.ewm.api.error.EntityNotFoundException; @RestControllerAdvice @Slf4j diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/presentation/internal/InternalRequestController.java b/core/request-service/src/main/java/ru/practicum/ewm/request/presentation/internal/InternalRequestController.java similarity index 79% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/presentation/internal/InternalRequestController.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/presentation/internal/InternalRequestController.java index 9fdb9f0..075dc0e 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/presentation/internal/InternalRequestController.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/presentation/internal/InternalRequestController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.request.presentation.internal; +package ru.practicum.ewm.request.presentation.internal; import java.util.Map; import java.util.Set; @@ -8,8 +8,8 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.request.RequestClient; -import ru.practicum.explorewithme.request.application.RequestService; +import ru.practicum.ewm.api.client.request.RequestClient; +import ru.practicum.ewm.request.application.RequestService; @RestController @RequestMapping("/internal/requests") diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/presentation/priv/EventRequestController.java b/core/request-service/src/main/java/ru/practicum/ewm/request/presentation/priv/EventRequestController.java similarity index 81% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/presentation/priv/EventRequestController.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/presentation/priv/EventRequestController.java index 999b0b1..f554841 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/presentation/priv/EventRequestController.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/presentation/priv/EventRequestController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.request.presentation.priv; +package ru.practicum.ewm.request.presentation.priv; import jakarta.validation.Valid; import jakarta.validation.constraints.Positive; @@ -14,12 +14,12 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.request.dto.EventRequestStatusUpdateRequestDto; -import ru.practicum.explorewithme.api.client.request.dto.EventRequestStatusUpdateResultDto; -import ru.practicum.explorewithme.api.client.request.dto.ParticipationRequestDto; -import ru.practicum.explorewithme.request.application.params.EventRequestStatusUpdateRequestParams; -import ru.practicum.explorewithme.request.application.RequestService; -import ru.practicum.explorewithme.request.infrastructure.mapper.EnumMapper; +import ru.practicum.ewm.api.client.request.dto.EventRequestStatusUpdateRequestDto; +import ru.practicum.ewm.api.client.request.dto.EventRequestStatusUpdateResultDto; +import ru.practicum.ewm.api.client.request.dto.ParticipationRequestDto; +import ru.practicum.ewm.request.application.params.EventRequestStatusUpdateRequestParams; +import ru.practicum.ewm.request.application.RequestService; +import ru.practicum.ewm.request.infrastructure.mapper.EnumMapper; @RestController @RequestMapping("/users/{userId}/events") diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/presentation/priv/UserRequestController.java b/core/request-service/src/main/java/ru/practicum/ewm/request/presentation/priv/UserRequestController.java similarity index 91% rename from core/request-service/src/main/java/ru/practicum/explorewithme/request/presentation/priv/UserRequestController.java rename to core/request-service/src/main/java/ru/practicum/ewm/request/presentation/priv/UserRequestController.java index 42dafcd..ac42ba8 100644 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/presentation/priv/UserRequestController.java +++ b/core/request-service/src/main/java/ru/practicum/ewm/request/presentation/priv/UserRequestController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.request.presentation.priv; +package ru.practicum.ewm.request.presentation.priv; import jakarta.validation.constraints.Positive; import java.util.List; @@ -14,8 +14,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.request.dto.ParticipationRequestDto; -import ru.practicum.explorewithme.request.application.RequestService; +import ru.practicum.ewm.api.client.request.dto.ParticipationRequestDto; +import ru.practicum.ewm.request.application.RequestService; @RestController @RequestMapping("/users/{userId}/requests") diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/mapper/EnumMapper.java b/core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/mapper/EnumMapper.java deleted file mode 100644 index ae83325..0000000 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/mapper/EnumMapper.java +++ /dev/null @@ -1,22 +0,0 @@ -package ru.practicum.explorewithme.request.infrastructure.mapper; - -import org.mapstruct.Mapper; -import ru.practicum.explorewithme.api.client.request.enums.RequestStatus; - -@Mapper(componentModel = "spring") -public class EnumMapper { - - public RequestStatus toApiRequestStatus(ru.practicum.explorewithme.request.domain.RequestStatus modelStatus) { - if (modelStatus == null) { - return null; - } - return RequestStatus.valueOf(modelStatus.name()); - } - - public ru.practicum.explorewithme.request.domain.RequestStatus toModelRequestStatus(RequestStatus apiStatus) { - if (apiStatus == null) { - return null; - } - return ru.practicum.explorewithme.request.domain.RequestStatus.valueOf(apiStatus.name()); - } -} \ No newline at end of file diff --git a/core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/mapper/RequestMapper.java b/core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/mapper/RequestMapper.java deleted file mode 100644 index d9dd413..0000000 --- a/core/request-service/src/main/java/ru/practicum/explorewithme/request/infrastructure/mapper/RequestMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package ru.practicum.explorewithme.request.infrastructure.mapper; - -import org.mapstruct.Mapper; -import ru.practicum.explorewithme.api.client.request.dto.ParticipationRequestDto; -import ru.practicum.explorewithme.request.domain.ParticipationRequest; - -@Mapper(componentModel = "spring", uses = EnumMapper.class) -public interface RequestMapper { - - ParticipationRequestDto toRequestDto(ParticipationRequest participationRequest); - -} diff --git a/core/serialization/src/main/avro/ActionTypeAvro.avsc b/core/serialization/src/main/avro/ActionTypeAvro.avsc index 64720f2..5ddc4db 100644 --- a/core/serialization/src/main/avro/ActionTypeAvro.avsc +++ b/core/serialization/src/main/avro/ActionTypeAvro.avsc @@ -1,5 +1,5 @@ { - "namespace": "ru.practicum.explorewithme.stats.kafka", + "namespace": "ru.practicum.ewm.stats.kafka", "type": "enum", "name": "ActionTypeAvro", "symbols": ["VIEW", "REGISTER", "LIKE"] diff --git a/core/serialization/src/main/avro/EventSimilarityAvro.avsc b/core/serialization/src/main/avro/EventSimilarityAvro.avsc index b6f4896..3e99049 100644 --- a/core/serialization/src/main/avro/EventSimilarityAvro.avsc +++ b/core/serialization/src/main/avro/EventSimilarityAvro.avsc @@ -1,5 +1,5 @@ { - "namespace": "ru.practicum.explorewithme.stats.kafka", + "namespace": "ru.practicum.ewm.stats.kafka", "type": "record", "name": "EventSimilarityAvro", "fields": [ diff --git a/core/serialization/src/main/avro/UserActionAvro.avsc b/core/serialization/src/main/avro/UserActionAvro.avsc index ec3280c..805448f 100644 --- a/core/serialization/src/main/avro/UserActionAvro.avsc +++ b/core/serialization/src/main/avro/UserActionAvro.avsc @@ -1,5 +1,5 @@ { - "namespace": "ru.practicum.explorewithme.stats.kafka", + "namespace": "ru.practicum.ewm.stats.kafka", "type": "record", "name": "UserActionAvro", "fields": [ @@ -15,7 +15,7 @@ }, { "name": "actionType", - "type": "ru.practicum.explorewithme.stats.kafka.ActionTypeAvro", + "type": "ru.practicum.ewm.stats.kafka.ActionTypeAvro", "doc": "The type of action performed." }, { diff --git a/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/EventSimilarityAvroDeserializer.java b/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/EventSimilarityAvroDeserializer.java index 73d5f30..5661d3b 100644 --- a/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/EventSimilarityAvroDeserializer.java +++ b/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/EventSimilarityAvroDeserializer.java @@ -8,7 +8,7 @@ import org.apache.avro.specific.SpecificDatumReader; import org.apache.kafka.common.errors.SerializationException; import org.apache.kafka.common.serialization.Deserializer; -import ru.practicum.explorewithme.stats.kafka.EventSimilarityAvro; +import ru.practicum.ewm.stats.kafka.EventSimilarityAvro; @Slf4j public class EventSimilarityAvroDeserializer implements Deserializer { diff --git a/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/UserActionAvroDeserializer.java b/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/UserActionAvroDeserializer.java index 913866f..1f3ff8e 100644 --- a/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/UserActionAvroDeserializer.java +++ b/core/serialization/src/main/java/ru/practicum/ewm/stats/common/kafka/UserActionAvroDeserializer.java @@ -8,7 +8,7 @@ import org.apache.avro.specific.SpecificDatumReader; import org.apache.kafka.common.errors.SerializationException; import org.apache.kafka.common.serialization.Deserializer; -import ru.practicum.explorewithme.stats.kafka.UserActionAvro; +import ru.practicum.ewm.stats.kafka.UserActionAvro; @Slf4j public class UserActionAvroDeserializer implements Deserializer { diff --git a/core/serialization/src/main/protobuf/recommendations.proto b/core/serialization/src/main/protobuf/recommendations.proto index d662d4e..1e318c7 100644 --- a/core/serialization/src/main/protobuf/recommendations.proto +++ b/core/serialization/src/main/protobuf/recommendations.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -option java_package = "ru.practicum.explorewithme.stats.grpc"; +option java_package = "ru.practicum.ewm.stats.grpc"; option java_multiple_files = true; import "google/protobuf/timestamp.proto"; diff --git a/core/user-service/src/main/java/ru/practicum/explorewithme/user/UserServiceApplication.java b/core/user-service/src/main/java/ru/practicum/ewm/user/UserServiceApplication.java similarity index 90% rename from core/user-service/src/main/java/ru/practicum/explorewithme/user/UserServiceApplication.java rename to core/user-service/src/main/java/ru/practicum/ewm/user/UserServiceApplication.java index 8fec97e..9c1d4e2 100644 --- a/core/user-service/src/main/java/ru/practicum/explorewithme/user/UserServiceApplication.java +++ b/core/user-service/src/main/java/ru/practicum/ewm/user/UserServiceApplication.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.user; +package ru.practicum.ewm.user; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/core/user-service/src/main/java/ru/practicum/explorewithme/user/application/UserService.java b/core/user-service/src/main/java/ru/practicum/ewm/user/application/UserService.java similarity index 54% rename from core/user-service/src/main/java/ru/practicum/explorewithme/user/application/UserService.java rename to core/user-service/src/main/java/ru/practicum/ewm/user/application/UserService.java index 78865e7..45b2548 100644 --- a/core/user-service/src/main/java/ru/practicum/explorewithme/user/application/UserService.java +++ b/core/user-service/src/main/java/ru/practicum/ewm/user/application/UserService.java @@ -1,9 +1,9 @@ -package ru.practicum.explorewithme.user.application; +package ru.practicum.ewm.user.application; import java.util.List; -import ru.practicum.explorewithme.api.client.user.dto.NewUserRequestDto; -import ru.practicum.explorewithme.api.client.user.dto.UserDto; -import ru.practicum.explorewithme.user.application.params.GetListUsersParameters; +import ru.practicum.ewm.api.client.user.dto.NewUserRequestDto; +import ru.practicum.ewm.api.client.user.dto.UserDto; +import ru.practicum.ewm.user.application.params.GetListUsersParameters; public interface UserService { diff --git a/core/user-service/src/main/java/ru/practicum/explorewithme/user/application/UserServiceImpl.java b/core/user-service/src/main/java/ru/practicum/ewm/user/application/UserServiceImpl.java similarity index 81% rename from core/user-service/src/main/java/ru/practicum/explorewithme/user/application/UserServiceImpl.java rename to core/user-service/src/main/java/ru/practicum/ewm/user/application/UserServiceImpl.java index aad36aa..3fce599 100644 --- a/core/user-service/src/main/java/ru/practicum/explorewithme/user/application/UserServiceImpl.java +++ b/core/user-service/src/main/java/ru/practicum/ewm/user/application/UserServiceImpl.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.user.application; +package ru.practicum.ewm.user.application; import java.util.List; import java.util.Optional; @@ -6,14 +6,14 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.practicum.explorewithme.api.client.user.dto.NewUserRequestDto; -import ru.practicum.explorewithme.api.client.user.dto.UserDto; -import ru.practicum.explorewithme.api.error.EntityAlreadyExistsException; -import ru.practicum.explorewithme.api.error.EntityNotFoundException; -import ru.practicum.explorewithme.user.application.params.GetListUsersParameters; -import ru.practicum.explorewithme.user.domain.User; -import ru.practicum.explorewithme.user.domain.UserRepository; -import ru.practicum.explorewithme.user.infrastructure.mapper.UserMapper; +import ru.practicum.ewm.api.client.user.dto.NewUserRequestDto; +import ru.practicum.ewm.api.client.user.dto.UserDto; +import ru.practicum.ewm.api.error.EntityAlreadyExistsException; +import ru.practicum.ewm.api.error.EntityNotFoundException; +import ru.practicum.ewm.user.application.params.GetListUsersParameters; +import ru.practicum.ewm.user.domain.User; +import ru.practicum.ewm.user.domain.UserRepository; +import ru.practicum.ewm.user.infrastructure.mapper.UserMapper; @Service @RequiredArgsConstructor diff --git a/core/user-service/src/main/java/ru/practicum/explorewithme/user/application/params/GetListUsersParameters.java b/core/user-service/src/main/java/ru/practicum/ewm/user/application/params/GetListUsersParameters.java similarity index 84% rename from core/user-service/src/main/java/ru/practicum/explorewithme/user/application/params/GetListUsersParameters.java rename to core/user-service/src/main/java/ru/practicum/ewm/user/application/params/GetListUsersParameters.java index 74a572f..1569c48 100644 --- a/core/user-service/src/main/java/ru/practicum/explorewithme/user/application/params/GetListUsersParameters.java +++ b/core/user-service/src/main/java/ru/practicum/ewm/user/application/params/GetListUsersParameters.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.user.application.params; +package ru.practicum.ewm.user.application.params; import java.util.List; import lombok.AllArgsConstructor; diff --git a/core/user-service/src/main/java/ru/practicum/explorewithme/user/domain/User.java b/core/user-service/src/main/java/ru/practicum/ewm/user/domain/User.java similarity index 95% rename from core/user-service/src/main/java/ru/practicum/explorewithme/user/domain/User.java rename to core/user-service/src/main/java/ru/practicum/ewm/user/domain/User.java index 2a0bea1..3f11a9e 100644 --- a/core/user-service/src/main/java/ru/practicum/explorewithme/user/domain/User.java +++ b/core/user-service/src/main/java/ru/practicum/ewm/user/domain/User.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.user.domain; +package ru.practicum.ewm.user.domain; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/core/user-service/src/main/java/ru/practicum/explorewithme/user/domain/UserRepository.java b/core/user-service/src/main/java/ru/practicum/ewm/user/domain/UserRepository.java similarity index 97% rename from core/user-service/src/main/java/ru/practicum/explorewithme/user/domain/UserRepository.java rename to core/user-service/src/main/java/ru/practicum/ewm/user/domain/UserRepository.java index d35f04b..ad44d3b 100644 --- a/core/user-service/src/main/java/ru/practicum/explorewithme/user/domain/UserRepository.java +++ b/core/user-service/src/main/java/ru/practicum/ewm/user/domain/UserRepository.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.user.domain; +package ru.practicum.ewm.user.domain; import java.util.List; import java.util.Optional; diff --git a/core/user-service/src/main/java/ru/practicum/explorewithme/user/infrastructure/mapper/UserMapper.java b/core/user-service/src/main/java/ru/practicum/ewm/user/infrastructure/mapper/UserMapper.java similarity index 50% rename from core/user-service/src/main/java/ru/practicum/explorewithme/user/infrastructure/mapper/UserMapper.java rename to core/user-service/src/main/java/ru/practicum/ewm/user/infrastructure/mapper/UserMapper.java index d6288db..45b7619 100644 --- a/core/user-service/src/main/java/ru/practicum/explorewithme/user/infrastructure/mapper/UserMapper.java +++ b/core/user-service/src/main/java/ru/practicum/ewm/user/infrastructure/mapper/UserMapper.java @@ -1,11 +1,11 @@ -package ru.practicum.explorewithme.user.infrastructure.mapper; +package ru.practicum.ewm.user.infrastructure.mapper; import org.mapstruct.Mapper; import org.mapstruct.Mapping; -import ru.practicum.explorewithme.api.client.user.dto.NewUserRequestDto; -import ru.practicum.explorewithme.api.client.user.dto.UserDto; -import ru.practicum.explorewithme.api.client.user.dto.UserShortDto; -import ru.practicum.explorewithme.user.domain.User; +import ru.practicum.ewm.api.client.user.dto.NewUserRequestDto; +import ru.practicum.ewm.api.client.user.dto.UserDto; +import ru.practicum.ewm.api.client.user.dto.UserShortDto; +import ru.practicum.ewm.user.domain.User; @Mapper(componentModel = "spring") public interface UserMapper { diff --git a/core/user-service/src/main/java/ru/practicum/explorewithme/user/infrastructure/persistence/JpaUserRepository.java b/core/user-service/src/main/java/ru/practicum/ewm/user/infrastructure/persistence/JpaUserRepository.java similarity index 79% rename from core/user-service/src/main/java/ru/practicum/explorewithme/user/infrastructure/persistence/JpaUserRepository.java rename to core/user-service/src/main/java/ru/practicum/ewm/user/infrastructure/persistence/JpaUserRepository.java index 5608c18..133f344 100644 --- a/core/user-service/src/main/java/ru/practicum/explorewithme/user/infrastructure/persistence/JpaUserRepository.java +++ b/core/user-service/src/main/java/ru/practicum/ewm/user/infrastructure/persistence/JpaUserRepository.java @@ -1,11 +1,11 @@ -package ru.practicum.explorewithme.user.infrastructure.persistence; +package ru.practicum.ewm.user.infrastructure.persistence; import java.util.List; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import ru.practicum.explorewithme.user.domain.User; +import ru.practicum.ewm.user.domain.User; @Repository public interface JpaUserRepository extends JpaRepository { diff --git a/core/user-service/src/main/java/ru/practicum/explorewithme/user/infrastructure/persistence/UserRepositoryAdapter.java b/core/user-service/src/main/java/ru/practicum/ewm/user/infrastructure/persistence/UserRepositoryAdapter.java similarity index 89% rename from core/user-service/src/main/java/ru/practicum/explorewithme/user/infrastructure/persistence/UserRepositoryAdapter.java rename to core/user-service/src/main/java/ru/practicum/ewm/user/infrastructure/persistence/UserRepositoryAdapter.java index 177e6de..b716a4c 100644 --- a/core/user-service/src/main/java/ru/practicum/explorewithme/user/infrastructure/persistence/UserRepositoryAdapter.java +++ b/core/user-service/src/main/java/ru/practicum/ewm/user/infrastructure/persistence/UserRepositoryAdapter.java @@ -1,12 +1,12 @@ -package ru.practicum.explorewithme.user.infrastructure.persistence; +package ru.practicum.ewm.user.infrastructure.persistence; import java.util.List; import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Component; -import ru.practicum.explorewithme.user.domain.User; -import ru.practicum.explorewithme.user.domain.UserRepository; +import ru.practicum.ewm.user.domain.User; +import ru.practicum.ewm.user.domain.UserRepository; @Component @RequiredArgsConstructor diff --git a/core/user-service/src/main/java/ru/practicum/explorewithme/user/presentation/admin/AdminUserController.java b/core/user-service/src/main/java/ru/practicum/ewm/user/presentation/admin/AdminUserController.java similarity index 87% rename from core/user-service/src/main/java/ru/practicum/explorewithme/user/presentation/admin/AdminUserController.java rename to core/user-service/src/main/java/ru/practicum/ewm/user/presentation/admin/AdminUserController.java index 6b49f9f..0960344 100644 --- a/core/user-service/src/main/java/ru/practicum/explorewithme/user/presentation/admin/AdminUserController.java +++ b/core/user-service/src/main/java/ru/practicum/ewm/user/presentation/admin/AdminUserController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.user.presentation.admin; +package ru.practicum.ewm.user.presentation.admin; import jakarta.validation.Valid; import jakarta.validation.constraints.Positive; @@ -17,10 +17,10 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.user.dto.NewUserRequestDto; -import ru.practicum.explorewithme.api.client.user.dto.UserDto; -import ru.practicum.explorewithme.user.application.params.GetListUsersParameters; -import ru.practicum.explorewithme.user.application.UserService; +import ru.practicum.ewm.api.client.user.dto.NewUserRequestDto; +import ru.practicum.ewm.api.client.user.dto.UserDto; +import ru.practicum.ewm.user.application.params.GetListUsersParameters; +import ru.practicum.ewm.user.application.UserService; @RestController @RequestMapping("/admin/users") diff --git a/core/user-service/src/main/java/ru/practicum/explorewithme/user/presentation/error/GlobalExceptionHandler.java b/core/user-service/src/main/java/ru/practicum/ewm/user/presentation/error/GlobalExceptionHandler.java similarity index 90% rename from core/user-service/src/main/java/ru/practicum/explorewithme/user/presentation/error/GlobalExceptionHandler.java rename to core/user-service/src/main/java/ru/practicum/ewm/user/presentation/error/GlobalExceptionHandler.java index 42376c8..7157982 100644 --- a/core/user-service/src/main/java/ru/practicum/explorewithme/user/presentation/error/GlobalExceptionHandler.java +++ b/core/user-service/src/main/java/ru/practicum/ewm/user/presentation/error/GlobalExceptionHandler.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.user.presentation.error; +package ru.practicum.ewm.user.presentation.error; import java.time.LocalDateTime; import lombok.extern.slf4j.Slf4j; @@ -7,10 +7,10 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; -import ru.practicum.explorewithme.api.error.BaseExceptionHandler; -import ru.practicum.explorewithme.api.error.ApiError; -import ru.practicum.explorewithme.api.error.EntityAlreadyExistsException; -import ru.practicum.explorewithme.api.error.EntityNotFoundException; +import ru.practicum.ewm.api.error.BaseExceptionHandler; +import ru.practicum.ewm.api.error.ApiError; +import ru.practicum.ewm.api.error.EntityAlreadyExistsException; +import ru.practicum.ewm.api.error.EntityNotFoundException; @RestControllerAdvice @Slf4j diff --git a/core/user-service/src/main/java/ru/practicum/explorewithme/user/presentation/internal/InternalUserController.java b/core/user-service/src/main/java/ru/practicum/ewm/user/presentation/internal/InternalUserController.java similarity index 83% rename from core/user-service/src/main/java/ru/practicum/explorewithme/user/presentation/internal/InternalUserController.java rename to core/user-service/src/main/java/ru/practicum/ewm/user/presentation/internal/InternalUserController.java index db92fdf..c30701d 100644 --- a/core/user-service/src/main/java/ru/practicum/explorewithme/user/presentation/internal/InternalUserController.java +++ b/core/user-service/src/main/java/ru/practicum/ewm/user/presentation/internal/InternalUserController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.user.presentation.internal; +package ru.practicum.ewm.user.presentation.internal; import java.util.List; import lombok.RequiredArgsConstructor; @@ -10,9 +10,9 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import ru.practicum.explorewithme.api.client.user.UserClient; -import ru.practicum.explorewithme.api.client.user.dto.UserDto; -import ru.practicum.explorewithme.user.application.UserService; +import ru.practicum.ewm.api.client.user.UserClient; +import ru.practicum.ewm.api.client.user.dto.UserDto; +import ru.practicum.ewm.user.application.UserService; @RestController @RequestMapping("/internal/users") diff --git a/infra/config-server/src/main/java/ru/practicum/explorewithme/infra/configserver/ConfigServerApplication.java b/infra/config-server/src/main/java/ru/practicum/ewm/infra/configserver/ConfigServerApplication.java similarity index 89% rename from infra/config-server/src/main/java/ru/practicum/explorewithme/infra/configserver/ConfigServerApplication.java rename to infra/config-server/src/main/java/ru/practicum/ewm/infra/configserver/ConfigServerApplication.java index 950b013..5543074 100644 --- a/infra/config-server/src/main/java/ru/practicum/explorewithme/infra/configserver/ConfigServerApplication.java +++ b/infra/config-server/src/main/java/ru/practicum/ewm/infra/configserver/ConfigServerApplication.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.infra.configserver; +package ru.practicum.ewm.infra.configserver; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/infra/config-server/src/main/resources/config/event-service/application-local.yaml b/infra/config-server/src/main/resources/config/event-service/application-local.yaml index 64abe74..fe65627 100644 --- a/infra/config-server/src/main/resources/config/event-service/application-local.yaml +++ b/infra/config-server/src/main/resources/config/event-service/application-local.yaml @@ -4,4 +4,4 @@ server: logging: level: root: INFO - ru.practicum.explorewithme.main: DEBUG \ No newline at end of file + ru.practicum.ewm.main: DEBUG \ No newline at end of file diff --git a/infra/discovery-server/src/main/java/ru/practicum/explorewithme/infra/discovery/EurekaServerApp.java b/infra/discovery-server/src/main/java/ru/practicum/ewm/infra/discovery/EurekaServerApp.java similarity index 88% rename from infra/discovery-server/src/main/java/ru/practicum/explorewithme/infra/discovery/EurekaServerApp.java rename to infra/discovery-server/src/main/java/ru/practicum/ewm/infra/discovery/EurekaServerApp.java index 8072d18..e3f1350 100644 --- a/infra/discovery-server/src/main/java/ru/practicum/explorewithme/infra/discovery/EurekaServerApp.java +++ b/infra/discovery-server/src/main/java/ru/practicum/ewm/infra/discovery/EurekaServerApp.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.infra.discovery; +package ru.practicum.ewm.infra.discovery; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/infra/gateway-server/src/main/java/ru/practicum/explorewithme/infra/gateway/GatewayApplication.java b/infra/gateway-server/src/main/java/ru/practicum/ewm/infra/gateway/GatewayApplication.java similarity index 88% rename from infra/gateway-server/src/main/java/ru/practicum/explorewithme/infra/gateway/GatewayApplication.java rename to infra/gateway-server/src/main/java/ru/practicum/ewm/infra/gateway/GatewayApplication.java index a5cb128..501bf8d 100644 --- a/infra/gateway-server/src/main/java/ru/practicum/explorewithme/infra/gateway/GatewayApplication.java +++ b/infra/gateway-server/src/main/java/ru/practicum/ewm/infra/gateway/GatewayApplication.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.infra.gateway; +package ru.practicum.ewm.infra.gateway; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/infra/gateway-server/src/main/java/ru/practicum/explorewithme/infra/gateway/controller/FallbackController.java b/infra/gateway-server/src/main/java/ru/practicum/ewm/infra/gateway/controller/FallbackController.java similarity index 89% rename from infra/gateway-server/src/main/java/ru/practicum/explorewithme/infra/gateway/controller/FallbackController.java rename to infra/gateway-server/src/main/java/ru/practicum/ewm/infra/gateway/controller/FallbackController.java index f5a00a7..f3903fb 100644 --- a/infra/gateway-server/src/main/java/ru/practicum/explorewithme/infra/gateway/controller/FallbackController.java +++ b/infra/gateway-server/src/main/java/ru/practicum/ewm/infra/gateway/controller/FallbackController.java @@ -1,4 +1,4 @@ -package ru.practicum.explorewithme.infra.gateway.controller; +package ru.practicum.ewm.infra.gateway.controller; import java.time.LocalDateTime; import org.springframework.http.HttpStatus; @@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Mono; -import ru.practicum.explorewithme.api.error.ApiError; +import ru.practicum.ewm.api.error.ApiError; @RestController public class FallbackController { From 382f586f7106ddc33f5d728d266ee514fe0108c6 Mon Sep 17 00:00:00 2001 From: Pepe Ronin Date: Tue, 23 Sep 2025 02:29:51 +0300 Subject: [PATCH 06/43] feat(collector): implement gRPC endpoint for event collection - Add gRPC endpoint to receive and validate user action events. - Publish received events to a Kafka topic for downstream processing. - Integrate with Eureka and Config Server for service discovery and configuration. --- .run/{ewm-db.run.xml => ewm-infra.run.xml} | 3 +- core/collector/pom.xml | 49 +++++++++++++++++++ .../ewm/collector/CollectorApplication.java | 11 +++++ .../mapper/UserActionMapper.java | 36 ++++++++++++++ .../UserActionControllerImpl.java | 45 +++++++++++++++++ .../src/main/resources/application.yaml | 25 ++++++++++ .../resources/config/application-kafka.yaml | 3 ++ .../config/collector/application.yaml | 13 +++++ pom.xml | 5 ++ 9 files changed, 189 insertions(+), 1 deletion(-) rename .run/{ewm-db.run.xml => ewm-infra.run.xml} (70%) create mode 100644 core/collector/src/main/java/ru/practicum/ewm/collector/CollectorApplication.java create mode 100644 core/collector/src/main/java/ru/practicum/ewm/collector/infrastructure/mapper/UserActionMapper.java create mode 100644 core/collector/src/main/java/ru/practicum/ewm/collector/presentation/UserActionControllerImpl.java create mode 100644 core/collector/src/main/resources/application.yaml create mode 100644 infra/config-server/src/main/resources/config/application-kafka.yaml create mode 100644 infra/config-server/src/main/resources/config/collector/application.yaml diff --git a/.run/ewm-db.run.xml b/.run/ewm-infra.run.xml similarity index 70% rename from .run/ewm-db.run.xml rename to .run/ewm-infra.run.xml index 816f561..a210515 100644 --- a/.run/ewm-db.run.xml +++ b/.run/ewm-infra.run.xml @@ -1,10 +1,11 @@ - +