summaryrefslogtreecommitdiff
path: root/lib/aggiedit
diff options
context:
space:
mode:
Diffstat (limited to 'lib/aggiedit')
-rw-r--r--lib/aggiedit/rooms.ex8
-rw-r--r--lib/aggiedit/rooms/comment.ex4
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/aggiedit/rooms.ex b/lib/aggiedit/rooms.ex
index 41df588..239dd90 100644
--- a/lib/aggiedit/rooms.ex
+++ b/lib/aggiedit/rooms.ex
@@ -94,7 +94,7 @@ defmodule Aggiedit.Rooms do
end
def vote_count(post) do
- votes = post
+ post
|> Repo.preload(:votes)
|> Map.get(:votes)
|> Enum.map(fn vote -> if vote.is_up, do: 1, else: -1 end)
@@ -105,11 +105,17 @@ defmodule Aggiedit.Rooms do
is_up = direction == "upvote"
vote = %Vote{is_up: is_up, user: user, post: post}
|> Repo.insert(on_conflict: [set: [is_up: is_up]], conflict_target: [:user_id, :post_id])
+
post = change_post(post, %{score: vote_count(post)})
|> Repo.update()
+
broadcast_post_over_room(post, :post_voted)
end
+ def comment_post(%Post{} = post, %User{} = user, comment) do
+ Repo.insert(%Comment{comment: comment, user: user, post: post})
+ end
+
defp broadcast_post_over_room({:error, _reason}=error, _event), do: error
defp broadcast_post_over_room({:ok, post}, event) do
PubSub.broadcast(Aggiedit.PubSub, "room:#{post.room_id}:posts", {event, post})
diff --git a/lib/aggiedit/rooms/comment.ex b/lib/aggiedit/rooms/comment.ex
index 6747ba3..01f411a 100644
--- a/lib/aggiedit/rooms/comment.ex
+++ b/lib/aggiedit/rooms/comment.ex
@@ -17,4 +17,8 @@ defmodule Aggiedit.Post.Comment do
|> cast(attrs, [:comment])
|> validate_required([:comment])
end
+
+ def serialize(c) do
+ %{"body" => c.comment, "user" => c.user.username, "id" => c.id, "inserted_at" => c.inserted_at}
+ end
end