diff --git a/building_server/lib/building_server_web/controllers/building_controller.ex b/building_server/lib/building_server_web/controllers/building_controller.ex index f3ce74b..42f6643 100644 --- a/building_server/lib/building_server_web/controllers/building_controller.ex +++ b/building_server/lib/building_server_web/controllers/building_controller.ex @@ -1,9 +1,27 @@ defmodule BuildingServerWeb.BuildingController do use BuildingServerWeb, :controller - alias BuildingServer.{Repo, Building} + alias BuildingServer.Repo + import Ecto.Query, only: [from: 2] def index(conn, _params) do - buildings = Repo.all(Building) - render conn, "index.json", buildings: buildings + query = from bldg in "buildings", + where: bldg.x >= 0 + buildings = Repo.all(query) + render conn, "buildings.json", buildings: buildings end + + def get_building(conn, %{"address" => address}) do + query = from bldg in "buildings", + where: bldg.address == ^address + buildings = Repo.all(query) + render conn, "buildings.json", buildings: buildings + end + + def get_buildings_in_address(conn, %{"address" => address}) do + query = from bldg in "buildings", + where: bldg.flr == ^address + buildings = Repo.all(query) + render conn, "buildings.json", buildings: buildings + end + end diff --git a/building_server/lib/building_server_web/router.ex b/building_server/lib/building_server_web/router.ex index 12cffd3..58e3a83 100644 --- a/building_server/lib/building_server_web/router.ex +++ b/building_server/lib/building_server_web/router.ex @@ -23,5 +23,8 @@ defmodule BuildingServerWeb.Router do pipe_through :api get "/buildings", BuildingController, :index + get "/buildings/:address", BuildingController, :get_building + get "/buildings/in/:address", BuildingController, :get_buildings_in_address + end end diff --git a/building_server/lib/building_server_web/views/building_view.ex b/building_server/lib/building_server_web/views/building_view.ex index 49e3cc0..1638e49 100644 --- a/building_server/lib/building_server_web/views/building_view.ex +++ b/building_server/lib/building_server_web/views/building_view.ex @@ -1,10 +1,8 @@ defmodule BuildingServerWeb.BuildingView do use BuildingServerWeb, :view - def render("index.json", %{buildings: buildings}) do - %{ - buildings: Enum.map(buildings, &building_json/1) - } + def render("buildings.json", %{buildings: buildings}) do + buildings end def building_json(building) do