Skip to content

AlexanderKolnakov/java-explore-with-me

Repository files navigation

JAVA-explore-with-me


JAVA-explore-with-me

Данное приложение предназначено для создания/поиска событий или мероприятий.

Приложение использует слудющие технологии:

  • Java version 11
  • Spring Boot (web, validation, data-jpa)
  • Maven
  • используемая БД - PostgreSQL
  • Docker
  • Lombok
  • Json-Simple
  • тестирование Postman коллекцией

Приложение разделено на 2 сервера, общающихся между собой по API:

  • main (обрабатывает запросы от пользователя и все бизнес логика)
  • stats (собирает статистику http запросов к main сервису)

Так же приложение обращается к внешему серверу (Яндекс.Карты) посредствам API для получение информации о локации мероприятия по ее координатам (!) Если данный функциона не работает, необходимо обновить подписку API Яндекс.Карты

Инструкция по развертыванию приложения:

Так как проект разработан для развертывания на удаленном сервере, запуск его настроен через Docker. В файле docker-compose.yml прописаны инструкции для приложения по развертыванию и запуску как серверов, так и необходим БД к ним. Перед запуском убедится что Maven собрал необходимые компоненты, если нет, то произвести clean - package. Дале сформировать Image в Docker, можно как при помощи средств IDEA (перейти в файл docker-compose.yml и запустить) или через командную строку, переместившись в нужную директорию и выполнить команды docker-compose build и docker-compose up. После чего будут собраны Image, на их основе созданы и запущены соответствующие контейнеры.

Ниже приведены эндпоинты и кратное описаних их функционала:

User:

  • создания пользователем учетной записи от имини администратора. (POST "/admin/users")
  • получение списка всех зарегистрированных пользователей администратиором. (GET "/admin/users?from&size")
  • удаление пользователя администратором по его id (DELETE "/admin/users/{userId}")

Category:

  • добавление новой категории мероприятия от имени администратора (POST "/admin/categories")
  • удаление категории мероприятия по ее id от имени администратора (DELETE "/admin/categories/{catId}")
  • обновления данных о категории мероприятия от имени администратора (PATCH "/admin/categories/{catId}")
  • получение списка доступных категорий мероприятий от пользователя (GET "/categories?from&size")
  • получение данных о конкретной категории пероприятия по ее id от пользователя (GET "/categories/{catId}")

Event:

  • поиск мероприятий по заданным параметрам GET "/events?text&categories&paid&rangeStart&rangeEnd&onlyAvailable&sort&from&size"), таким как:
    • описание мероприятия, по ключевым слова (text)
    • по категориям мероприятий (categoriesId)
    • плата за вход (paid)
    • временной интервал поиска мероприятия (rangeStart, rangeEnd)
    • доступно ли мероприятия, не исчерпан ли лимит заявок на участие (onlyAvailable)
    • пагинация, вывод количества удовлетворяющий параметрам поиска мероприятий (from, size)
  • получение информации о конкретном мероприятии по его id (GET "/events/{id}")
  • получение списка мероприятий, созданных конкретным пользователем (GET "/users/{userId}/events?from&size")
  • запрос на создание мероприятия от пользователя, требующее подтверждения администратором (POST "/users/{userId}/events")
  • получение подробной информации о мероприятии по ее id от ползьмователя (GET "/users/{userId}/events/{eventId}")
  • запрос на обновлене информации о мероприятии от пользователя (PATCH "/users/{userId}/events/{eventId}")
  • получение информации о запросах пользователя на участие в мероприятии (GET "/users/{userId}/events/{eventId}/requests")
  • запрос на обновление информации о заявке на участие в событии (PATCH "/users/{userId}/events/{eventId}/requests")
  • получение списка мероприятий от администратора по параметрам (GET "/admin/events?users&states&categories&rangeStart&rangeEnd&from&size")
  • обновление информации о мероприятии от имени администратора (PATCH "/admin/events/{eventId}")

Location:

  • создание локации администратором по ее координатам (POST "/admin/location?lat&lon")
  • получение информации о всех созданных локациях от администратора (GET "/admin/location")
  • поиск мероприя по ее местопроведению и дате (GET "/events/location?locationText&rangeStart&rangeEnd&from&size")

Compilation:

  • получение подборки мероприятий (GET "/compilations?pinned&from&size")
  • получение подборки мероприятий по id (GET "/compilations/{compId}")
  • создание подборки мероприятий администратором (POST "/admin/compilations")
  • удаление подборки мероприятий администратором (DELETE "/admin/compilations/{compId}")
  • обновление информации о подборке от администратора (PATCH "/admin/compilations/{compId}")

Participation Request:

  • получение информации о заявказ пользователя на участие в чужых событиях (GET "/users/{userId}/requests")
  • создание запроса от пользователя на участие в событии (POST "/users/{userId}/requests?userId&eventId")
  • отмена запроса на участие в событии от пользователя (PATCH "/users/{userId}/requests/{requestId}/cancel")

Для тестирования данного приложения к корневой папке проекта имееста Postman коллекция.txt

About

ExploreWithMe project repository .

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors