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