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 | |
parent | 61c2c9370a0e0139bdb9cab1de64723d60b2682c (diff) | |
download | aggiedit-ed22eb20f9f320d5ded4951c16fbb867b6883ce1.tar.gz aggiedit-ed22eb20f9f320d5ded4951c16fbb867b6883ce1.zip |
Add uploads; next up - user authentication on post
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 |