mirror of
https://github.com/ClaperCo/Claper.git
synced 2025-12-16 03:47:56 +01:00
33 lines
915 B
Elixir
33 lines
915 B
Elixir
|
|
defmodule ClaperWeb.PostController do
|
||
|
|
use ClaperWeb, :controller
|
||
|
|
|
||
|
|
def index(conn, %{"event_id" => event_id}) do
|
||
|
|
try do
|
||
|
|
with event <- Claper.Events.get_event!(event_id),
|
||
|
|
posts <- Claper.Posts.list_posts(event.uuid, [:user, :attendee]) do
|
||
|
|
render(conn, "index.json", posts: posts)
|
||
|
|
end
|
||
|
|
rescue
|
||
|
|
Ecto.NoResultsError -> conn
|
||
|
|
|> put_status(:not_found)
|
||
|
|
|> put_view(ClaperWeb.ErrorView)
|
||
|
|
|> render(:"404")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
def create(conn, %{"event_id" => event_id, "body" => body}) do
|
||
|
|
try do
|
||
|
|
with event <- Claper.Events.get_event!(event_id) do
|
||
|
|
case Claper.Posts.create_post(event, %{body: body}) do
|
||
|
|
{:ok, post} -> render(conn, "post.json", post: post)
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
rescue
|
||
|
|
Ecto.NoResultsError -> conn
|
||
|
|
|> put_status(:not_found)
|
||
|
|
|> put_view(ClaperWeb.ErrorView)
|
||
|
|
|> render(:"404")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|