From f3016b7482d553d83ad9d541da3d8be03e383cd5 Mon Sep 17 00:00:00 2001 From: Ting-Yi Liu <46391352+ichbinorange@users.noreply.github.com> Date: Wed, 20 Jan 2021 14:59:00 -0800 Subject: [PATCH 1/7] added create route for Video --- config/routes.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/routes.rb b/config/routes.rb index 16fc2214..1462862a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -4,6 +4,7 @@ resources :customers, only: [:index] resources :videos, only: [:index, :show], param: :title + resources :videos, only: [:create] post "/rentals/:title/check-out", to: "rentals#check_out", as: "check_out" post "/rentals/:title/return", to: "rentals#check_in", as: "check_in" From 78e8ad8e877a1a8797ed345f5ade2e1c3cd507a0 Mon Sep 17 00:00:00 2001 From: Ting-Yi Liu <46391352+ichbinorange@users.noreply.github.com> Date: Wed, 20 Jan 2021 14:59:17 -0800 Subject: [PATCH 2/7] added create method for video controller --- app/controllers/videos_controller.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/controllers/videos_controller.rb b/app/controllers/videos_controller.rb index c9a2bb08..32db43af 100644 --- a/app/controllers/videos_controller.rb +++ b/app/controllers/videos_controller.rb @@ -21,6 +21,14 @@ def show ) end + def create + @video = Video.new(video_params) + + unless @video.save + render json: {ok: false, cause: "validation errors", errors: @video.errors}, status: :bad_request + end + end + private def require_video @@ -29,4 +37,8 @@ def require_video render status: :not_found, json: { errors: { title: ["No video with title #{params["title"]}"] } } end end + + def video_params + return params.permit(:external_id, :title, :overview, :release_date, :image_url) + end end From ca10bddab9e92746bd4cd34cc8a7879857ff73df Mon Sep 17 00:00:00 2001 From: Ting-Yi Liu <46391352+ichbinorange@users.noreply.github.com> Date: Wed, 20 Jan 2021 21:13:35 -0800 Subject: [PATCH 3/7] revised create in Video controller to stop adding the same video from external API --- app/controllers/videos_controller.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/controllers/videos_controller.rb b/app/controllers/videos_controller.rb index 32db43af..d6faed99 100644 --- a/app/controllers/videos_controller.rb +++ b/app/controllers/videos_controller.rb @@ -24,8 +24,14 @@ def show def create @video = Video.new(video_params) + if Video.find_by(title: @video.title) + render json: {ok: false, cause: "duplicate errors", errors: @video.errors}, status: :bad_request + return + end + unless @video.save render json: {ok: false, cause: "validation errors", errors: @video.errors}, status: :bad_request + return end end From c0653abdf911f81db6767ca6d27ea60f726bd2a5 Mon Sep 17 00:00:00 2001 From: Ting-Yi Liu <46391352+ichbinorange@users.noreply.github.com> Date: Thu, 21 Jan 2021 11:49:58 -0800 Subject: [PATCH 4/7] added inventory as a permit param for Video --- app/controllers/videos_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/videos_controller.rb b/app/controllers/videos_controller.rb index d6faed99..d628efa9 100644 --- a/app/controllers/videos_controller.rb +++ b/app/controllers/videos_controller.rb @@ -45,6 +45,6 @@ def require_video end def video_params - return params.permit(:external_id, :title, :overview, :release_date, :image_url) + return params.permit(:external_id, :title, :overview, :release_date, :image_url, :inventory) end end From 4e53b3cf54a1a66e5d6a4a6445b1369f647fe935 Mon Sep 17 00:00:00 2001 From: Ting-Yi Liu <46391352+ichbinorange@users.noreply.github.com> Date: Thu, 21 Jan 2021 18:09:28 -0800 Subject: [PATCH 5/7] revised the create method in video controller by using VideoWrapper class method --- app/controllers/videos_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/videos_controller.rb b/app/controllers/videos_controller.rb index d628efa9..9242adb9 100644 --- a/app/controllers/videos_controller.rb +++ b/app/controllers/videos_controller.rb @@ -22,7 +22,7 @@ def show end def create - @video = Video.new(video_params) + @video = VideoWrapper.construct_video(video_params) if Video.find_by(title: @video.title) render json: {ok: false, cause: "duplicate errors", errors: @video.errors}, status: :bad_request From cba0cd023b4582ac42b1e955c1138a7c6922b6ec Mon Sep 17 00:00:00 2001 From: Ting-Yi Liu <46391352+ichbinorange@users.noreply.github.com> Date: Thu, 21 Jan 2021 20:10:11 -0800 Subject: [PATCH 6/7] changed back the create method in video controller by using Video.new --- app/controllers/videos_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/videos_controller.rb b/app/controllers/videos_controller.rb index 9242adb9..d628efa9 100644 --- a/app/controllers/videos_controller.rb +++ b/app/controllers/videos_controller.rb @@ -22,7 +22,7 @@ def show end def create - @video = VideoWrapper.construct_video(video_params) + @video = Video.new(video_params) if Video.find_by(title: @video.title) render json: {ok: false, cause: "duplicate errors", errors: @video.errors}, status: :bad_request From f3d3261fceee3bdc671e914a31f517ef88a0029b Mon Sep 17 00:00:00 2001 From: Ting-Yi Liu <46391352+ichbinorange@users.noreply.github.com> Date: Fri, 22 Jan 2021 10:07:02 -0800 Subject: [PATCH 7/7] added image_url to show of Video --- app/controllers/videos_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/videos_controller.rb b/app/controllers/videos_controller.rb index d628efa9..7050a935 100644 --- a/app/controllers/videos_controller.rb +++ b/app/controllers/videos_controller.rb @@ -15,7 +15,7 @@ def show render( status: :ok, json: @video.as_json( - only: [:title, :overview, :release_date, :inventory], + only: [:title, :overview, :release_date, :inventory, :image_url], methods: [:available_inventory] ) )