Slide 24
Slide 24 text
@michalmuskala Warszawa, 9.06.2016
Ecto.Query
def by_location(query, %{lat: lat, lng: lng, radius: radius}) do
geo_point = %Geo.Point{coordinates: {lat, lng}}
from provider in query,
left_join: location_provider in assoc(provider, :location),
left_join: events in assoc(provider, :events),
left_join: location_event in assoc(events, :location),
where:
geo_search(location_provider.coordinates, ^geo_point, ^radius)
or
geo_search(location_event.coordinates, ^geo_point, ^radius),
distinct: true,
select: provider
end