This project is the joint work of Ricky Amparo and Brandon Stewart. This project was part of our curriculum at the Turing School of Software and Design. The primary learning goal in this project was to implement a RESTful API using Ruby on Rails. We also covered topics related to implementing advanced Active Record queries, implementing filters and serializers, and building single-responsibility controllers. We used Travis CI to manage our workflow throughout the project.
Note: the CSV files used as a source for this project are not included in this repository, but they can be downloaded here. These files must be saved in the db/data directory in order to be used to populate the data from the server.
Instructions for Implementing Rales Engine:
Run a bundle command to install all of the required gemfiles
bundle
Once the bundle has successfully executed, set up the PostgreSQL database, load its schema, and populate it with data with the following rake commands.
rake db:create
rake db:migrate
rake pop:all
To launch the server and interact wit the application, run the following command in the terminal
rails s
You can visit any of the routes in our application and view them from your browser by navigating to localhost:3000. To view the JSON in a human readable way, it is recommended that you download a Google chrome plugin, or alternatively, view the JSON endpoints in Firefox, which makes JSON human readable by default.
A full listing of the routes in our application can be found below:
Routes match in priority from top to bottom
Helper | HTTP Verb | Path | Controller#Action |
---|---|---|---|
Path / Url | |||
api_v1_merchants_most_revenue_index_path | GET | /api/v1/merchants/most_revenue(.:format) |
api/v1/merchants/most_revenue#index |
api_v1_merchants_revenue_index_path | GET | /api/v1/merchants/revenue(.:format) |
api/v1/merchants/revenue#index |
api_v1_merchants_find_index_path | GET | /api/v1/merchants/find(.:format) |
api/v1/merchants/find#index |
api_v1_merchants_find_all_index_path | GET | /api/v1/merchants/find_all(.:format) |
api/v1/merchants/find_all#index |
api_v1_merchants_most_items_path | GET | /api/v1/merchants/most_items(.:format) |
api/v1/merchants/most_items#index |
api_v1_invoices_find_index_path | GET | /api/v1/invoices/find(.:format) |
api/v1/invoices/find#index |
api_v1_invoices_find_all_index_path | GET | /api/v1/invoices/find_all(.:format) |
api/v1/invoices/find_all#index |
api_v1_customers_find_index_path | GET | /api/v1/customers/find(.:format) |
api/v1/customers/find#index |
api_v1_customers_find_all_index_path | GET | /api/v1/customers/find_all(.:format) |
api/v1/customers/find_all#index |
api_v1_customer_favorite_merchant_index_path | GET | /api/v1/customers/:customer_id/favorite_merchant(.:format) |
api/v1/favorite_merchant#index |
api_v1_customers_path | GET | /api/v1/customers(.:format) |
api/v1/customers#index |
api_v1_customer_path | GET | /api/v1/customers/:id(.:format) |
api/v1/customers#show |
api_v1_invoice_transactions_path | GET | /api/v1/invoices/:invoice_id/transactions(.:format) |
api/v1/invoices/transactions#index {:to=>"invoices/transactions#index"} |
api_v1_invoice_merchant_index_path | GET | /api/v1/invoices/:invoice_id/merchant(.:format) |
api/v1/invoices/merchant#index {:to=>"invoices/merchant#index"} |
api_v1_invoice_items_path | GET | /api/v1/invoices/:invoice_id/items(.:format) |
api/v1/invoices/items#index {:to=>"invoices/items#index"} |
api_v1_invoice_customer_index_path | GET | /api/v1/invoices/:invoice_id/customer(.:format) |
api/v1/invoices/customer#index {:to=>"invoices/customer#index"} |
api_v1_invoice_invoice_items_path | GET | /api/v1/invoices/:invoice_id/invoice_items(.:format) |
api/v1/invoices/invoice_items#index {:to=>"invoices/invoice_items#index"} |
api_v1_invoices_path | GET | /api/v1/invoices(.:format) |
api/v1/invoices#index |
api_v1_invoice_path | GET | /api/v1/invoices/:id(.:format) |
api/v1/invoices#show |
api_v1_merchant_items_path | GET | /api/v1/merchants/:merchant_id/items(.:format) |
api/v1/merchants/items#index {:to=>"merchants/items#index"} |
api_v1_merchant_invoices_path | GET | /api/v1/merchants/:merchant_id/invoices(.:format) |
api/v1/merchants/invoices#index {:to=>"merchants/invoices#index"} |
api_v1_merchant_revenue_index_path | GET | /api/v1/merchants/:merchant_id/revenue(.:format) |
api/v1/revenue#index |
api_v1_merchant_favorite_customer_index_path | GET | /api/v1/merchants/:merchant_id/favorite_customer(.:format) |
api/v1/favorite_customer#index |
api_v1_merchants_path | GET | /api/v1/merchants(.:format) |
api/v1/merchants#index |
api_v1_merchant_path | GET | /api/v1/merchants/:id(.:format) |
api/v1/merchants#show |
api_v1_items_find_index_path | GET | /api/v1/items/find(.:format) |
api/v1/items/find#index |
api_v1_items_find_all_index_path | GET | /api/v1/items/find_all(.:format) |
api/v1/items/find_all#index |
api_v1_items_most_revenue_index_path | GET | /api/v1/items/most_revenue(.:format) |
api/v1/items/most_revenue#index |
api_v1_items_most_items_path | GET | /api/v1/items/most_items(.:format) |
api/v1/items/most_items#index |
api_v1_item_invoice_items_path | GET | /api/v1/items/:item_id/invoice_items(.:format) |
api/v1/items/invoice_items#index {:to=>"items/invoice_items#index"} |
api_v1_item_merchant_index_path | GET | /api/v1/items/:item_id/merchant(.:format) |
api/v1/items/merchant#index {:to=>"items/merchant#index"} |
api_v1_item_best_day_index_path | GET | /api/v1/items/:item_id/best_day(.:format) |
api/v1/best_day#index |
api_v1_items_path | GET | /api/v1/items(.:format) |
api/v1/items#index |
api_v1_item_path | GET | /api/v1/items/:id(.:format) |
api/v1/items#show |
api_v1_transactions_find_index_path | GET | /api/v1/transactions/find(.:format) |
api/v1/transactions/find#index |
api_v1_transactions_find_all_index_path | GET | /api/v1/transactions/find_all(.:format) |
api/v1/transactions/find_all#index |
api_v1_transactions_path | GET | /api/v1/transactions(.:format) |
api/v1/transactions#index |
api_v1_transaction_path | GET | /api/v1/transactions/:id(.:format) |
api/v1/transactions#show |
api_v1_invoice_items_find_index_path | GET | /api/v1/invoice_items/find(.:format) |
api/v1/invoice_items/find#index |
api_v1_invoice_items_find_all_index_path | GET | /api/v1/invoice_items/find_all(.:format) |
api/v1/invoice_items/find_all#index |
GET | /api/v1/invoice_items(.:format) |
api/v1/invoice_items#index |
|
api_v1_invoice_item_path | GET | /api/v1/invoice_items/:id(.:format) |
api/v1/invoice_items#show |