From a96ee483d6fff959ddf3b0a70c8548389c5ba6cf Mon Sep 17 00:00:00 2001
From: Muhammad Rafif Elfazri <rafif.elfazri@gmail.com>
Date: Fri, 8 Jan 2021 14:54:13 +0700
Subject: [PATCH 1/3] DB topics and post must have token

---
 .../lib/diskuy_web/controllers/post_controller.ex      | 10 +++++++++-
 diskuy_back/lib/diskuy_web/router.ex                   |  7 ++++---
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/diskuy_back/lib/diskuy_web/controllers/post_controller.ex b/diskuy_back/lib/diskuy_web/controllers/post_controller.ex
index 585b55b..b48f5ef 100644
--- a/diskuy_back/lib/diskuy_web/controllers/post_controller.ex
+++ b/diskuy_back/lib/diskuy_web/controllers/post_controller.ex
@@ -12,7 +12,8 @@ defmodule DiskuyWeb.PostController do
   end
 
   def create(conn, %{"post" => post_params}) do
-    with {:ok, %Post{} = post} <- Forum.create_post(post_params) do
+    new_params = put_user_id(conn, %{"post" => post_params})
+    with {:ok, %Post{} = post} <- Forum.create_post(new_params) do
       conn
       |> put_status(:created)
       |> put_resp_header("location", Routes.post_path(conn, :show, post))
@@ -40,4 +41,11 @@ defmodule DiskuyWeb.PostController do
       send_resp(conn, :no_content, "")
     end
   end
+
+  defp put_user_id(conn, %{"post" => post_params}) do
+    current_user = Guardian.Plug.current_resource(conn)
+    new_params = Map.put(post_params, "user_id", current_user.id)
+    new_params
+  end
+
 end
diff --git a/diskuy_back/lib/diskuy_web/router.ex b/diskuy_back/lib/diskuy_web/router.ex
index 394ea7b..a50c6cf 100644
--- a/diskuy_back/lib/diskuy_web/router.ex
+++ b/diskuy_back/lib/diskuy_web/router.ex
@@ -14,20 +14,21 @@ defmodule DiskuyWeb.Router do
     pipe_through [:api, :auth]
     get "/current", UserController, :currentuser
     resources "/threads", ThreadController, except: [:new, :edit, :show, :index]
+    resources "/topics", TopicController, except: [:new, :edit, :show, :index]
+    resources "/post", PostController, except: [:new, :edit, :show, :index]
   end
 
   scope "/api", DiskuyWeb do
     pipe_through :api
-    # resources "/users", UserController, except: [:new, :edit]
     get "/users", UserController, :index
     get "/users/:id", UserController, :show
-    resources "/topics", TopicController, except: [:new, :edit]
+    resources "/topics", TopicController, except: [:new, :edit, :create, :update, :delete]
     options   "/topics", TopicController, :options
     options   "/topics/:id", TopicController, :options
     resources "/threads", ThreadController, except: [:new, :edit, :create, :update, :delete]
     options   "/threads", ThreadController, :options
     options   "/threads/:id", ThreadController, :options
-    resources "/post", PostController, except: [:new, :edit]
+    resources "/post", PostController, except: [:new, :edit, :create, :update, :delete]
     options   "/post", PostController, :options
     options   "/post/:id", PostController, :options
     post "/users/signup", UserController, :create
-- 
GitLab


From 5c38ccee254dbdaee7dbd20943e6ac3a581f430d Mon Sep 17 00:00:00 2001
From: Muhammad Rafif Elfazri <rafif.elfazri@gmail.com>
Date: Fri, 8 Jan 2021 15:04:33 +0700
Subject: [PATCH 2/3] Delete Status and post_parent_id

---
 diskuy_back/lib/diskuy/forum/post.ex                       | 7 ++-----
 .../priv/repo/migrations/20201211055930_create_posts.exs   | 3 ---
 2 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/diskuy_back/lib/diskuy/forum/post.ex b/diskuy_back/lib/diskuy/forum/post.ex
index 7b78410..ef1a9a3 100644
--- a/diskuy_back/lib/diskuy/forum/post.ex
+++ b/diskuy_back/lib/diskuy/forum/post.ex
@@ -5,18 +5,15 @@ defmodule Diskuy.Forum.Post do
   schema "posts" do
     field :message, :string
     field :points, :integer
-    field :status, :string
     field :thread_id, :id
-    field :post_parent_id, :id
     field :user_id, :id
-
     timestamps()
   end
 
   @doc false
   def changeset(post, attrs) do
     post
-    |> cast(attrs, [:message, :points, :status, :thread_id, :post_parent_id, :user_id])
-    |> validate_required([:message, :points, :status, :thread_id, :user_id])
+    |> cast(attrs, [:message, :points, :thread_id, :user_id])
+    |> validate_required([:message, :points, :thread_id, :user_id])
   end
 end
diff --git a/diskuy_back/priv/repo/migrations/20201211055930_create_posts.exs b/diskuy_back/priv/repo/migrations/20201211055930_create_posts.exs
index 3b1565f..2eebd29 100644
--- a/diskuy_back/priv/repo/migrations/20201211055930_create_posts.exs
+++ b/diskuy_back/priv/repo/migrations/20201211055930_create_posts.exs
@@ -5,16 +5,13 @@ defmodule Diskuy.Repo.Migrations.CreatePosts do
     create table(:posts) do
       add :message, :text
       add :points, :integer
-      add :status, :string
       add :thread_id, references(:threads, on_delete: :delete_all, type: :id)
-      add :post_parent_id, references(:posts, on_delete: :nothing, type: :id)
       add :user_id, references(:users, on_delete: :delete_all type: :id)
 
       timestamps()
     end
 
     create index(:posts, [:thread_id])
-    create index(:posts, [:post_parent_id])
     create index(:posts, [:user_id])
   end
 end
-- 
GitLab


From bbcb8d13186bbf468a2f2eb18dc28027831cc3ee Mon Sep 17 00:00:00 2001
From: Muhammad Rafif Elfazri <rafif.elfazri@gmail.com>
Date: Fri, 8 Jan 2021 15:07:26 +0700
Subject: [PATCH 3/3] update post migrations

---
 .../priv/repo/migrations/20201211055930_create_posts.exs        | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/diskuy_back/priv/repo/migrations/20201211055930_create_posts.exs b/diskuy_back/priv/repo/migrations/20201211055930_create_posts.exs
index 2eebd29..8d8e938 100644
--- a/diskuy_back/priv/repo/migrations/20201211055930_create_posts.exs
+++ b/diskuy_back/priv/repo/migrations/20201211055930_create_posts.exs
@@ -6,7 +6,7 @@ defmodule Diskuy.Repo.Migrations.CreatePosts do
       add :message, :text
       add :points, :integer
       add :thread_id, references(:threads, on_delete: :delete_all, type: :id)
-      add :user_id, references(:users, on_delete: :delete_all type: :id)
+      add :user_id, references(:users, on_delete: :delete_all, type: :id)
 
       timestamps()
     end
-- 
GitLab