From ddeffd3ea59dc34507e8594343472e1ff05c623c Mon Sep 17 00:00:00 2001 From: Cara Comfort Date: Wed, 14 Jun 2017 11:41:54 -0700 Subject: [PATCH 1/6] Add route to create a new movie --- app/controllers/movies_controller.rb | 5 +++++ config/routes.rb | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/controllers/movies_controller.rb b/app/controllers/movies_controller.rb index 362e2791..3fabd47d 100644 --- a/app/controllers/movies_controller.rb +++ b/app/controllers/movies_controller.rb @@ -11,6 +11,11 @@ def index render status: :ok, json: data end + def create + puts ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" + puts params + end + def show render( status: :ok, diff --git a/config/routes.rb b/config/routes.rb index 54bf033e..8eff1ff6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,7 +3,7 @@ resources :customers, only: [:index] - resources :movies, only: [:index, :show], param: :title + resources :movies, 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" From d0219ade9ee42a27200e4880a86cfd7161d34b88 Mon Sep 17 00:00:00 2001 From: Cara Comfort Date: Wed, 14 Jun 2017 13:43:24 -0700 Subject: [PATCH 2/6] Add create route to movies controller --- app/controllers/movies_controller.rb | 4 ++++ config/routes.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/controllers/movies_controller.rb b/app/controllers/movies_controller.rb index 362e2791..6750b974 100644 --- a/app/controllers/movies_controller.rb +++ b/app/controllers/movies_controller.rb @@ -11,6 +11,10 @@ def index render status: :ok, json: data end + def create + puts ">>>>>>>>>>>>>>> #{params}" + end + def show render( status: :ok, diff --git a/config/routes.rb b/config/routes.rb index 54bf033e..8eff1ff6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,7 +3,7 @@ resources :customers, only: [:index] - resources :movies, only: [:index, :show], param: :title + resources :movies, 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" From 134ed19303ff1b1fcca156508ee101ee7b018688 Mon Sep 17 00:00:00 2001 From: Cara Comfort Date: Wed, 14 Jun 2017 14:32:20 -0700 Subject: [PATCH 3/6] Fix movie image_url method so works when a url attribute is not null --- app/controllers/movies_controller.rb | 11 ++++++++++- app/models/movie.rb | 5 +++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/controllers/movies_controller.rb b/app/controllers/movies_controller.rb index 6750b974..143e5a75 100644 --- a/app/controllers/movies_controller.rb +++ b/app/controllers/movies_controller.rb @@ -12,7 +12,12 @@ def index end def create - puts ">>>>>>>>>>>>>>> #{params}" + movie = Movie.new(movie_params) + if movie.save + render status: :ok, json: { id: movie.id } + else + render status: :bad_request, json: { errors: movie.errors.messages } + end end def show @@ -33,4 +38,8 @@ def require_movie render status: :not_found, json: { errors: { title: ["No movie with title #{params["title"]}"] } } end end + + def movie_params + params.permit(:title, :overview, :release_date, :image_url, :external_id) + end end diff --git a/app/models/movie.rb b/app/models/movie.rb index 0327a4d6..7bad873a 100644 --- a/app/models/movie.rb +++ b/app/models/movie.rb @@ -10,10 +10,11 @@ def available_inventory def image_url orig_value = read_attribute :image_url - if !orig_value + if !orig_value || orig_value == "http://lorempixel.com/185/278/" MovieWrapper::DEFAULT_IMG_URL else - MovieWrapper.construct_image_url(orig_value) + url = orig_value.sub('https://image.tmdb.org/t/p/w185', '') + MovieWrapper.construct_image_url(url) end end end From 574d1e199a189467a579019804e599fd2591dede Mon Sep 17 00:00:00 2001 From: Danielle Birbal Date: Wed, 14 Jun 2017 15:46:15 -0700 Subject: [PATCH 4/6] Trying to prevent duplicate movies --- app/controllers/movies_controller.rb | 69 +++++++++++++++------------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/app/controllers/movies_controller.rb b/app/controllers/movies_controller.rb index 143e5a75..4f502d90 100644 --- a/app/controllers/movies_controller.rb +++ b/app/controllers/movies_controller.rb @@ -1,45 +1,48 @@ class MoviesController < ApplicationController - before_action :require_movie, only: [:show] + before_action :require_movie, only: [:show] - def index - if params[:query] - data = MovieWrapper.search(params[:query]) - else - data = Movie.all - end + def index + data = if params[:query] + MovieWrapper.search(params[:query]) + else + Movie.all + end - render status: :ok, json: data - end + render status: :ok, json: data + end - def create - movie = Movie.new(movie_params) - if movie.save - render status: :ok, json: { id: movie.id } - else - render status: :bad_request, json: { errors: movie.errors.messages } + def create + unless Movie.include? Movie.where(title: movie_params[:title], external_id: movie_params[:external_id]) + movie = Movie.new(movie_params) + if movie.save + render status: :ok, json: { id: movie.id } + else + render status: :bad_request, json: { errors: movie.errors.messages } + end + end + puts 'Win win win' end - end - def show - render( - status: :ok, - json: @movie.as_json( - only: [:title, :overview, :release_date, :inventory], - methods: [:available_inventory] + def show + render( + status: :ok, + json: @movie.as_json( + only: [:title, :overview, :release_date, :inventory], + methods: [:available_inventory] + ) ) - ) - end + end - private + private - def require_movie - @movie = Movie.find_by(title: params[:title]) - unless @movie - render status: :not_found, json: { errors: { title: ["No movie with title #{params["title"]}"] } } + def require_movie + @movie = Movie.find_by(title: params[:title]) + unless @movie + render status: :not_found, json: { errors: { title: ["No movie with title #{params['title']}"] } } + end end - end - def movie_params - params.permit(:title, :overview, :release_date, :image_url, :external_id) - end + def movie_params + params.permit(:title, :overview, :release_date, :image_url, :external_id) + end end From 14d2a6570f94486d4d313bfc5aed7b179acf1a16 Mon Sep 17 00:00:00 2001 From: Cara Comfort Date: Wed, 14 Jun 2017 16:55:57 -0700 Subject: [PATCH 5/6] Add movie field to strong params --- app/controllers/movies_controller.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/controllers/movies_controller.rb b/app/controllers/movies_controller.rb index 4f502d90..a806ed1e 100644 --- a/app/controllers/movies_controller.rb +++ b/app/controllers/movies_controller.rb @@ -12,15 +12,15 @@ def index end def create - unless Movie.include? Movie.where(title: movie_params[:title], external_id: movie_params[:external_id]) + # unless Movie.include? Movie.where(title: movie_params[:title], external_id: movie_params[:external_id]) movie = Movie.new(movie_params) if movie.save render status: :ok, json: { id: movie.id } else render status: :bad_request, json: { errors: movie.errors.messages } end - end - puts 'Win win win' + # end + # puts 'Win win win' end def show @@ -43,6 +43,6 @@ def require_movie end def movie_params - params.permit(:title, :overview, :release_date, :image_url, :external_id) + params.require(:movie).permit(:title, :overview, :release_date, :image_url) end end From fa3b5fbad42f84eb0e4131efd5c629010fc14498 Mon Sep 17 00:00:00 2001 From: Danielle Birbal Date: Wed, 14 Jun 2017 17:03:52 -0700 Subject: [PATCH 6/6] Reject duplicate logic --- app/controllers/movies_controller.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/controllers/movies_controller.rb b/app/controllers/movies_controller.rb index 4f502d90..76cbaa90 100644 --- a/app/controllers/movies_controller.rb +++ b/app/controllers/movies_controller.rb @@ -12,15 +12,16 @@ def index end def create - unless Movie.include? Movie.where(title: movie_params[:title], external_id: movie_params[:external_id]) + if Movie.where(title: movie_params[:title], release_date: movie_params[:release_date]).empty? movie = Movie.new(movie_params) if movie.save render status: :ok, json: { id: movie.id } else render status: :bad_request, json: { errors: movie.errors.messages } end + else + render status: :bad_request, json: { errors: movie.errors.messages } end - puts 'Win win win' end def show