@warlock.js/cascade
Version:
ORM for managing databases
45 lines (44 loc) • 1.33 kB
JavaScript
import {Pipeline}from'./pipeline.js';class GeoNearPipeline extends Pipeline {
column;
location;
maxDistance;
minDistance;
/**
* Constructor
*/
constructor(column, location, maxDistance, minDistance) {
super("geoNear");
this.column = column;
this.location = location;
this.maxDistance = maxDistance;
this.minDistance = minDistance;
}
/**
* {@inheritdoc}
*/
parse() {
return {
$geoNear: {
near: {
type: "Point",
coordinates: [this.location.lng, this.location.lat],
},
distanceField: this.column,
...(this.maxDistance && { maxDistance: this.maxDistance }),
...(this.minDistance && { minDistance: this.minDistance }),
spherical: true,
// distance should be calculated in kilometers
distanceMultiplier: 0.001,
},
};
}
/**
* Sort Order
*/
sortOrder() {
return -1;
}
}
function geoNearPipeline(column, location, maxDistance, minDistance) {
return new GeoNearPipeline(column, location, maxDistance, minDistance);
}export{GeoNearPipeline,geoNearPipeline};//# sourceMappingURL=GeoNearPipeline.js.map