forked from AdaGold/video-store-api
-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ampers - Nora and Sara - VideoStoreAPI #14
Open
CheerOnMars
wants to merge
60
commits into
Ada-C9:master
Choose a base branch
from
CheerOnMars:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
60 commits
Select commit
Hold shift + click to select a range
475bd3b
created rails app in VideoStoreAPI
CheerOnMars bb9d6cb
restores readme file
npeters5 83d1c40
create movie, customer, and rental models
CheerOnMars adc82a3
adds customer, movie, and rental models with relationships and valida…
npeters5 fdeafbf
schema file
npeters5 c9ec2e6
adds foreign keys migration to rentals model
npeters5 f7c73cb
added fixtures to movie
CheerOnMars e8686cf
adds model tests for Customer. edits customer and rental yml fixtures
npeters5 a7a1af9
corrected letter case on yml files
CheerOnMars bcf0f89
update db schema
CheerOnMars 686d410
minor add to Customer test
npeters5 1e5fc03
adds tests for Rental model
npeters5 9cc5fcb
Merge branch 'master' of https://github.com/CheerOnMars/VideoStoreAPI
CheerOnMars ec05c56
create movie model test
CheerOnMars 7e4444d
generates customers, movies and rentals controllers and default routes
npeters5 fb2a7bb
adds routes for movies index, show, create, and customer index
npeters5 78ac4a6
adds tests for customers#index
npeters5 2e69af4
updates customers#index test
npeters5 7dac99b
added controller tests
CheerOnMars 13fba23
Merge branch 'master' of https://github.com/CheerOnMars/VideoStoreAPI
CheerOnMars 7d6c989
create methods in customer controller
CheerOnMars fc5610d
adds index, show, and create methods to Movies controller
npeters5 d180a2f
adds test for movies#show. all movies controller tests passing
npeters5 066353d
correct movies show path
CheerOnMars 36fc858
edits movies#create
npeters5 92b4e3b
merge conflict resolved
npeters5 7ef9181
minor change to json ouput for movies#create
npeters5 9f0af19
update routes to include rentals
CheerOnMars 056182c
minor typo in movies controller
npeters5 de880e3
adds more assertions to movies#create tests
npeters5 f8f2842
adds rentals controller tests for checkin method
npeters5 b89e45a
updates rental fixture data;
npeters5 3511b51
add checkin tests for the rentals controller
CheerOnMars 2a882cd
added checkout method in controller, updated model and test as needed
CheerOnMars 180aaf8
writes rental#checkin
npeters5 e53a93f
adds assertions, refactoring to rentals controller tests
npeters5 7beb266
add due dates method
CheerOnMars 5b802ff
updates inventory method call in rentals controller tests
npeters5 7464ba4
creates movie#get_available_inventory
npeters5 d83c3d4
updates rentals controller tests
npeters5 163b28b
edits movie test assertion;
npeters5 2fd0b85
experimenting with strong params and setting defaults in rentals#chec…
npeters5 a82f99c
adds as_json to pass in optional response attributes for customer
npeters5 253b9d3
adds json options to movie model;
npeters5 bf14a69
adds avail inventory to movies controller test output
npeters5 fa30da5
experimenting with rental params. test throwing error
npeters5 5bf9a9f
fixes assertion in movie test
npeters5 220ef9c
adjusts rentals#checkout
npeters5 5dd1b6d
idk
npeters5 10b82d2
fixes test
npeters5 0839776
update checkin method to take in the movie_id and customer_id
CheerOnMars b94308e
tweaks rentals#checkin to return status ok upon successful request
npeters5 428763b
add query parameters
CheerOnMars c35368c
adds to gemfile.lock
npeters5 2407230
adds sorting params to movies#index
npeters5 926d116
adds rentals#overdue
npeters5 5d4c36b
sets default pagination in app controller
npeters5 381f856
no changes
npeters5 f3dcec4
adds rental model methods for getting checkedout and overdue rentals
npeters5 cfa7f70
adds route for overdue rentals
npeters5 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# See https://help.github.com/articles/ignoring-files for more about ignoring files. | ||
# | ||
# If you find yourself ignoring temporary files generated by your text editor | ||
# or operating system, you probably want to add a global ignore instead: | ||
# git config --global core.excludesfile '~/.gitignore_global' | ||
|
||
# Ignore bundler config. | ||
/.bundle | ||
|
||
# Ignore all logfiles and tempfiles. | ||
/log/* | ||
/tmp/* | ||
!/log/.keep | ||
!/tmp/.keep | ||
|
||
.byebug_history |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
source 'https://rubygems.org' | ||
|
||
git_source(:github) do |repo_name| | ||
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/") | ||
"https://github.com/#{repo_name}.git" | ||
end | ||
|
||
|
||
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' | ||
gem 'rails', '~> 5.1.6' | ||
# Use postgresql as the database for Active Record | ||
gem 'pg', '>= 0.18', '< 2.0' | ||
# Use Puma as the app server | ||
gem 'puma', '~> 3.7' | ||
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder | ||
# gem 'jbuilder', '~> 2.5' | ||
# Use Redis adapter to run Action Cable in production | ||
# gem 'redis', '~> 4.0' | ||
# Use ActiveModel has_secure_password | ||
# gem 'bcrypt', '~> 3.1.7' | ||
|
||
# Use Capistrano for deployment | ||
# gem 'capistrano-rails', group: :development | ||
|
||
# Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible | ||
# gem 'rack-cors' | ||
gem 'jbuilder' | ||
gem 'rabl' | ||
gem 'will_paginate' | ||
|
||
|
||
group :development, :test do | ||
# Call 'byebug' anywhere in the code to stop execution and get a debugger console | ||
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] | ||
end | ||
|
||
group :development do | ||
gem 'listen', '>= 3.0.5', '< 3.2' | ||
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring | ||
gem 'spring' | ||
gem 'spring-watcher-listen', '~> 2.0.0' | ||
gem 'better_errors' | ||
gem 'binding_of_caller' | ||
end | ||
|
||
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem | ||
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] | ||
|
||
group :development, :test do | ||
gem 'pry-rails' | ||
end | ||
|
||
group :test do | ||
gem 'minitest-rails' | ||
gem 'minitest-reporters' | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,173 @@ | ||
GEM | ||
remote: https://rubygems.org/ | ||
specs: | ||
actioncable (5.1.6) | ||
actionpack (= 5.1.6) | ||
nio4r (~> 2.0) | ||
websocket-driver (~> 0.6.1) | ||
actionmailer (5.1.6) | ||
actionpack (= 5.1.6) | ||
actionview (= 5.1.6) | ||
activejob (= 5.1.6) | ||
mail (~> 2.5, >= 2.5.4) | ||
rails-dom-testing (~> 2.0) | ||
actionpack (5.1.6) | ||
actionview (= 5.1.6) | ||
activesupport (= 5.1.6) | ||
rack (~> 2.0) | ||
rack-test (>= 0.6.3) | ||
rails-dom-testing (~> 2.0) | ||
rails-html-sanitizer (~> 1.0, >= 1.0.2) | ||
actionview (5.1.6) | ||
activesupport (= 5.1.6) | ||
builder (~> 3.1) | ||
erubi (~> 1.4) | ||
rails-dom-testing (~> 2.0) | ||
rails-html-sanitizer (~> 1.0, >= 1.0.3) | ||
activejob (5.1.6) | ||
activesupport (= 5.1.6) | ||
globalid (>= 0.3.6) | ||
activemodel (5.1.6) | ||
activesupport (= 5.1.6) | ||
activerecord (5.1.6) | ||
activemodel (= 5.1.6) | ||
activesupport (= 5.1.6) | ||
arel (~> 8.0) | ||
activesupport (5.1.6) | ||
concurrent-ruby (~> 1.0, >= 1.0.2) | ||
i18n (>= 0.7, < 2) | ||
minitest (~> 5.1) | ||
tzinfo (~> 1.1) | ||
ansi (1.5.0) | ||
arel (8.0.0) | ||
better_errors (2.4.0) | ||
coderay (>= 1.0.0) | ||
erubi (>= 1.0.0) | ||
rack (>= 0.9.0) | ||
binding_of_caller (0.8.0) | ||
debug_inspector (>= 0.0.1) | ||
builder (3.2.3) | ||
byebug (10.0.2) | ||
coderay (1.1.2) | ||
concurrent-ruby (1.0.5) | ||
crass (1.0.4) | ||
debug_inspector (0.0.3) | ||
erubi (1.7.1) | ||
ffi (1.9.23) | ||
globalid (0.4.1) | ||
activesupport (>= 4.2.0) | ||
i18n (1.0.1) | ||
concurrent-ruby (~> 1.0) | ||
jbuilder (2.7.0) | ||
activesupport (>= 4.2.0) | ||
multi_json (>= 1.2) | ||
listen (3.1.5) | ||
rb-fsevent (~> 0.9, >= 0.9.4) | ||
rb-inotify (~> 0.9, >= 0.9.7) | ||
ruby_dep (~> 1.2) | ||
loofah (2.2.2) | ||
crass (~> 1.0.2) | ||
nokogiri (>= 1.5.9) | ||
mail (2.7.0) | ||
mini_mime (>= 0.1.1) | ||
method_source (0.9.0) | ||
mini_mime (1.0.0) | ||
mini_portile2 (2.3.0) | ||
minitest (5.11.3) | ||
minitest-rails (3.0.0) | ||
minitest (~> 5.8) | ||
railties (~> 5.0) | ||
minitest-reporters (1.2.0) | ||
ansi | ||
builder | ||
minitest (>= 5.0) | ||
ruby-progressbar | ||
multi_json (1.13.1) | ||
nio4r (2.3.1) | ||
nokogiri (1.8.2) | ||
mini_portile2 (~> 2.3.0) | ||
pg (1.0.0) | ||
pry (0.11.3) | ||
coderay (~> 1.1.0) | ||
method_source (~> 0.9.0) | ||
pry-rails (0.3.6) | ||
pry (>= 0.10.4) | ||
puma (3.11.4) | ||
rabl (0.13.1) | ||
activesupport (>= 2.3.14) | ||
rack (2.0.5) | ||
rack-test (1.0.0) | ||
rack (>= 1.0, < 3) | ||
rails (5.1.6) | ||
actioncable (= 5.1.6) | ||
actionmailer (= 5.1.6) | ||
actionpack (= 5.1.6) | ||
actionview (= 5.1.6) | ||
activejob (= 5.1.6) | ||
activemodel (= 5.1.6) | ||
activerecord (= 5.1.6) | ||
activesupport (= 5.1.6) | ||
bundler (>= 1.3.0) | ||
railties (= 5.1.6) | ||
sprockets-rails (>= 2.0.0) | ||
rails-dom-testing (2.0.3) | ||
activesupport (>= 4.2.0) | ||
nokogiri (>= 1.6) | ||
rails-html-sanitizer (1.0.4) | ||
loofah (~> 2.2, >= 2.2.2) | ||
railties (5.1.6) | ||
actionpack (= 5.1.6) | ||
activesupport (= 5.1.6) | ||
method_source | ||
rake (>= 0.8.7) | ||
thor (>= 0.18.1, < 2.0) | ||
rake (12.3.1) | ||
rb-fsevent (0.10.3) | ||
rb-inotify (0.9.10) | ||
ffi (>= 0.5.0, < 2) | ||
ruby-progressbar (1.9.0) | ||
ruby_dep (1.5.0) | ||
spring (2.0.2) | ||
activesupport (>= 4.2) | ||
spring-watcher-listen (2.0.1) | ||
listen (>= 2.7, < 4.0) | ||
spring (>= 1.2, < 3.0) | ||
sprockets (3.7.1) | ||
concurrent-ruby (~> 1.0) | ||
rack (> 1, < 3) | ||
sprockets-rails (3.2.1) | ||
actionpack (>= 4.0) | ||
activesupport (>= 4.0) | ||
sprockets (>= 3.0.0) | ||
thor (0.20.0) | ||
thread_safe (0.3.6) | ||
tzinfo (1.2.5) | ||
thread_safe (~> 0.1) | ||
websocket-driver (0.6.5) | ||
websocket-extensions (>= 0.1.0) | ||
websocket-extensions (0.1.3) | ||
will_paginate (3.1.6) | ||
|
||
PLATFORMS | ||
ruby | ||
|
||
DEPENDENCIES | ||
better_errors | ||
binding_of_caller | ||
byebug | ||
jbuilder | ||
listen (>= 3.0.5, < 3.2) | ||
minitest-rails | ||
minitest-reporters | ||
pg (>= 0.18, < 2.0) | ||
pry-rails | ||
puma (~> 3.7) | ||
rabl | ||
rails (~> 5.1.6) | ||
spring | ||
spring-watcher-listen (~> 2.0.0) | ||
tzinfo-data | ||
will_paginate | ||
|
||
BUNDLED WITH | ||
1.16.1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# Add your own tasks in files placed in lib/tasks ending in .rake, | ||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. | ||
|
||
require_relative 'config/application' | ||
|
||
Rails.application.load_tasks |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ApplicationCable | ||
class Channel < ActionCable::Channel::Base | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ApplicationCable | ||
class Connection < ActionCable::Connection::Base | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
class ApplicationController < ActionController::API | ||
end |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
class CustomersController < ApplicationController | ||
def index | ||
if params[:sort] == "name" | ||
customers = Customer.all.order(:name).paginate(page: params[:p], per_page: params[:n]) | ||
elsif params[:sort] == "registered_at" | ||
customers = Customer.all.order(:registered_at).paginate(page: params[:p], per_page: params[:n]) | ||
elsif params[:sort] == "postal_code" | ||
customers = Customer.all.order(:postal_code).paginate(page: params[:p], per_page: params[:n]) | ||
else | ||
customers = Customer.all | ||
end | ||
render json: customers.as_json(only: [:id, :name, :registered_at, :postal_code, :phone]) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
class MoviesController < ApplicationController | ||
|
||
def index | ||
if params[:sort] == "title" | ||
movies = Movie.all.order(:title).paginate(page: params[:p], per_page: params[:n]) | ||
elsif params[:sort] == "release_date" | ||
movies = Movie.all.order(:release_date).paginate(page: params[:p], per_page: params[:n]) | ||
else | ||
movies = Movie.all | ||
end | ||
render json: movies.as_json(only: [:id, :title, :release_date]) | ||
end | ||
|
||
|
||
def show | ||
movie = Movie.find_by(id: params[:id]) | ||
if movie | ||
render json: movie.as_json(only: [:id, :inventory, :overview, :release_date, :title]), status: :ok | ||
else | ||
render json: { ok: false, errors: "Movie not found" }, status: :not_found | ||
end | ||
end | ||
|
||
def create | ||
movie = Movie.new(movie_params) | ||
if movie.save | ||
render json: movie.as_json(only: [:id]), status: :ok | ||
else | ||
render json: { ok: false, errors: movie.errors }, | ||
status: :bad_request | ||
end | ||
end | ||
end | ||
|
||
private | ||
|
||
def movie_params | ||
return params.permit(:inventory, :overview, :release_date, :title) | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
class RentalsController < ApplicationController | ||
|
||
def checkout | ||
movie = Movie.find_by(id: params[:rental][:movie_id]) | ||
customer = Customer.find_by(id: params[:rental][:customer_id]) | ||
if movie.nil? || customer.nil? | ||
render json: { ok: false }, status: :bad_request | ||
else | ||
if movie.available_inventory > 0 | ||
rental = Rental.create(movie_id: params[:rental][:movie_id], customer_id: params[:rental][:customer_id], returned?: false, checkout_date: Date.today) | ||
if rental | ||
render json: rental.as_json(), status: :ok | ||
else | ||
render json: { ok: false, errors: rental.errors }, | ||
status: :bad_request | ||
end | ||
else | ||
render json: { ok: false}, status: :bad_request # Todo: look up to see if better status | ||
end | ||
end | ||
end | ||
|
||
def checkin | ||
rental = Rental.where(movie_id: params[:rental][:movie_id], customer_id: params[:rental][:customer_id], returned?: false ) | ||
# rental = Rental.find_by(params[:id]) | ||
if rental.empty? | ||
render json: { ok: false }, status: :no_content | ||
else | ||
rental.update(returned?: true) | ||
render json: rental.as_json(), status: :ok | ||
end | ||
end | ||
|
||
def overdue | ||
rentals = Rental.get_overdue | ||
# if params[:sort] == "title" | ||
# rentals.order(:movie_id.title).paginate(page: params[:p], per_page: params[:n]) | ||
# elsif params[:sort] == "name" | ||
# rentals.order(:name).paginate(page: params[:p], per_page: params[:n]) | ||
# elsif params[:sort] == "checkout_date" | ||
# rentals.order(:checkout_date).paginate(page: params[:p], per_page: params[:n]) | ||
# elsif params[:sort] == "due_date" | ||
# rentals.order(:checkout_date).paginate(page: params[:p], per_page: params[:n]) | ||
# else | ||
# rentals | ||
# end | ||
render json: rentals.as_json(), status: :ok | ||
end | ||
|
||
private | ||
|
||
def rental_params | ||
return params.permit(:customer_id, :movie_id) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
class ApplicationJob < ActiveJob::Base | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
class ApplicationMailer < ActionMailer::Base | ||
default from: '[email protected]' | ||
layout 'mailer' | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
class ApplicationRecord < ActiveRecord::Base | ||
self.abstract_class = true | ||
self.per_page = 200 | ||
end |
Empty file.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Paginate, Nice!