43 lines
1.2 KiB
Elixir
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
|