diff options
Diffstat (limited to 'lib/aggiedit')
-rw-r--r-- | lib/aggiedit/rooms.ex | 35 | ||||
-rw-r--r-- | lib/aggiedit/rooms/post.ex | 1 | ||||
-rw-r--r-- | lib/aggiedit/uploads/upload.ex | 5 |
3 files changed, 15 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. diff --git a/lib/aggiedit/rooms/post.ex b/lib/aggiedit/rooms/post.ex index ee9450d..2156fae 100644 --- a/lib/aggiedit/rooms/post.ex +++ b/lib/aggiedit/rooms/post.ex @@ -1,6 +1,7 @@ defmodule Aggiedit.Rooms.Post do use Ecto.Schema import Ecto.Changeset + alias Aggiedit.Repo schema "posts" do field :body, :string diff --git a/lib/aggiedit/uploads/upload.ex b/lib/aggiedit/uploads/upload.ex index f5f028d..ac3b8ad 100644 --- a/lib/aggiedit/uploads/upload.ex +++ b/lib/aggiedit/uploads/upload.ex @@ -18,4 +18,9 @@ defmodule Aggiedit.Uploads.Upload do |> cast(attrs, [:file, :mime, :size]) |> validate_required([:file, :mime, :size]) end + + def change_user(upload, user) do + change(upload) + |> put_assoc(:user, user) + end end |