KebabJoy / vtbMaps

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VtbMaps

Tech stack:


How to run:

  • Run docker-compose up
  • Enter rails' container docker exec -it vtbmaps_web_1 bash
  • Create DB -> rails db:create
  • Run migrations -> rails db:migrate
  • Setup DB data using seeds -> rails db:seed
  • Now you're ready to go. Check out swagger for endpoints and input/output schemas

Features

  • Bank Offices' Query selects the less loaded office and the closest point using postGIS' ST_Distance function to calculate distance in meters.

  • Atms' Query selects the closest ATM point using postGIS' ST_Distance function to calculate distance in meters.

  • Load Value added load_value defining office loading percentage

  • Seeds Seeds to fill up DB with ATMs and offices

  • Для хранения координат мы используем расширение postGIS для PostgreSQL. Координаты хранятся в поле типа geography. Клиент передает координаты пользователя на бекенд. Вызывается кверя с использованием функции ST_Distance(POINT1, POINT2), таким образом мы вместе с запросом выбираем расстояние от пользователя до каждого отделения вместе с информацией об отделении. При этом мы выбираем расстояние сразу деленное на радиус поиска, таким образом, мы разделим пространство поиска на отрезки и первый попавшийся отрезок с отделениями будет первым при сортировке Вторая сортировка упорядочивает отделения по коэффициенту загруженности, и таким образом мы получаем ближайшее не загруженное отделение

About


Languages

Language:Ruby 86.5%Language:HTML 9.3%Language:JavaScript 2.1%Language:CSS 1.2%Language:Dockerfile 0.9%