https://github.com/douglasmoraisdev/node_movie_rental_api
A simple Movie Rental API with Node and Express.js
https://github.com/douglasmoraisdev/node_movie_rental_api
chaijs expressjs mochajs node nodejs oauth2 sequelizejs tdd
Last synced: 23 days ago
JSON representation
A simple Movie Rental API with Node and Express.js
- Host: GitHub
- URL: https://github.com/douglasmoraisdev/node_movie_rental_api
- Owner: douglasmoraisdev
- Created: 2018-11-29T19:33:21.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2018-12-05T12:24:24.000Z (about 7 years ago)
- Last Synced: 2025-07-10T05:16:39.760Z (8 months ago)
- Topics: chaijs, expressjs, mochajs, node, nodejs, oauth2, sequelizejs, tdd
- Language: JavaScript
- Size: 161 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# node_movie_rental_api
A simple Movie Rental API with Node and Express.js
## Table of Contents
1. [Description](#Description)
2. [Running](#Running)
3. [Database Migration](#database-migration)
4. [Test](#Test)
4. [API EndPoints Description](#API-EndPoints-Description)
---
## Description
A REST API for a Movie Rental Business:
* Show all available Movies to Rent.
* Each Movie (Movie Title), may have many copies (Movie Copy)
* A User can register
* A User can do Login/Logout using a Auth Token
* A User can Rent one or many Movie Copies available
* A User just can Rent Available Movies (a Movie Copy not Rented)
* A User can Return a Movie Copy rented using a movie_copy_id
* For list, rent and return movies, a User should be authenticated
## Running
* 1 - Update packages
```
$ npm install
```
* 2 - Start Server
```
$ npm start
```
* 3 - Server available on:
>http://localhost:3000
## Database Migration
* 1 - Go to the database path
```
$ cd movie_rental/db/
```
* 2 - Delete migration lock (if exists)
```
$ rm sequelize-meta.json
```
* 3 - Create a alias for Sequelize CLI (Optional)
```
$ alias sequelize='../node_modules/.bin/sequelize'
```
* 4 - Run migration
```
$ sequelize db:migrate
```
* 5 - Populate database
```
$ sequelize db:seed:all
```
## Test
* Run tests
```
$ npm test
```
## API EndPoints Description
Note: All endpoints (except /users/register and /users/authenticate) must be authenticated using User Token on the Authorization Header!
CURL example:
```
$ curl -X GET http://localhost:3000/movies/available -H 'authorization: Bearer 4user.generated.tok3n'
```
### User Routes
>POST /users/authenticate
>
Authenticate a user, return the Auth Token
* body params(JSON format) :
* username (The user email)
* password (User password)
* returns:
* token (Use it on Authorization Header Bearer)
>POST /users/register
>
Register a new user
* body params(JSON format):
* username (The user email)
* password (User password)
* firstName (User First Name)
* lastName (User Last Name)
* returns:
* token (Use it on Authorization Header Bearer)
### Movies Routes
>GET /movies/available
>
Show a list of all available Movies for Rent and its quantity.
* returns:
* id (Available Movie Title id. Use it for Rent a movie)
* title (Movie title name)
* availables (available quantity)
>POST /movies/rent/
>
Rent a Movie for a User. Get the first available Copy of a Movie, register the rent and returns the Movie Copy Info rented.
* url params:
* movie_id (ID of a available Movie Title)
* returns:
* rent
* id (id of the Rent)
* movieCopy_ID (id of a Movie Copy. Use it for return the Movie)
* User_ID (id of the User),
* rentalDate (Rent timestamp),
>PUT /movies/return/
>
Returns a Movie for a User.
* url params:
* movie_copy_id (ID of a Movie Copy for return)
* returns:
* msg: (Status messagem)
* success: (Success Status)