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).