frenzy/lib/frenzy_web/controllers/filter_controller.ex

43 lines
1.2 KiB
Elixir

defmodule FrenzyWeb.FilterController do
use FrenzyWeb, :controller
alias Frenzy.{Repo, Feed, Filter, Rule}
alias FrenzyWeb.Router.Helpers, as: Routes
alias FrenzyWeb.Endpoint
import Ecto.Query
def edit(conn, %{"id" => id}) do
filter = Repo.get(Filter, id) |> Repo.preload(:rules)
changeset = Filter.changeset(filter, %{})
render(conn, "edit.html", changeset: changeset)
end
def update(conn, %{"id" => id, "filter" => filter_params}) do
filter = Repo.get(Filter, id) |> Repo.preload(:rules)
changeset = Filter.changeset(filter, filter_params)
Repo.update(changeset)
redirect(conn, to: Routes.filter_path(Endpoint, :edit, id))
end
def add_rule(conn, %{"id" => id}) do
filter = Repo.get(Filter, id)
changeset =
Ecto.build_assoc(filter, :rules, %{
property: "title",
mode: "contains_string",
param: "",
weight: 5
})
Repo.insert(changeset)
redirect(conn, to: Routes.filter_path(Endpoint, :edit, id))
end
def remove_rule(conn, %{"id" => id, "rule_id" => rule_id}) do
rule = Repo.get(Rule, rule_id)
Repo.delete(rule)
redirect(conn, to: Routes.filter_path(Endpoint, :edit, id))
end
end