Создаем на 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.getDistance реализуем следующий метод:
GET /api/vehicles/milage - по переданному id машины, читает все движения и вычисляет пройденное машиной расстояние / первая запись о движении считается начальной точкой / если записей о движении нет или она одна - пройденное расстояние ноль / для удаленных (с deletedAt не null) или несуществующих машин возвращаем ошибку 400
* Разработайте метод API возвращающий среднюю скорость машины
Задания со звездочкой предназначены для персонального роста и необязательны к показу при защите лабораторной работы
Синхронизируем локальный репозиторий с удаленным (сделаем push на Github)