Микросервис для сбора и анализа статистики турниров, матчей, игроков и команд.
- Добавление статистики матчей и турниров
- Получение статистики игрока и команды
- Получение топ-игроков по очкам и победам
- История матчей по спорту и участнику
- Корректная обработка ошибок (400, 404, 500)
- Java 17
- Spring Boot
- Maven
- PostgreSQL (или другая совместимая реляционная БД)
- Docker, Docker Compose
mvn clean package -DskipTests
docker-compose build
docker-compose up -d(Также нужно будет создать таблицы по sql скрипту из файла StatisticsServiceDB.sql, либо же hibernate автоматически создаст нужные таблицы и индексы при запуске приложения, если в файле application.yml в jpa: hibernate: ddl-auto: вместо none поставить параметр update(пока не рекомендуется)) (В файле docker-compose.yml поменять данные на свои и аналогично в файле application.yml в папке resources)
http://localhost:8081
POST /api/v1/stats/update
Пример тела запроса:
{
"tournamentId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"sport": "football",
"tournamentType": "single_elimination",
"matches": [
{
"matchId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
"participants": [
{
"participantId": "cccccccc-cccc-cccc-cccc-cccccccccccc",
"participantType": "player",
"points": 7,
"isWinner": true,
"goals": 3,
"assists": 2,
"fouls": 1,
"yellowCards": 1,
"redCards": 0,
"knockdowns": 0,
"submissions": 0,
"setsWon": 1,
"timePlayed": 90.0
}
]
}
]
}GET /api/v1/stats/player/{userId}?sport=football
GET /api/v1/stats/team/{teamId}?sport=football
GET /api/v1/stats/top/players?sport=football
GET /api/v1/stats/matches/history?sport=football
GET /api/v1/stats/matches/history?sport=football&participant_id={uuid}
- Импортируйте коллекцию запросов или используйте примеры выше.
- Для POST-запроса используйте Content-Type: application/json.
- Для GET-запросов используйте валидные UUID и значения enum:
- sport: football, boxing, basketball, chess, tennis, jiu_jitsu
- tournamentType: round_robin, single_elimination, double_elimination, group_stage
- participantType: player, team
- 400 Bad Request — невалидный JSON, неверные значения enum, ошибки валидации
- 404 Not Found — не найден игрок, команда или другой ресурс
- 500 Internal Server Error — внутренняя ошибка сервера