Hasura ma wbudowaną obsługę PostGIS w swoim schemacie GraphQL. Ponieważ Twoje pole ma już typ geography
, nie potrzebujesz tej funkcji.
W Hasurze musisz stworzyć relację między offers
i address
tabele, a zapytanie GraphQL powinno wyglądać następująco:
query nearby_offers($point: geography!) {
offers(where: {address: {location: {_st_d_within: {distance: 200000, from: $point}}}}) {
id
offer_fields
address {
location
}
}
}
Typ geografii w Hasura oczekuje, że wartość będzie w GEOJSON
format. Oto jak zmienna $point
powinien wyglądać tak:
{
"point": {
"type" : "Point",
"coordinates": [longitude, latitude]
}
}
Ten sam typ zmiennej (GEOJSON) jest oczekiwany podczas wstawiania wartości (mutacja).