genosdb
Version:
GenosDB (GDB): distributed graph database in real-time, peer-to-peer, scalable storage - efficient querying of complex relationships.
2 lines (1 loc) • 1.25 kB
JavaScript
function I(A){console.log("\uD83D\uDCCD Extending GDB with geolocation operators...");const E={$near:(c,f)=>{console.log("Ejecutando operador $near");const{latitude:s,longitude:j,radius:b}=f;if(typeof s!=="number"||typeof j!=="number"||typeof b!=="number")return console.error("Consulta inv\xE1lida para $near:",f),!1;const z=c?.latitude||c?.location?.latitude,p=c?.longitude||c?.location?.longitude;if(typeof z!=="number"||typeof p!=="number")return!1;return F(z,p,s,j)<=b},$bbox:(c,f)=>{console.log("Ejecutando operador $bbox");const{minLat:s,maxLat:j,minLng:b,maxLng:z}=f;if(typeof s!=="number"||typeof j!=="number"||typeof b!=="number"||typeof z!=="number")return console.error("Consulta inv\xE1lida para $bbox:",f),!1;const p=c?.latitude||c?.location?.latitude,k=c?.longitude||c?.location?.longitude;if(typeof p!=="number"||typeof k!=="number")return!1;return p>=s&&p<=j&&k>=b&&k<=z}};function F(c,f,s,j){const b=(H)=>H*Math.PI/180,p=b(s-c),k=b(j-f),C=Math.sin(p/2)*Math.sin(p/2)+Math.cos(b(c))*Math.cos(b(s))*Math.sin(k/2)*Math.sin(k/2);return 6371*(2*Math.atan2(Math.sqrt(C),Math.sqrt(1-C)))}return A.operators={...A.operators,...E},A}var K=(A)=>{return console.log("\uD83D\uDCCD + Geolocation operators."),I(A)};export{I as withModule,K as init};