uRecommend.me - backend
In this project we are using a subset of The Movies Database created by Rounak Banik) and posted in Kaggle. This dataset contains metadata from 45.000 movies released on or before July 2017.
As the original datasets is about 1Gb of data, we decided to preprocess this raw data in order to work with the information that we want to work with. Because of that we randomly selected 10.000 movies with a subset of the attributes of the main dataset.
This data has been cleaned and proccessed in order to fullfill the requirements of the database schema.
Our database urecommendme
has three (3) collections named media
, tags
and users
.
media
collectionThe documents in this collections have the following media objects:
KEY | TYPE | VEXPLANATION |
---|---|---|
id |
string | ID of media document |
original_language |
string | Original media language |
original_title |
string | Original media title |
overview |
string | Media overview |
release_date |
string | Media release date |
runtime |
number | Media length |
title |
string | Media title (default) |
rating |
number | Media rating |
tags |
array of tags items |
Media tags in format {id: number, name: string} |
ratings |
array of ratings items |
Media ratings from users in format {id: number, rating: number} |
tags
collectionThe documents in this collections have the following tag objects:
KEY | TYPE | VEXPLANATION |
---|---|---|
id |
string | ID of tag document |
name |
string | Tag name |
media |
array of id: number from media items |
Media tagged |
users
collectionThe documents in this collections have the following user objects:
KEY | TYPE | VEXPLANATION |
---|---|---|
id |
string | ID of user document |
name |
string | Username |
password |
string | User password |
email |
string | User email |
ratings |
array of ratings items |
Media rated by the user in format {id: number, rating: number} |
In the above table there is a detailed information about the endpoints of our app.
ENTITY | TYPE | URL | PERMISSIONS | EXPLANATION |
---|---|---|---|---|
media | DELETE | /media/:id_media | admin | Delete media id_media |
media | GET | /media | users | Return a list of all media items |
media | GET | /media/:id_media | users | Returns a media by id_media |
media | GET | /media/tag/:id_tag | users | Returns all media items tagged by id_tag |
media | POST | /media | admin | New media item |
media | PUT | /media/:id_media | admin | Update media by id_media |
tags | DELETE | /tags/:id_tag | admin | Delete the tag id_tag |
tags | GET | /tags | users | Return a list of all tags |
tags | GET | /tags/:id_tag | users | Return a specific tag by id_tag |
tags | POST | /tags | admin | New tag |
users | DELETE | /users/:id_user | users | Delete user |
users | GET | /users | admin | Return a list of all users |
users | GET | /users/:id_user | admin | Return a specific user by id_user |
users | PUT | /users/:id_user | users | Update user info by id_user |
users | POST | /users | users | Create new user |