defmodule PhilomenaWeb.LoadPollPlug do alias Philomena.Polls.Poll alias Philomena.Repo import Ecto.Query def init(opts), do: opts def call(%{assigns: %{topic: topic}} = conn, _opts) do Poll |> where(topic_id: ^topic.id) |> Repo.one() |> case do nil -> PhilomenaWeb.NotFoundPlug.call(conn) poll -> Plug.Conn.assign(conn, :poll, poll) end end end