UNPKG

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.31 kB
function K(C){console.log("\uD83D\uDCCD Extending GDB with geolocation operators...");const H={$near:(p,j)=>{console.log("\u2139\uFE0F Geo: Ejecutando operador $near");const{latitude:b,longitude:k,radius:f}=j;if(typeof b!=="number"||typeof k!=="number"||typeof f!=="number")return console.error("\u274C Geo: Consulta inv\xE1lida para $near:",j),!1;const A=p?.latitude||p?.location?.latitude,E=p?.longitude||p?.location?.longitude;if(typeof A!=="number"||typeof E!=="number")return!1;return I(A,E,b,k)<=f},$bbox:(p,j)=>{console.log("\u2139\uFE0F Geo: Ejecutando operador $bbox");const{minLat:b,maxLat:k,minLng:f,maxLng:A}=j;if(typeof b!=="number"||typeof k!=="number"||typeof f!=="number"||typeof A!=="number")return console.error("\u274C Geo: Consulta inv\xE1lida para $bbox:",j),!1;const E=p?.latitude||p?.location?.latitude,z=p?.longitude||p?.location?.longitude;if(typeof E!=="number"||typeof z!=="number")return!1;return E>=b&&E<=k&&z>=f&&z<=A}};function I(p,j,b,k){const f=(J)=>J*Math.PI/180,E=f(b-p),z=f(k-j),F=Math.sin(E/2)*Math.sin(E/2)+Math.cos(f(p))*Math.cos(f(b))*Math.sin(z/2)*Math.sin(z/2);return 6371*(2*Math.atan2(Math.sqrt(F),Math.sqrt(1-F)))}return C.operators={...C.operators,...H},C}var N=(C)=>{return console.log("\u2705 Geo: + Geolocation operators."),K(C)};export{K as withModule,N as init};