From f6778557882e15c70ce6adf77717a85c9533b1f0 Mon Sep 17 00:00:00 2001
From: Li Dai
Date: Wed, 20 Jan 2021 18:24:53 -0800
Subject: [PATCH] added create action for video
---
app/controllers/videos_controller.rb | 14 ++++++++++++++
config/routes.rb | 2 +-
package.json | 2 ++
3 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/app/controllers/videos_controller.rb b/app/controllers/videos_controller.rb
index c9a2bb08..a3b99825 100644
--- a/app/controllers/videos_controller.rb
+++ b/app/controllers/videos_controller.rb
@@ -21,6 +21,16 @@ def show
)
end
+ def create
+ video = Video.new(video_params)
+ if video.save
+ render status: :ok, json: video.as_json(only: [:id, :title, :overview, :release_date, :image_url, :external_id])
+ else
+ render status: :bad_request, json: { errors: video.errors.messages }
+ end
+ end
+
+
private
def require_video
@@ -29,4 +39,8 @@ def require_video
render status: :not_found, json: { errors: { title: ["No video with title #{params["title"]}"] } }
end
end
+
+ def video_params
+ return params.require(:video).permit(:title, :overview, :release_date, :inventory, :image_url, :external_id)
+ end
end
diff --git a/config/routes.rb b/config/routes.rb
index 16fc2214..1111b4bf 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -3,7 +3,7 @@
resources :customers, only: [:index]
- resources :videos, only: [:index, :show], param: :title
+ resources :videos, only: [:index, :show, :create], param: :title
post "/rentals/:title/check-out", to: "rentals#check_out", as: "check_out"
post "/rentals/:title/return", to: "rentals#check_in", as: "check_in"
diff --git a/package.json b/package.json
index 02f3e3b8..2bc47f9f 100644
--- a/package.json
+++ b/package.json
@@ -7,12 +7,14 @@
"test": "clear; jasmine-node --verbose test/"
},
"dependencies": {
+ "axios": "^0.21.1",
"body-parser": "~1.19.0",
"cookie-parser": "~1.4.5",
"debug": "~4.3.1",
"express": "~4.17.1",
"jade": "~1.11.0",
"morgan": "~1.10.0",
+ "react-router-dom": "^5.2.0",
"sequelize": "^6.3.5",
"serve-favicon": "~2.5.0"
},