From 183056edbb451df82a7bbdae82bbc29dd01538ca Mon Sep 17 00:00:00 2001 From: Muhammad Rafif Elfazri <rafif.elfazri@gmail.com> Date: Sat, 2 Jan 2021 20:44:06 +0700 Subject: [PATCH 1/2] Add get_topic_by_name --- diskuy_back/lib/diskuy/forum.ex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/diskuy_back/lib/diskuy/forum.ex b/diskuy_back/lib/diskuy/forum.ex index 6d9ba81..0d0d0fb 100644 --- a/diskuy_back/lib/diskuy/forum.ex +++ b/diskuy_back/lib/diskuy/forum.ex @@ -37,6 +37,8 @@ defmodule Diskuy.Forum do """ def get_topic!(id), do: Repo.get!(Topic, id) + def get_topic_by_name!(name), do: Repo.get_by(Topic, name: name) + @doc """ Creates a topic. -- GitLab From 2888589f42a7596ed45e96bc53f6ef6cb52eddae Mon Sep 17 00:00:00 2001 From: Muhammad Rafif Elfazri <rafif.elfazri@gmail.com> Date: Sat, 2 Jan 2021 20:44:39 +0700 Subject: [PATCH 2/2] Change use get with get_by_name --- .../lib/diskuy_web/controllers/topic_controller.ex | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/diskuy_back/lib/diskuy_web/controllers/topic_controller.ex b/diskuy_back/lib/diskuy_web/controllers/topic_controller.ex index 3274477..3e50fdf 100644 --- a/diskuy_back/lib/diskuy_web/controllers/topic_controller.ex +++ b/diskuy_back/lib/diskuy_web/controllers/topic_controller.ex @@ -3,6 +3,7 @@ defmodule DiskuyWeb.TopicController do alias Diskuy.Forum alias Diskuy.Forum.Topic + alias Diskuy.Utility.Utility action_fallback DiskuyWeb.FallbackController @@ -21,12 +22,15 @@ defmodule DiskuyWeb.TopicController do end def show(conn, %{"id" => id}) do - topic = Forum.get_topic!(id) + new_id = Utility.capitalize_string(id) + topic = Forum.get_topic_by_name!(new_id) + render(conn, "show.json", topic: topic) end def update(conn, %{"id" => id, "topic" => topic_params}) do - topic = Forum.get_topic!(id) + new_id = Utility.capitalize_string(id) + topic = Forum.get_topic_by_name!(new_id) with {:ok, %Topic{} = topic} <- Forum.update_topic(topic, topic_params) do render(conn, "show.json", topic: topic) @@ -34,7 +38,8 @@ defmodule DiskuyWeb.TopicController do end def delete(conn, %{"id" => id}) do - topic = Forum.get_topic!(id) + new_id = Utility.capitalize_string(id) + topic = Forum.get_topic_by_name!(new_id) with {:ok, %Topic{}} <- Forum.delete_topic(topic) do send_resp(conn, :no_content, "") -- GitLab