Skip to content
Snippets Groups Projects
Commit fd87cc74 authored by Kerdo Kurs's avatar Kerdo Kurs
Browse files

refactor search saving logic #50

parent 7b6436fd
No related branches found
No related tags found
No related merge requests found
Pipeline #46643 failed
......@@ -55,43 +55,47 @@ defmodule PropTrackrWeb.SearchController do
end
end
def create(conn, %{ "search" => search }) do
current_user = conn.assigns.current_user
if current_user do
changeset = Search.changeset(%Search{}, search)
query = Search.create_query(changeset.changes, current_user)
saved = if current_user do
searches = Repo.all(
from s in Search,
where: s.user_id == ^current_user.id,
order_by: [asc: s.inserted_at]
)
if length(searches) >= 5 do
case Repo.delete(Enum.at(searches, 0)) do
{:ok, _search} -> :ok
{:error, _changeset} -> :error
end
end
search_assoc = Ecto.build_assoc(current_user, :searches, changeset.changes)
search_changeset = Search.changeset(search_assoc, changeset.changes)
defp save_search(conn, changeset, current_user) do
saved = if current_user do
searches = Repo.all(
from s in Search,
where: s.user_id == ^current_user.id,
order_by: [asc: s.inserted_at]
)
case Repo.insert(search_changeset) do
if length(searches) >= 5 do
case Repo.delete(Enum.at(searches, 0)) do
{:ok, _search} -> :ok
{:error, _changeset} -> :error
end
else
:ok
end
conn = case saved do
:ok -> conn
:error -> conn
|> put_flash(:error, "Unknown error saving search")
search_assoc = Ecto.build_assoc(current_user, :searches, changeset.changes)
search_changeset = Search.changeset(search_assoc, changeset.changes)
case Repo.insert(search_changeset) do
{:ok, _search} -> :ok
{:error, _changeset} -> :error
end
else
:ok
end
case saved do
:ok -> conn
:error -> conn
|> put_flash(:error, "Unknown error saving search")
end
end
def create(conn, %{ "search" => search }) do
current_user = conn.assigns.current_user
if current_user do
changeset = Search.changeset(%Search{}, search)
query = Search.create_query(changeset.changes, current_user)
conn = conn |> save_search(changeset, current_user)
properties = query |> Repo.all()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment