diff options
author | Logan Hunt <loganhunt@simponic.xyz> | 2022-04-06 18:17:27 -0600 |
---|---|---|
committer | Logan Hunt <loganhunt@simponic.xyz> | 2022-04-06 18:17:27 -0600 |
commit | ed22eb20f9f320d5ded4951c16fbb867b6883ce1 (patch) | |
tree | a881af22341fe6f4fe51a120f3c1a2bbb47ca742 /lib/aggiedit/rooms.ex | |
parent | 61c2c9370a0e0139bdb9cab1de64723d60b2682c (diff) | |
download | aggiedit-ed22eb20f9f320d5ded4951c16fbb867b6883ce1.tar.gz aggiedit-ed22eb20f9f320d5ded4951c16fbb867b6883ce1.zip |
Add uploads; next up - user authentication on post
Diffstat (limited to 'lib/aggiedit/rooms.ex')
-rw-r--r-- | lib/aggiedit/rooms.ex | 35 |
1 files changed, 9 insertions, 26 deletions
diff --git a/lib/aggiedit/rooms.ex b/lib/aggiedit/rooms.ex index fb10c4b..272f9b4 100644 --- a/lib/aggiedit/rooms.ex +++ b/lib/aggiedit/rooms.ex @@ -140,41 +140,24 @@ defmodule Aggiedit.Rooms do """ def get_post!(id), do: Repo.get!(Post, id) - @doc """ - Creates a post. - - ## Examples - - iex> create_post(%{field: value}) - {:ok, %Post{}} - - iex> create_post(%{field: bad_value}) - {:error, %Ecto.Changeset{}} - - """ - def create_post(attrs \\ %{}) do + def create_post(attrs, after_save \\ &{:ok, &1}) do %Post{} |> Post.changeset(attrs) |> Repo.insert() + |> post_saved(after_save) end - @doc """ - Updates a post. - - ## Examples - - iex> update_post(post, %{field: new_value}) - {:ok, %Post{}} - - iex> update_post(post, %{field: bad_value}) - {:error, %Ecto.Changeset{}} - - """ - def update_post(%Post{} = post, attrs) do + def update_post(%Post{} = post, attrs, after_save \\ &{:ok, &1}) do post |> Post.changeset(attrs) |> Repo.update() + |> post_saved(after_save) + end + + defp post_saved({:ok, post}, func) do + {:ok, _post} = func.(post) end + defp post_saved(error, _fun), do: error @doc """ Deletes a post. |