Привет, я Игорь
Серверное приложение-афиша ExploreWithMe (англ. «исследуй со мной») позволяет пользователям делиться информацией об интересных событиях и находить компанию для участия в них.
- Основной сервис - содержит в себе информацию о проводимых событиях, датах проведения событий, количестве участников и другую полезную информацию о мероприятиях. Сервис также позволяет отправлять заявки на участие в данных событиях и комментировать их(при условии, что подана заявка на участие).
- Сервис статистики собирает информацию о просмотрах событий, что позволяет пользователям получать подборку из самых активно просматриваемых событий.
Каждый сервис подключается к отдельной PostgreSQL базе данных.
- Пользователи
- POST /admin/users - Добавление нового пользователя
- GET /admin/users - Возвращает информацию обо всех пользователях (учитываются параметры ограничения выборки), либо о конкретных (учитываются указанные идентификаторы)
- DELETE /admin/users/{userId} - Удаление пользователя по его идентификатору
- Категории
- POST /admin/categories - Добавление новой категории события. Имя категории должно быть уникальным
- PATCH /admin/categories/{catId} - Обновление существующей категории по идентификатору. Имя категории должно быть уникальным
- DELETE /admin/categories/{catId} - Удаление категории по идентификатору. С категорией не должно быть связано ни одного события.
- GET /categories - Получение категорий
- GET /categories/{catId} - Получение информации о категории по идентификатору
- События
- POST /users/{userId}/events - Добавление нового события пользователем. Дата и время на которые намечено событие не может быть раньше, чем через два часа от текущего момента
- PATCH /users/{userId}/events/{eventId} - Изменение события, добавленного текущим пользователем. Изменить можно только отмененные события или события в состоянии ожидания модерации. Дата и время на которые намечено событие не может быть раньше, чем через два часа от текущего момента.
- GET /users/{userId}/events - Получение событий, добавленных текущим пользователем
- GET /users/{userId}/events/{eventId} - Получение полной информации о событии, добавленном текущим пользователем
- PATCH /admin/events/{eventId} - Редактирование данных любого события администратором
- GET /admin/events - Эндпоинт возвращает полную информацию обо всех событиях подходящих под переданные условия
- GET /events - Получение опубликованных событий с возможностью фильтрации
- GET /events/{id} - Получение подробной информации об опубликованном событии по его идентификатору
- Подборки событий
- POST /admin/compilations - Добавление новой подборки событий. Подборка может не содержать событий
- PATCH /admin/compilations/{compId} - Обновить информацию о подборке по ее идентификатору
- DELETE /admin/compilations/{compId} - Удаление подборки по ее идентификатору
- GET /compilations - Получение подборок событий
- GET /compilations/{compId} - Получение подборки событий по ее идентификатору
- Запросы на участие
- GET /users/{userId}/requests - Получение информации о заявках текущего пользователя на участие в чужих событиях.
- POST /users/{userId}/requests - Добавление запроса от текущего пользователя на участие в событии. Нельзя добавить повторный запрос. Инициатор события не может добавить запрос на участие в своём событии. Нельзя участвовать в неопубликованном событии. Если для события отключена пре-модерация запросов на участие, то запрос автоматически перейдет в состояние подтвержденного.
- PATCH /users/{userId}/requests/{requestId}/cancel - Отмена своего запроса на участие в событии
- PATCH /users/{userId}/events/{eventId}/requests - Изменение статуса (подтверждена, отмена) заявок на участие в событии текущего пользователя
- GET /users/{userId}/events/{eventId}/requests - Получение информации о запросах на участие в событии текущего пользователя
- Комментарии к событиям
- POST /users/{userId}/events/{eventId}/comments - Добавление комментария текущего пользователя к событию. Добавить комментарий может только инициатор события или пользователь, отправивший заявку на участие в событии/
- PATCH /users/{userId}/events/{eventId}/comments/{commentId} - Редактирование комментария. Может быть выполнено только автором.
- PATCH /admin/events/{eventId}/comments/{commentId} - Редактирование комментария
- DELETE /users/{userId}/comments/{commentId} - Удаление комментария. Может быть выполнено только автором.
- DELETE /admin/users/{userId}/comments/{commentId} - Удаление комментария
- GET /events/{eventId}/comments - Получение комментариев к событию\
- GET /users/{userId}/events/{eventId}/comments - Получение всех комментариев пользователя к событию
- GET /admin/events/{eventId}/comments - Получение администратором комментариев к событию с полной технической информацией
Мной реализована дополнительная функциональность - возможность комментирования событий.
Java, Maven, Spring-Boot, Hibernate, Postgresql, Lombok, Docker-compose, RestTemplate
- Сборка проекта
- mvn clean
- mvn package
- Запуск docker-compose.yml
- войти в директорию, содержащую файл docker-compose.yml
- выполнить команду docker-compose up --build