Basic Routes
This commit is contained in:
@@ -1,3 +1,52 @@
|
||||
// - /api/v0/routes
|
||||
// - /api/v0/route/:id
|
||||
// - /api/v0/stops/:id
|
||||
import express from "express";
|
||||
import * as dal from "../dal/staticDal.js";
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.get("/routes", (req, res) => {
|
||||
const routes = dal.getRoutes();
|
||||
|
||||
res.json({meta: {returned: routes.length}, data: routes});
|
||||
});
|
||||
|
||||
router.get("/routes/:routeId", (req, res) => {
|
||||
const routeId = req.params.routeId;
|
||||
let route = dal.getRouteById(routeId) ?? null;
|
||||
|
||||
if (route === null) {
|
||||
const all = dal.getRoutes();
|
||||
route = all.find(r => {
|
||||
const rid = r.route_id ?? r.routeId ?? r.route;
|
||||
return rid != null && String(rid) === String(routeId);
|
||||
}) ?? null;
|
||||
}
|
||||
|
||||
const routePath = dal.getRoutePath(routeId) ?? null;
|
||||
let stations = dal.getStopsByRoute(routeId) ?? [];
|
||||
|
||||
res.json({data: {route, routePath, stations}});
|
||||
});
|
||||
|
||||
router.get("/routes/:routeId/stations", (req, res) => {
|
||||
const routeId = req.params.routeId;
|
||||
const stations = dal.getStopsByRoute(routeId) ?? [];
|
||||
|
||||
res.json({meta: {routeId: String(routeId), returned: stations.length}, data: stations});
|
||||
});
|
||||
|
||||
router.get("/stations", (req, res) => {
|
||||
const route = req.query.route;
|
||||
const stations = route ? (dal.getStopsByRoute(route) ?? []) : (dal.getStations() ?? []);
|
||||
|
||||
res.json({meta: {returned: stations.length}, data: stations});
|
||||
});
|
||||
|
||||
router.get("/station/:stationId", (req, res) => {
|
||||
const stationId = req.params.stationId;
|
||||
const station = dal.getStationById(stationId);
|
||||
if (!station) return res.status(404).json({error: "Station Was Not Found"});
|
||||
|
||||
res.json({data: station});
|
||||
});
|
||||
|
||||
export default router;
|
||||
|
||||
@@ -1 +1,48 @@
|
||||
// - /api/v0/vehicles/:id
|
||||
import express from "express";
|
||||
import * as dal from "../dal/staticDal.js";
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.get("/", (req, res) => {
|
||||
let vehicles = dal.getVehicles();
|
||||
|
||||
const {routeNum, routeName, destination, minLat, maxLat, minLng, maxLng, limit} = req.query;
|
||||
|
||||
if (routeNum) vehicles = vehicles.filter(v => String(v.routeNum) === String(routeNum));
|
||||
if (routeName) vehicles = vehicles.filter(v => v.routeName && v.routeName.toLowerCase().includes(String(routeName).toLowerCase()));
|
||||
if (destination) vehicles = vehicles.filter(v => v.destination && v.destination.toLowerCase().includes(String(destination).toLowerCase()));
|
||||
|
||||
if (minLat || maxLat || minLng || maxLng) {
|
||||
const minLatN = parseFloat(minLat ?? -90);
|
||||
const maxLatN = parseFloat(maxLat ?? 90);
|
||||
const minLngN = parseFloat(minLng ?? -180);
|
||||
const maxLngN = parseFloat(maxLng ?? 180);
|
||||
|
||||
vehicles = vehicles.filter(v => {
|
||||
const lat = parseFloat(v.location?.latitude);
|
||||
const lng = parseFloat(v.location?.longitude);
|
||||
|
||||
return lat >= minLatN && lat <= maxLatN && lng >= minLngN && lng <= maxLngN;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
let returned = vehicles.length;
|
||||
if (limit) {
|
||||
const lim = Math.max(1, Math.min(1000, parseInt(limit, 10) || 100));
|
||||
|
||||
vehicles = vehicles.slice(0, lim);
|
||||
returned = vehicles.length;
|
||||
}
|
||||
|
||||
res.json({meta: {returned}, data: vehicles});
|
||||
});
|
||||
|
||||
router.get("/:id", (req, res) => {
|
||||
const v = dal.getVehicleById(req.params.id);
|
||||
if (!v) return res.status(404).json({error: "Vehicle Was Not Found"});
|
||||
|
||||
res.json({data: v});
|
||||
});
|
||||
|
||||
export default router;
|
||||
|
||||
Reference in New Issue
Block a user