-
Notifications
You must be signed in to change notification settings - Fork 28
Leaves - Mariya, Cloudy #32
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
base: master
Are you sure you want to change the base?
Changes from all commits
7628f9e
6f87cde
0c9667f
24b80b0
93f9c3c
68be5f1
2b59dd0
849252b
d9c3db6
80fe46f
b1112d9
b29f359
8fd9a95
af9b3a0
b11c392
853dad1
703b99e
6f84c92
53c4590
c083405
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| # 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 | ||
|
|
||
| # Ignore uploaded files in development | ||
| /storage/* | ||
| !/storage/.keep | ||
|
|
||
| .byebug_history | ||
|
|
||
| # Ignore master key for decrypting credentials and more. | ||
| /config/master.key |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| 2.5.5 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| { | ||
| "workbench.colorCustomizations": { | ||
| "activityBar.background": "#ab307e", | ||
| "activityBar.foreground": "#e7e7e7", | ||
| "activityBar.inactiveForeground": "#e7e7e799", | ||
| "activityBarBadge.background": "#25320e", | ||
| "activityBarBadge.foreground": "#e7e7e7", | ||
| "titleBar.activeBackground": "#832561", | ||
| "titleBar.inactiveBackground": "#83256199", | ||
| "titleBar.activeForeground": "#e7e7e7", | ||
| "titleBar.inactiveForeground": "#e7e7e799", | ||
| "statusBar.background": "#832561", | ||
| "statusBarItem.hoverBackground": "#ab307e", | ||
| "statusBar.foreground": "#e7e7e7" | ||
| }, | ||
| "peacock.color": "#832561" | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,59 @@ | ||
| source 'https://rubygems.org' | ||
| git_source(:github) { |repo| "https://github.com/#{repo}.git" } | ||
|
|
||
| ruby '2.5.5' | ||
|
|
||
| # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' | ||
| gem 'rails', '~> 5.2.3' | ||
| # Use postgresql as the database for Active Record | ||
| gem 'pg', '>= 0.18', '< 2.0' | ||
| # Use Puma as the app server | ||
| gem 'puma', '~> 3.11' | ||
| # 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 ActiveStorage variant | ||
| # gem 'mini_magick', '~> 4.8' | ||
|
|
||
| # Use Capistrano for deployment | ||
| # gem 'capistrano-rails', group: :development | ||
|
|
||
| # Reduces boot times through caching; required in config/boot.rb | ||
| gem 'bootsnap', '>= 1.1.0', require: false | ||
|
|
||
| # Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible | ||
| # gem 'rack-cors' | ||
|
|
||
| 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' | ||
| 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 :development do | ||
| gem 'debase', '>= 0.2.4.1' | ||
| gem 'ruby-debug-ide', '>= 0.7.0' | ||
| end | ||
|
|
||
| group :test do | ||
| gem 'minitest-rails' | ||
| gem 'minitest-reporters' | ||
| end |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,175 @@ | ||
| GEM | ||
| remote: https://rubygems.org/ | ||
| specs: | ||
| actioncable (5.2.3) | ||
| actionpack (= 5.2.3) | ||
| nio4r (~> 2.0) | ||
| websocket-driver (>= 0.6.1) | ||
| actionmailer (5.2.3) | ||
| actionpack (= 5.2.3) | ||
| actionview (= 5.2.3) | ||
| activejob (= 5.2.3) | ||
| mail (~> 2.5, >= 2.5.4) | ||
| rails-dom-testing (~> 2.0) | ||
| actionpack (5.2.3) | ||
| actionview (= 5.2.3) | ||
| activesupport (= 5.2.3) | ||
| rack (~> 2.0) | ||
| rack-test (>= 0.6.3) | ||
| rails-dom-testing (~> 2.0) | ||
| rails-html-sanitizer (~> 1.0, >= 1.0.2) | ||
| actionview (5.2.3) | ||
| activesupport (= 5.2.3) | ||
| builder (~> 3.1) | ||
| erubi (~> 1.4) | ||
| rails-dom-testing (~> 2.0) | ||
| rails-html-sanitizer (~> 1.0, >= 1.0.3) | ||
| activejob (5.2.3) | ||
| activesupport (= 5.2.3) | ||
| globalid (>= 0.3.6) | ||
| activemodel (5.2.3) | ||
| activesupport (= 5.2.3) | ||
| activerecord (5.2.3) | ||
| activemodel (= 5.2.3) | ||
| activesupport (= 5.2.3) | ||
| arel (>= 9.0) | ||
| activestorage (5.2.3) | ||
| actionpack (= 5.2.3) | ||
| activerecord (= 5.2.3) | ||
| marcel (~> 0.3.1) | ||
| activesupport (5.2.3) | ||
| concurrent-ruby (~> 1.0, >= 1.0.2) | ||
| i18n (>= 0.7, < 2) | ||
| minitest (~> 5.1) | ||
| tzinfo (~> 1.1) | ||
| ansi (1.5.0) | ||
| arel (9.0.0) | ||
| bootsnap (1.4.5) | ||
| msgpack (~> 1.0) | ||
| builder (3.2.3) | ||
| byebug (11.0.1) | ||
| coderay (1.1.2) | ||
| concurrent-ruby (1.1.5) | ||
| crass (1.0.5) | ||
| debase (0.2.4.1) | ||
| debase-ruby_core_source (>= 0.10.2) | ||
| debase-ruby_core_source (0.10.6) | ||
| erubi (1.9.0) | ||
| ffi (1.11.1) | ||
| globalid (0.4.2) | ||
| activesupport (>= 4.2.0) | ||
| i18n (1.7.0) | ||
| concurrent-ruby (~> 1.0) | ||
| listen (3.1.5) | ||
| rb-fsevent (~> 0.9, >= 0.9.4) | ||
| rb-inotify (~> 0.9, >= 0.9.7) | ||
| ruby_dep (~> 1.2) | ||
| loofah (2.3.1) | ||
| crass (~> 1.0.2) | ||
| nokogiri (>= 1.5.9) | ||
| mail (2.7.1) | ||
| mini_mime (>= 0.1.1) | ||
| marcel (0.3.3) | ||
| mimemagic (~> 0.3.2) | ||
| method_source (0.9.2) | ||
| mimemagic (0.3.3) | ||
| mini_mime (1.0.2) | ||
| mini_portile2 (2.4.0) | ||
| minitest (5.13.0) | ||
| minitest-rails (5.2.0) | ||
| minitest (~> 5.10) | ||
| railties (~> 5.2.0) | ||
| minitest-reporters (1.4.2) | ||
| ansi | ||
| builder | ||
| minitest (>= 5.0) | ||
| ruby-progressbar | ||
| msgpack (1.3.1) | ||
| nio4r (2.5.2) | ||
| nokogiri (1.10.5) | ||
| mini_portile2 (~> 2.4.0) | ||
| pg (1.1.4) | ||
| pry (0.12.2) | ||
| coderay (~> 1.1.0) | ||
| method_source (~> 0.9.0) | ||
| pry-rails (0.3.9) | ||
| pry (>= 0.10.4) | ||
| puma (3.12.1) | ||
| rack (2.0.7) | ||
| rack-test (1.1.0) | ||
| rack (>= 1.0, < 3) | ||
| rails (5.2.3) | ||
| actioncable (= 5.2.3) | ||
| actionmailer (= 5.2.3) | ||
| actionpack (= 5.2.3) | ||
| actionview (= 5.2.3) | ||
| activejob (= 5.2.3) | ||
| activemodel (= 5.2.3) | ||
| activerecord (= 5.2.3) | ||
| activestorage (= 5.2.3) | ||
| activesupport (= 5.2.3) | ||
| bundler (>= 1.3.0) | ||
| railties (= 5.2.3) | ||
| sprockets-rails (>= 2.0.0) | ||
| rails-dom-testing (2.0.3) | ||
| activesupport (>= 4.2.0) | ||
| nokogiri (>= 1.6) | ||
| rails-html-sanitizer (1.3.0) | ||
| loofah (~> 2.3) | ||
| railties (5.2.3) | ||
| actionpack (= 5.2.3) | ||
| activesupport (= 5.2.3) | ||
| method_source | ||
| rake (>= 0.8.7) | ||
| thor (>= 0.19.0, < 2.0) | ||
| rake (13.0.0) | ||
| rb-fsevent (0.10.3) | ||
| rb-inotify (0.10.0) | ||
| ffi (~> 1.0) | ||
| ruby-debug-ide (0.7.0) | ||
| rake (>= 0.8.1) | ||
| ruby-progressbar (1.10.1) | ||
| ruby_dep (1.5.0) | ||
| spring (2.1.0) | ||
| spring-watcher-listen (2.0.1) | ||
| listen (>= 2.7, < 4.0) | ||
| spring (>= 1.2, < 3.0) | ||
| sprockets (4.0.0) | ||
| 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.3) | ||
| thread_safe (0.3.6) | ||
| tzinfo (1.2.5) | ||
| thread_safe (~> 0.1) | ||
| websocket-driver (0.7.1) | ||
| websocket-extensions (>= 0.1.0) | ||
| websocket-extensions (0.1.4) | ||
|
|
||
| PLATFORMS | ||
| ruby | ||
|
|
||
| DEPENDENCIES | ||
| bootsnap (>= 1.1.0) | ||
| byebug | ||
| debase (>= 0.2.4.1) | ||
| listen (>= 3.0.5, < 3.2) | ||
| minitest-rails | ||
| minitest-reporters | ||
| pg (>= 0.18, < 2.0) | ||
| pry-rails | ||
| puma (~> 3.11) | ||
| rails (~> 5.2.3) | ||
| ruby-debug-ide (>= 0.7.0) | ||
| spring | ||
| spring-watcher-listen (~> 2.0.0) | ||
| tzinfo-data | ||
|
|
||
| RUBY VERSION | ||
| ruby 2.5.5p157 | ||
|
|
||
| BUNDLED WITH | ||
| 2.0.2 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| guard :minitest, autorun: false, spring: true do | ||
| watch(%r{^app/(.+).rb$}) { |m| "test/#{m[1]}_test.rb" } | ||
| watch(%r{^app/controllers/application_controller.rb$}) { 'test/controllers' } | ||
| watch(%r{^app/controllers/(.+)_controller.rb$}) { |m| "test/integration/#{m[1]}_test.rb" } | ||
| watch(%r{^app/views/(.+)_mailer/.+}) { |m| "test/mailers/#{m[1]}_mailer_test.rb" } | ||
| watch(%r{^lib/(.+).rb$}) { |m| "test/lib/#{m[1]}_test.rb" } | ||
| watch(%r{^test/.+_test.rb$}) | ||
| watch(%r{^test/test_helper.rb$}) { 'test' } | ||
| end |
| 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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| module ApplicationCable | ||
| class Channel < ActionCable::Channel::Base | ||
| end | ||
| end |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| module ApplicationCable | ||
| class Connection < ActionCable::Connection::Base | ||
| end | ||
| end |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| class ApplicationController < ActionController::API | ||
| end |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| class CustomersController < ApplicationController | ||
|
|
||
| def index | ||
| customers = Customer.all.as_json(only: [:id, :name, :registered_at, :postal_code, :phone, :movies_checked_out_count]) | ||
| render json: customers, status: :ok | ||
| end | ||
|
|
||
| end |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| KEYS = [:title, :overview, :release_date, :inventory, :available_inventory] | ||
|
|
||
| class MoviesController < ApplicationController | ||
| def index | ||
| movies = Movie.all.as_json(only: [:id, :title, :release_date]) | ||
| render json: movies, status: :ok | ||
| end | ||
|
|
||
| def show | ||
| movie_id = params[:id] | ||
| movie = Movie.find_by(id: movie_id) | ||
|
|
||
| if movie | ||
| render json: movie.as_json(only: KEYS), status: :ok | ||
| else | ||
| render json: { ok: false, errors: "Not Found"}, status: :not_found | ||
| return | ||
| end | ||
| end | ||
|
|
||
| def create | ||
| movie = Movie.new(title: params[:title], overview: params[:overview], release_date:params[:release_date], inventory:params[:inventory]) | ||
|
|
||
| if movie.save | ||
| render json: movie.as_json(only: [:id, :title, :overview, :release_date, :inventory]), status: :ok | ||
| return | ||
| else | ||
| render json: { ok: false, "errors" => ["Not Found"]}, status: :not_found | ||
| return | ||
| end | ||
| end | ||
|
|
||
| private | ||
|
|
||
| def movie_params | ||
| params.require(:movie).permit(:title, :overview, :release_date, :inventory) | ||
| end | ||
| end | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| class RentalsController < ApplicationController | ||
|
|
||
| def checkout | ||
| rental = Rental.new(customer_id: params[:rental][:customer_id], movie_id: params[:rental][:movie_id], check_out_date: Date.today, due_date: (Date.today) + 7) | ||
|
|
||
| if rental.save | ||
| render json: rental.as_json(only: [:customer_id, :movie_id]), status: :ok | ||
| return | ||
| else | ||
| # binding.pry | ||
| render json: { ok: false, "errors" => ["Not Found"]}, status: :not_found | ||
| return | ||
| end | ||
| end | ||
|
|
||
| def checkin | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider implementing Checkin so that it does not create new rental but checks in an existing rental. You'd need to first find the rental and then checkin. Some of this logic would go in a custom model method. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In addition, checkin and checkout should affect available movie inventory -- this will likely be a custom method in the movie model. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I realize now that movie inventory is optional -- I talked about this with Cloudy |
||
| rental = Rental.new(customer_id: params[:rental][:customer_id], movie_id: params[:rental][:movie_id], check_out_date: params[:rental][:check_out_date], due_date: params[:rental][:due_date], check_in_date: Date.today) | ||
|
|
||
| if rental.save | ||
| render json: rental.as_json(only: [:customer_id, :movie_id]), status: :ok | ||
| return | ||
| else | ||
| render json: { ok: false, "errors" => ["Not Found"]}, status: :not_found | ||
| return | ||
| end | ||
| end | ||
|
|
||
| end | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| class ApplicationJob < ActiveJob::Base | ||
| end |
| 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 |
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.
Instead of
"error" --> ["Not Found"]you should report any errors in the movie model created by validations by accessingmovie.errors.messages.