defmodule DiskuyWeb.TopicController do use DiskuyWeb, :controller alias Diskuy.Forum alias Diskuy.Forum.Topic alias Diskuy.Utility.Utility action_fallback DiskuyWeb.FallbackController def index(conn, _params) do topics = Forum.list_topics() render(conn, "index.json", topics: topics) end def create(conn, %{"topic" => topic_params}) do with {:ok, %Topic{} = topic} <- Forum.create_topic(topic_params) do conn |> put_status(:created) |> put_resp_header("location", Routes.topic_path(conn, :show, topic)) |> render("show.json", topic: topic) end end def show(conn, %{"id" => id}) do topic = Forum.get_topic_by_name!(id) render(conn, "show.json", topic: topic) end def update(conn, %{"id" => id, "topic" => topic_params}) do topic = Forum.get_topic_by_name!(id) with {:ok, %Topic{} = topic} <- Forum.update_topic(topic, topic_params) do render(conn, "show.json", topic: topic) end end def delete(conn, %{"id" => id}) do topic = Forum.get_topic_by_name!(id) with {:ok, %Topic{}} <- Forum.delete_topic(topic) do send_resp(conn, :no_content, "") end end end