summaryrefslogtreecommitdiff
path: root/lib/aggiedit
diff options
context:
space:
mode:
authorLogan Hunt <loganhunt@simponic.xyz>2022-04-06 18:17:27 -0600
committerLogan Hunt <loganhunt@simponic.xyz>2022-04-06 18:17:27 -0600
commited22eb20f9f320d5ded4951c16fbb867b6883ce1 (patch)
treea881af22341fe6f4fe51a120f3c1a2bbb47ca742 /lib/aggiedit
parent61c2c9370a0e0139bdb9cab1de64723d60b2682c (diff)
downloadaggiedit-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.ex35
-rw-r--r--lib/aggiedit/rooms/post.ex1
-rw-r--r--lib/aggiedit/uploads/upload.ex5
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