Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
9aa1a88
Initial commit
impatient0 May 5, 2025
65394bb
initial repo setup
Peppe-Ronin May 6, 2025
1f9d0a5
Добавление классов DTO
SergikF May 7, 2025
5d9d419
Добавление классов DTO
SergikF May 7, 2025
28caf74
Добавление классов DTO
SergikF May 7, 2025
f1f5e14
Добавление классов DTO
SergikF May 7, 2025
f7278c0
Merge remote-tracking branch 'origin/stat_svc_dto' into stat_svc_dto
SergikF May 7, 2025
ca538ff
Добавление классов DTO
SergikF May 7, 2025
1178cbb
Добавление классов DTO
SergikF May 7, 2025
780be5e
Добавил JSON тесты Dto.
SergikF May 7, 2025
bea0832
Добавил JSON тесты Dto.
SergikF May 7, 2025
302108a
Исправление после удаления id.
SergikF May 8, 2025
f044867
Merge pull request #22 from impatient0/stat_svc_dto
impatient0 May 8, 2025
24cc213
add README.md
Peppe-Ronin May 8, 2025
f636044
save stats-local run profile as a project file
Peppe-Ronin May 8, 2025
dcccb16
Merge pull request #23 from impatient0/stat_svc_ivan_readme
impatient0 May 8, 2025
7627c08
correct typo in package name
Peppe-Ronin May 9, 2025
5b94060
create stub controller and placeholder service
Peppe-Ronin May 9, 2025
c401154
Merge pull request #24 from impatient0/stat_svc_ivan_servevr
impatient0 May 9, 2025
f72810e
update local app config for server
Peppe-Ronin May 9, 2025
eaf0b7f
create EndpointHit entity
Peppe-Ronin May 9, 2025
0ea1f49
manage dependency versions in root pom.xml
Peppe-Ronin May 9, 2025
091a221
implement StatsRepository
Peppe-Ronin May 9, 2025
4bb57c2
create StatsService interface and a stub implementation
Peppe-Ronin May 9, 2025
4a081e7
add constructors to ViewStatsDto
Peppe-Ronin May 9, 2025
ff73d6a
change StatsController to rely on StatsService
Peppe-Ronin May 9, 2025
3312643
implement tests for StatsRepository
Peppe-Ronin May 9, 2025
49e9cbb
clean up
Peppe-Ronin May 9, 2025
42b335c
added comments to tests for clarity
Peppe-Ronin May 10, 2025
9586222
annotate service methods as transactional
Peppe-Ronin May 10, 2025
9f54d1a
Merge pull request #25 from impatient0/stat_svc_ivan_servevr
impatient0 May 10, 2025
cfcb455
StatsClient базовая конструкция. (#26)
SergikF May 10, 2025
9db3760
Изменения в тестах и в классе EndpointHitDto (#27)
SergikF May 11, 2025
80de0ad
Stats Server: Реализация бизнес-логики и финализация Docker-конфигура…
impatient0 May 11, 2025
8777491
attempt to fix agent attachment issues
Peppe-Ronin May 11, 2025
9e38e87
StatsControllerTest
Gagarskiy-Andrey May 11, 2025
1e3ea51
Merge pull request #30 from impatient0/stat_svc-service-tests
progingir May 12, 2025
a2f50b3
add centralized date time format management
Peppe-Ronin May 12, 2025
c34735c
remove dead code
Peppe-Ronin May 12, 2025
e20a7f3
Merge pull request #29 from impatient0/stat_svc
impatient0 May 12, 2025
4a7409f
StatsControllerTest
Gagarskiy-Andrey May 12, 2025
cbf44ca
Создание сущностей User Category Location (#61)
SergikF May 15, 2025
19bee9e
Изменения для работы с location (#62)
SergikF May 15, 2025
4994484
CORE: Базовая настройка main-service и глобальный обработчик исключен…
impatient0 May 16, 2025
011c014
StatsControllerTest
Gagarskiy-Andrey May 17, 2025
b3d60e6
Merge pull request #31 from impatient0/stat_svc_statscontrollertest
Gagarskiy-Andrey May 17, 2025
27ac31a
Admin API: Реализация поиска и фильтрации событий (#65)
impatient0 May 17, 2025
9de3a39
Создание необходимого для ветки User (#66)
SergikF May 18, 2025
07ad710
FIX: Корректная настройка Spring-контекста для юнит-тестов EventMappe…
impatient0 May 18, 2025
caeecf6
CORE: Рефакторинг сущностей (JPA Auditing, значения по умолчанию, Bui…
impatient0 May 18, 2025
8e8d2bd
Создание необходимого для работы ветки Сategories (#69)
SergikF May 20, 2025
762e9e9
PRIVATE-EVENTS: Добавление нового события #46 (#71)
Gagarskiy-Andrey May 20, 2025
1346683
Добавлены блоки разработки #50 #51 #52
SergikF May 22, 2025
4667e9f
Получение запросов на участие в событии текущего пользователя
SergikF May 22, 2025
cafd20a
Исправление ошибок стиля
SergikF May 22, 2025
f94df25
Event Management: пользовательские операции и администрирование (#72)
impatient0 May 22, 2025
ac1e0b9
Merge branch 'main_svc' into main_svc_serg_event53
SergikF May 22, 2025
8eeea90
Исправление ошибок стиля
SergikF May 22, 2025
bbcb2ed
Исправление замечаний
SergikF May 22, 2025
b45fbc8
Исправление замечаний
SergikF May 22, 2025
3d03fb0
Получение запросов на участие в событии текущего пользователя #53
SergikF May 23, 2025
1b80f34
PRIVATE-EVENTS: Изменение статуса заявок (подтверждение/отклонение) #…
SergikF May 24, 2025
bb994fd
main-svc-compilations (#77)
progingir May 25, 2025
d483167
Публичные API событий и интеграция StatsClient (#78)
impatient0 May 26, 2025
ee70d87
Отработка фидбека ревью (#82)
impatient0 May 26, 2025
51ae3c7
фиксики (#81)
Gagarskiy-Andrey May 26, 2025
dfaaa0b
Merge pull request #79 from impatient0/main_svc
impatient0 May 26, 2025
4063b69
add comments functionality to API spec
Peppe-Ronin May 27, 2025
7c84bce
устранение ошибки Surefire
Gagarskiy-Andrey May 28, 2025
6da7fbe
Комментарии - Сущность, Репозиторий, DTO и Базовый Маппинг (#94)
impatient0 May 28, 2025
cd80e89
COMMENTS-PUBLIC: Получение комментариев к событию (#95)
SergikF May 30, 2025
d27c7b7
COMMENTS-PRIVATE: Создание/обновление комментария пользователем #84 и…
Gagarskiy-Andrey May 31, 2025
12458d2
create compound test config (#99)
impatient0 May 31, 2025
80098a0
COMMENTS-PRIVATE: Получение списка своих комментариев #88 (#100)
Gagarskiy-Andrey May 31, 2025
8203343
FIX: Корректное обновление updatedOn для Comment при редактировании (…
impatient0 Jun 1, 2025
b1eeb96
добавила эндпоинты на удаление коммента (#96)
progingir Jun 1, 2025
e56a1b3
Comments Admin API: Получение списка комментариев с фильтрацией (#101)
impatient0 Jun 1, 2025
1ac7b81
Comments Admin API: CommentAdminDto с флагом isDeleted (#105)
impatient0 Jun 1, 2025
1048411
update readme with current information about the feature (#106)
impatient0 Jun 1, 2025
fa17023
Добавлены Postman-тесты для фичи "Комментарии" (#107)
impatient0 Jun 1, 2025
52fe5ca
fix issue with concurrency leading to unpredictable responses (#110)
impatient0 Jun 1, 2025
7076a1b
Merge pull request #108 from impatient0/feature
impatient0 Jun 2, 2025
a1f9d85
Update README.md
impatient0 Jun 2, 2025
a03a1fb
Merge remote-tracking branch 'old-origin/main' into import-old-origin
Peppe-Ronin Sep 2, 2025
2e705c3
docs(readme): update to reflect the status of graduation project
Peppe-Ronin Sep 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .run/full-local.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="full-local" type="CompoundRunConfigurationType">
<toRun name="main-local" type="Application" />
<toRun name="stats-local" type="Application" />
<method v="2" />
</configuration>
</component>
16 changes: 16 additions & 0 deletions .run/main-db.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="main-db" type="docker-deploy" factoryName="docker-compose.yml" server-name="Docker">
<deployment type="docker-compose.yml">
<settings>
<option name="envFilePath" value="" />
<option name="services">
<list>
<option value="ewm-db" />
</list>
</option>
<option name="sourceFilePath" value="compose.yaml" />
</settings>
</deployment>
<method v="2" />
</configuration>
</component>
12 changes: 12 additions & 0 deletions .run/main-local.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="main-local" type="Application" factoryName="Application">
<option name="ALTERNATIVE_JRE_PATH" value="corretto-21" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<option name="MAIN_CLASS_NAME" value="ru.practicum.explorewithme.main.MainServiceApplication" />
<module name="main-service" />
<option name="VM_PARAMETERS" value="-Dspring.profiles.active=local" />
<method v="2">
<option name="RunConfigurationTask" enabled="true" run_configuration_name="main-db" run_configuration_type="docker-deploy" />
</method>
</configuration>
</component>
16 changes: 16 additions & 0 deletions .run/stats-db.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="stats-db" type="docker-deploy" factoryName="docker-compose.yml" server-name="Docker">
<deployment type="docker-compose.yml">
<settings>
<option name="envFilePath" value="" />
<option name="services">
<list>
<option value="stats-db" />
</list>
</option>
<option name="sourceFilePath" value="compose.yaml" />
</settings>
</deployment>
<method v="2" />
</configuration>
</component>
12 changes: 12 additions & 0 deletions .run/stats-local.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="stats-local" type="Application" factoryName="Application">
<option name="ALTERNATIVE_JRE_PATH" value="corretto-21" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<option name="MAIN_CLASS_NAME" value="ru.practicum.explorewithme.stats.server.StatsServerApplication" />
<module name="stats-server" />
<option name="VM_PARAMETERS" value="-Dspring.profiles.active=local" />
<method v="2">
<option name="RunConfigurationTask" enabled="true" run_configuration_name="stats-db" run_configuration_type="docker-deploy" />
</method>
</configuration>
</component>
254 changes: 254 additions & 0 deletions README.md

Large diffs are not rendered by default.

73 changes: 73 additions & 0 deletions compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
services:
stats-server:
build: stats-service/stats-server
container_name: ewm-stats-server-compose
depends_on:
stats-db:
condition: service_healthy
ports:
- "9090:9090"
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://stats-db:5432/ewm_stats_db
- SPRING_DATASOURCE_USERNAME=stats_user
- SPRING_DATASOURCE_PASSWORD=stats_password
- JAVA_OPTS=-Duser.timezone=UTC

stats-db:
image: postgres:16.1
container_name: ewm-stats-db-compose
ports:
- "6543:5432"
environment:
POSTGRES_USER: stats_user
POSTGRES_PASSWORD: stats_password
POSTGRES_DB: ewm_stats_db
volumes:
- stats_db_data:/var/lib/postgresql/data
- ./stats-service/stats-server/src/main/resources/schema.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

ewm-service:
build: main-service
container_name: ewm-main-service-compose
depends_on:
ewm-db:
condition: service_healthy
stats-server:
condition: service_started
ports:
- "8080:8080"
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://ewm-db:5432/ewm_main_db
- 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-compose
ports:
- "5432:5432"
environment:
POSTGRES_USER: ewm_user
POSTGRES_PASSWORD: ewm_password
POSTGRES_DB: ewm_main_db
volumes:
- main_db_data:/var/lib/postgresql/data
- ./main-service/src/main/resources/schema.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


volumes:
stats_db_data: {}
main_db_data: {}
31 changes: 31 additions & 0 deletions ewm-common/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>ru.practicum</groupId>
<artifactId>explore-with-me</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

<artifactId>ewm-common</artifactId>
<packaging>jar</packaging>

<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package ru.practicum.explorewithme.common.constants;

import java.time.format.DateTimeFormatter;

public final class DateTimeConstants {

private DateTimeConstants() {
throw new UnsupportedOperationException("This is a utility class and cannot be instantiated");
}

/**
* Стандартный шаблон формата даты и времени, используемый во всем приложении.
* Формат: "yyyy-MM-dd HH:mm:ss"
*/
public static final String DATE_TIME_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss";

/**
* Предварительно созданный экземпляр DateTimeFormatter для стандартного формата даты и времени.
* Может быть использован для парсинга и форматирования объектов LocalDateTime.
*/
public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern(DATE_TIME_FORMAT_PATTERN);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package ru.practicum.explorewithme.common.error;

import static ru.practicum.explorewithme.common.constants.DateTimeConstants.DATE_TIME_FORMAT_PATTERN;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Builder;
import lombok.Getter;
import org.springframework.http.HttpStatus;

import java.time.LocalDateTime;
import java.util.List;

@Getter
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ApiError {
private HttpStatus status;
private String reason;
private String message;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DATE_TIME_FORMAT_PATTERN)
private LocalDateTime timestamp;

private List<String> errors;
}
Loading
Loading