Split GraphQL as separate context
This commit is contained in:
46
lib/graphql/resolvers/address.ex
Normal file
46
lib/graphql/resolvers/address.ex
Normal file
@@ -0,0 +1,46 @@
|
||||
defmodule Mobilizon.GraphQL.Resolvers.Address do
|
||||
@moduledoc """
|
||||
Handles the comment-related GraphQL calls
|
||||
"""
|
||||
|
||||
alias Mobilizon.Addresses.Address
|
||||
alias Mobilizon.Service.Geospatial
|
||||
|
||||
require Logger
|
||||
|
||||
@doc """
|
||||
Search an address
|
||||
"""
|
||||
@spec search(map, map, map) :: {:ok, [Address.t()]}
|
||||
def search(
|
||||
_parent,
|
||||
%{query: query, locale: locale, page: _page, limit: _limit},
|
||||
%{context: %{ip: ip}}
|
||||
) do
|
||||
geolix = Geolix.lookup(ip)
|
||||
|
||||
country_code =
|
||||
case geolix do
|
||||
%{country: %{iso_code: country_code}} -> String.downcase(country_code)
|
||||
_ -> nil
|
||||
end
|
||||
|
||||
addresses = Geospatial.service().search(query, lang: locale, country_code: country_code)
|
||||
|
||||
{:ok, addresses}
|
||||
end
|
||||
|
||||
@doc """
|
||||
Reverse geocode some coordinates
|
||||
"""
|
||||
@spec reverse_geocode(map, map, map) :: {:ok, [Address.t()]}
|
||||
def reverse_geocode(
|
||||
_parent,
|
||||
%{longitude: longitude, latitude: latitude, zoom: zoom, locale: locale},
|
||||
_context
|
||||
) do
|
||||
addresses = Geospatial.service().geocode(longitude, latitude, lang: locale, zoom: zoom)
|
||||
|
||||
{:ok, addresses}
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user