diff --git a/lib/chiya/notes.ex b/lib/chiya/notes.ex index 414cb2a..b0ceb1f 100644 --- a/lib/chiya/notes.ex +++ b/lib/chiya/notes.ex @@ -218,6 +218,15 @@ defmodule Chiya.Notes do Repo.delete(note) end + def publish_note(%Note{} = note, published_at) do + {1, nil} = + Note + |> where([n], n.id == ^note.id) + |> Repo.update_all(set: [published_at: published_at]) + + {:ok, note} + end + @doc """ Returns an `%Ecto.Changeset{}` for tracking note changes. diff --git a/lib/chiya_web/controllers/note_controller.ex b/lib/chiya_web/controllers/note_controller.ex index 804030b..8be730b 100644 --- a/lib/chiya_web/controllers/note_controller.ex +++ b/lib/chiya_web/controllers/note_controller.ex @@ -105,10 +105,9 @@ defmodule ChiyaWeb.NoteController do end def publish(conn, %{"id" => id}) do - note_params = %{published_at: NaiveDateTime.local_now()} note = Notes.get_note_preloaded!(id) - case Notes.update_note(note, note_params) do + case Notes.publish_note(note, NaiveDateTime.local_now()) do {:ok, note} -> conn |> put_flash(:info, "Note published successfully.") @@ -125,10 +124,9 @@ defmodule ChiyaWeb.NoteController do end def unpublish(conn, %{"id" => id}) do - note_params = %{published_at: nil} note = Notes.get_note_preloaded!(id) - case Notes.update_note(note, note_params) do + case Notes.publish_note(note, nil) do {:ok, note} -> conn |> put_flash(:info, "Note un-published successfully.")