Skip to content

Latest commit

 

History

History
76 lines (66 loc) · 8.77 KB

README.md

File metadata and controls

76 lines (66 loc) · 8.77 KB

#3

Привет, я Игорь

Я студент Яндекс.Практикума, курс Java-разработчик. Это мой дипломный проект.


Серверное приложение-афиша ExploreWithMe (англ. «исследуй со мной») позволяет пользователям делиться информацией об интересных событиях и находить компанию для участия в них.

Приложение является микросервисным и состоит из двух сервисов:

  1. Основной сервис - содержит в себе информацию о проводимых событиях, датах проведения событий, количестве участников и другую полезную информацию о мероприятиях. Сервис также позволяет отправлять заявки на участие в данных событиях и комментировать их(при условии, что подана заявка на участие).
  2. Сервис статистики собирает информацию о просмотрах событий, что позволяет пользователям получать подборку из самых активно просматриваемых событий.

Каждый сервис подключается к отдельной 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