From e0ceebfb8dc15ed583c2aa9a35107844eb5b9eb9 Mon Sep 17 00:00:00 2001 From: Hannah Date: Mon, 17 Dec 2018 14:08:53 -0800 Subject: [PATCH 1/4] added new and create to movie routes --- app/controllers/movies_controller.rb | 8 +++++ config/routes.rb | 2 +- db/schema.rb | 53 +++++++++++++++------------- lib/movie_wrapper.rb | 1 - 4 files changed, 37 insertions(+), 27 deletions(-) diff --git a/app/controllers/movies_controller.rb b/app/controllers/movies_controller.rb index 362e2791..e2e747ca 100644 --- a/app/controllers/movies_controller.rb +++ b/app/controllers/movies_controller.rb @@ -21,6 +21,14 @@ def show ) end + + def new + end + + def create + end + + private def require_movie diff --git a/config/routes.rb b/config/routes.rb index f4c99688..0c111cc7 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, :new, :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/db/schema.rb b/db/schema.rb index ffb28f7e..c7cb7c0a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,40 +10,43 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20180618042754) do +ActiveRecord::Schema.define(version: 2018_06_18_042754) do + + # These are extensions that must be enabled in order to support this database + enable_extension "plpgsql" create_table "customers", force: :cascade do |t| - t.string "name" + t.string "name" t.datetime "registered_at" - t.string "address" - t.string "city" - t.string "state" - t.string "postal_code" - t.string "phone" - t.float "account_credit" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.string "address" + t.string "city" + t.string "state" + t.string "postal_code" + t.string "phone" + t.float "account_credit" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end create_table "movies", force: :cascade do |t| - t.string "title" - t.text "overview" - t.date "release_date" - t.integer "inventory" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "image_url" - t.integer "external_id" + t.string "title" + t.text "overview" + t.date "release_date" + t.integer "inventory" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "image_url" + t.integer "external_id" end create_table "rentals", force: :cascade do |t| - t.integer "customer_id" - t.integer "movie_id" - t.date "checkout_date" - t.date "due_date" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "returned" + t.integer "customer_id" + t.integer "movie_id" + t.date "checkout_date" + t.date "due_date" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "returned" t.index ["customer_id"], name: "index_rentals_on_customer_id" t.index ["movie_id"], name: "index_rentals_on_movie_id" end diff --git a/lib/movie_wrapper.rb b/lib/movie_wrapper.rb index c51d05ee..c8520930 100644 --- a/lib/movie_wrapper.rb +++ b/lib/movie_wrapper.rb @@ -1,4 +1,3 @@ - class MovieWrapper BASE_URL = "https://api.themoviedb.org/3/" KEY = ENV["MOVIEDB_KEY"] From 657b9ae5cdc2f10f3e28b326aa86d90905e689ac Mon Sep 17 00:00:00 2001 From: Amanda Ungco Date: Tue, 18 Dec 2018 11:21:31 -0800 Subject: [PATCH 2/4] updated api key/env --- db/schema.rb | 53 +++++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index ffb28f7e..c7cb7c0a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,40 +10,43 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20180618042754) do +ActiveRecord::Schema.define(version: 2018_06_18_042754) do + + # These are extensions that must be enabled in order to support this database + enable_extension "plpgsql" create_table "customers", force: :cascade do |t| - t.string "name" + t.string "name" t.datetime "registered_at" - t.string "address" - t.string "city" - t.string "state" - t.string "postal_code" - t.string "phone" - t.float "account_credit" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.string "address" + t.string "city" + t.string "state" + t.string "postal_code" + t.string "phone" + t.float "account_credit" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end create_table "movies", force: :cascade do |t| - t.string "title" - t.text "overview" - t.date "release_date" - t.integer "inventory" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "image_url" - t.integer "external_id" + t.string "title" + t.text "overview" + t.date "release_date" + t.integer "inventory" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "image_url" + t.integer "external_id" end create_table "rentals", force: :cascade do |t| - t.integer "customer_id" - t.integer "movie_id" - t.date "checkout_date" - t.date "due_date" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "returned" + t.integer "customer_id" + t.integer "movie_id" + t.date "checkout_date" + t.date "due_date" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "returned" t.index ["customer_id"], name: "index_rentals_on_customer_id" t.index ["movie_id"], name: "index_rentals_on_movie_id" end From 5fdbcda6d7beacd794fca62b8f2269b115821e98 Mon Sep 17 00:00:00 2001 From: Amanda Ungco Date: Tue, 18 Dec 2018 15:31:14 -0800 Subject: [PATCH 3/4] updated post method and attempted delete: incomplete --- app/controllers/movies_controller.rb | 41 ++++++++++++++++++++-------- config/routes.rb | 2 +- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/app/controllers/movies_controller.rb b/app/controllers/movies_controller.rb index e2e747ca..0b23f7ed 100644 --- a/app/controllers/movies_controller.rb +++ b/app/controllers/movies_controller.rb @@ -1,5 +1,5 @@ class MoviesController < ApplicationController - before_action :require_movie, only: [:show] + before_action :require_movie, only: [:show, :delete] def index if params[:query] @@ -17,24 +17,41 @@ def show json: @movie.as_json( only: [:title, :overview, :release_date, :inventory], methods: [:available_inventory] - ) ) + ) end + def create - def new - end + movie = Movie.new(movie_params) - def create - end + if movie.save + render json: { id: movie.id }, status: :ok + else + render json: { + errors: { + title: ["Could not create '#{movie_params[:title]}' Movie"] + }, + message: movie.errors.messages + }, status: :bad_request + end + end + + def destroy + 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 + + def movie_params + params.permit(:title, :overview, :image_url, :release_date) + end + end -end diff --git a/config/routes.rb b/config/routes.rb index 0c111cc7..32c19446 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,7 +3,7 @@ resources :customers, only: [:index] - resources :movies, only: [:index, :show, :new, :create], param: :title + resources :movies, only: [:index, :show, :delete, :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 37fef7fb042cdd94bfc9daa021da438bc70836de Mon Sep 17 00:00:00 2001 From: Amanda Ungco Date: Tue, 18 Dec 2018 16:21:25 -0800 Subject: [PATCH 4/4] fixed back end duplication --- app/controllers/movies_controller.rb | 37 +++++++++++++++++++++------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/app/controllers/movies_controller.rb b/app/controllers/movies_controller.rb index 0b23f7ed..4f0b2cca 100644 --- a/app/controllers/movies_controller.rb +++ b/app/controllers/movies_controller.rb @@ -23,19 +23,38 @@ def show def create - movie = Movie.new(movie_params) + if Movie.find_by(title: movie_params[:title]) == nil + binding.pry + movie = Movie.new(movie_params) - if movie.save - render json: { id: movie.id }, status: :ok + if movie.save + binding.pry + render json: { id: movie.id }, status: :ok + else + render json: { + errors: { + title: ["Could not create '#{movie_params[:title]}' Movie"] + }, + message: movie.errors.messages + }, status: :bad_request + end else render json: { errors: { - title: ["Could not create '#{movie_params[:title]}' Movie"] - }, - message: movie.errors.messages - }, status: :bad_request - end + title: ["movie exists in db"] + } + } + end + end + # + # else + # render json: { + # errors: { + # title: ["Movie:'#{movie_params[:title]}' already exists in own database"] + # } + # end + # end def destroy end @@ -51,7 +70,7 @@ def require_movie end def movie_params - params.permit(:title, :overview, :image_url, :release_date) + params.permit(:title, :overview, :image_url, :release_date, :id) end end