Files
ridebus-admin/backend/src/services/liveVehicleMapper.js

33 lines
706 B
JavaScript

function parseNullableNumber(value) {
if (value === undefined || value === null || value === '') {
return null;
}
const parsed = Number.parseFloat(value);
return Number.isFinite(parsed) ? parsed : null;
}
function decorateOfficialVehicle(row) {
return {
...row,
source: 'official',
confidence: 1,
accuracy_m: parseNullableNumber(row.accuracy_meters),
is_estimated: false
};
}
function sortLiveVehicles(a, b) {
if (a.source !== b.source) {
return a.source === 'official' ? -1 : 1;
}
return new Date(b.last_seen_at).getTime() - new Date(a.last_seen_at).getTime();
}
module.exports = {
decorateOfficialVehicle,
parseNullableNumber,
sortLiveVehicles
};