Express + Sequelize
ЛР13
Создаем на Github репозиторий cwp-13, клонируем его, открываем в IDE
Создадим пустую базу данных tracking и настроим подлкючение к ней из index.js через sequelize
Наш сервер будет предоставлять API сервиса отслеживания автомобилей
Создадим таблицы по приведенным схемам применяя подход code first
1. Таблица fleets:
"id": int / autoincrement
"name": string
2. Таблица vehicles:
"id": int / autoincrement
"name": string
"fleetId": int / reference to "fleets"
3. Таблица motions:
"id": int / autoincrement
"latitude": double
"longitude": double
"time": datetime
"vehicleId": int / reference to "vehicles"
4. Создайте геттер уровня модели latLng для модели motion возвращающее объект вида:
{
  latitude: 51.5103,
  longitude: 7.49347
}
5. В опциях sequelize укажем:
const dbOptions = {
  host: ...,
  dialect: ...,
  define: {
    timestamps: true,
    paranoid: true
  }
};

const sequelize = new Sequelize(..., ..., ..., dbOptions);
Напишем API с использованием express, который будет предоставлять следующие методы:

GET /api/fleets/readall - возвращает массив машинных парков

GET /api/fleets/read - возвращает машинный парк по id / для удаленных (с deletedAt не null) или несуществующих парков возвращаем ошибку 404

POST /api/fleets/create - создает машинный парк / id генерируется на сервере / сервер возвращает объект созданного парка

POST /api/fleets/update - обновляет машинный парк / сервер возвращает объект обновленного парка / для удаленных (с deletedAt не null) или несуществующих парков возвращаем ошибку 400

POST /api/fleets/delete - удаляет машинный парк / сервер возвращает объект удаленного парка / для несуществующих парков возвращаем ошибку 400

GET /api/vehicles/readall - возвращает массив машин по переданному fleedId / для удаленных (с deletedAt не null) или несуществующих парков возвращаем ошибку 404

GET /api/vehicles/read - возвращает машину по id / для удаленных (с deletedAt не null) или несуществующих машин возвращаем ошибку 404

POST /api/vehicles/create - создает машину с привязкой к парку / id генерируется на сервере / сервер возвращает объект созданной машины

POST /api/vehicles/update - обновляет машину / сервер возвращает объект обновленной машины / для удаленных (с deletedAt не null) или несуществующих машин возвращаем ошибку 400

POST /api/vehicles/delete - удаляет машинну / сервер возвращает объект удаленной машины / для несуществующих машин возвращаем ошибку 400

POST /api/motions/create - создает запись о движении с привязкой к машине / возвращает созданный объект движения
Не забываем валидировать входящие данные!
Установим библиотеку geolib
С помощью geolib.getDistance реализуем следующий метод:

GET /api/vehicles/milage - по переданному id машины, читает все движения и вычисляет пройденное машиной расстояние / первая запись о движении считается начальной точкой / если записей о движении нет или она одна - пройденное расстояние ноль / для удаленных (с deletedAt не null) или несуществующих машин возвращаем ошибку 400
* Разработайте метод API возвращающий среднюю скорость машины
Задания со звездочкой предназначены для персонального роста и необязательны к показу при защите лабораторной работы
Синхронизируем локальный репозиторий с удаленным (сделаем push на Github)
Покажите историю коммитов своего репозитория на Github
Продемонстрируйте работу сервера через Postman
Документация по Express
Документация по Sequelize