Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // BASE SETUP
- // =============================================================================
- // call the packages we need
- var express = require('express'); // call express
- var app = express(); // define our app using express
- var bodyParser = require('body-parser');
- var Sequelize = require('sequelize');
- var bodyParser = require('body-parser');
- var bcrypt = require('bcrypt');
- var defineModelSerial = require('./app/models/serial');
- var defineModelEpisode = require('./app/models/episode');
- var defineModelUser = require('./app/models/user');
- var defineModelUserEpisode = require('./app/models/userEpisode');
- var defineModelUserSerial = require('./app/models/userSerial');
- var defineModelComment = require('./app/models/comment');
- var UserSerial;
- var UserEpisode;
- var User;
- var Serial;
- var Episode;
- var Comment;
- var sequelize;
- const ROUNDS = 12;
- // configure app to use bodyParser()
- // this will let us get the data from a POST
- app.use(bodyParser.json({limit: "50mb"}));
- app.use(bodyParser.urlencoded({limit: "50mb", extended: true, parameterLimit:500000}));
- var port = process.env.PORT || 8080; // set our port
- // ROUTES FOR OUR API
- // =============================================================================
- var router = express.Router(); // get an instance of the express Router
- // middleware to use for all requests
- router.use(function(req, res, next) {
- // do logging
- console.log('Something is happening.');
- next(); // make sure we go to the next routes and don't stop here
- });
- // test route to make sure everything is working (accessed at GET http://localhost:8080/api)
- router.get('/', function(req, res) {
- res.json({ message: 'hooray! welcome to our api!' });
- //res.sendfile('public/index.html');
- });
- router.route('/register')
- //REGISTER
- .post(function(req,res) {
- var pass = '';
- bcrypt.genSalt(ROUNDS, function(err, salt) {
- bcrypt.hash(req.body.password, salt, function(err, hash) {
- pass = hash;
- })
- })
- User.create({
- email: req.body.email,
- password: pass,
- age: req.body.age,
- language: req.body.language,
- }).then(()=>{
- res.json({ message: 'Done'});
- },(err)=> {
- res.json({ message: err});
- });
- })
- router.route('/user')
- //LOGIN
- .post(function(req,res) {
- User.findOne({
- where: {
- email: req.body.email
- }
- }).then(user()=>{
- bcrypt.compare(req.body.password, user.password, function(err, res) {
- if (res) {
- user.update({
- logged: true,
- });
- res.json({ message: 'Done'})
- }, (err)=>{
- res.json({message: err})
- });
- }
- })
- }),(err)=> {
- res.json({ message: err});
- });
- })
- router.route('/user/:user_id')
- //UPDATE USER
- .post(function(req,res) {
- User.findById(req.params.user_id).then(user =>{
- var pass = '';
- bcrypt.genSalt(ROUNDS, function(err, salt) {
- bcrypt.hash(req.body.password, salt, function(err, hash) {
- pass = hash;
- })
- })
- user.update({
- email: req.body.email,
- password: pass,
- });
- res.json({ message: 'Done'})
- }, (err)=>{
- res.json({message: err})
- });
- })
- //GET ACTUAL USER
- .get(function(req,res) {
- User.findById(req.params.user_id).then(user =>{
- res.json({user});
- }),(err)=>{
- res.json({message: err})
- });
- })
- router.route('/user/:user_id/logout')
- //LOGOUT
- .post(function(req,res) {
- User.findById(req.params.user_id).then(user =>{
- user.update({
- logged: false
- })
- })
- })
- router.route('/serials')
- //GET ALL SERIALS
- .get(function(req,res) {
- Serial.findAll().then(serials => {
- res.json({serials});
- }),(err)=>{
- res.json({message: err})
- });
- })
- router.route('/serials/:serial_id')
- //ADD SERIAL TO FAVOURITE LIST
- .post(function(req,res) {
- UserSerial.findOne({{serial_id : req.params.serial_id, user_id: req.body.user_id}})
- .then(userSerial => {
- if(userSerial) {
- userSerial.update({
- favourite: true
- });
- }
- else {
- UserSerial.create({
- favourite: true,
- watched: false,
- serial_id: req.params.serial_id,
- user_id: req.body.user_id,
- })
- }
- }),(err)=>{
- res.json({message: err})
- });
- })
- //REMOVE SERIAL FROM FAVOURITE LIST
- .remove(function(req,res) {
- UserSerial.destroy({ where: {serial_id : req.params.serial_id, user_id: req.body.user_id}}).then(()=>{
- res.json({ message: 'Done'});
- },(err)=> {
- res.json({ message: err});
- });
- })
- router.route('/serials/:serial_id/watched')
- //ALL EPISODES IN SERIAL WATCHED
- .post(function(req,res) {
- UserSerial.findOne({ where: {serial_id : req.params.serial_id, user_id: req.body.user_id}})
- .then(userSerial => {
- if(userSerial) {
- userSerial.update({
- watched: true
- });
- }
- else {
- UserSerial.create({
- favourite: false,
- watched: true,
- serial_id: req.params.serial_id,
- user_id: req.body.user_id,
- })
- }
- }),(err)=>{
- res.json({message: err})
- });
- })
- router.route('/serials/:serial_id/episodes')
- //GET ALL EPISODES OF SERIAL
- .get(function(req,res) {
- Episode.findAll({where: {serial_id: req.params.serial_id}},order: ['number', DESC]).then(episodes => {
- res.json({episodes});
- }),(err)=>{
- res.json({message: err})
- });
- })
- router.route('/serials/:serial_id/episodes/:episode_id')
- //ADD EPISODE TO FAVOURITE LIST
- .post(function(req,res) {
- UserEpisode.findOne({{episode_id : req.params.episode, user_id: req.body.user_id}})
- .then(userEpisode => {
- if(userEpisode) {
- userEpisode.update({
- favourite: true
- });
- }
- else {
- UserEpisode.create({
- favourite: true,
- watched: false,
- serial_id: req.params.serial_id,
- user_id: req.body.user_id,
- })
- }
- }),(err)=>{
- res.json({message: err})
- });
- })
- //REMOVE EPISODE FROM FAVOURITE LIST
- .remove(function(req,res) {
- UserEpisode.destroy({ where: {episode_id : req.params.episode_id, user_id : req.body.user_id}}).then(()=>{
- res.json({ message: 'Done'});
- },(err)=> {
- res.json({ message: err});
- });
- })
- router.route('/serials/:serial_id/episodes/:episode_id/watched')
- //EPISODE WATCHED, SAVE TIME
- .post(function(req,res) {
- UserEpisode.findOne({ where: {episode_id : req.params.episode_id, user_id: req.body.user_id}})
- .then(userEpisode => {
- if(userEpisode) {
- userEpisode.update({
- watched: true
- });
- }
- else {
- userEpisode.create({
- favourite: false,
- watched: true,
- episode_id: req.params.episode_id,
- user_id: req.body.user_id,
- })
- }
- }),(err)=>{
- res.json({message: err})
- });
- })
- router.route('/serials/:serial_id/episodes/:episode_id/comments')
- .post(function(req,res) { //ADD COMMENT TO EPISODE
- Comment.create({
- message: req.body.message,
- episode_id: req.params.episode_id,
- user_id: req.body.user_id,
- })
- })
- .get(function(req,res) { //GET COMMENTS OF EPISODE
- Comment.findAll({where: {episode_id: req.params.episode_id}},order: ['date', DESC]).then(comments => {
- res.json({comments});
- }),(err)=>{
- res.json({message: err})
- });
- })
- // REGISTER OUR ROUTES -------------------------------
- // all of our routes will be prefixed with /api
- app.use('/api', router);
- // START THE SERVER
- // =============================================================================
- app.listen(port);
- console.log('Magic happens on port ' + port);
- getReadDb();
- function getReadDb(){
- sequelize = new Sequelize('database', 'username', 'password', {
- host: 'localhost',
- dialect: 'sqlite',
- pool: {
- max: 5,
- min: 0,
- idle: 10000
- },
- // SQLite only
- storage: './app/models/watchit.db'
- });
- Serial = defineModelSerial(sequelize);
- Episode = defineModelEpisode(sequelize);
- User = defineModelUser(sequelize);
- UserEpisode = defineModelUserEpisode(sequelize);
- UserSerial = defineModelUserSerial(sequelize);
- Comment = defineModelComment(sequelize);
- Episode.belongsTo(Serial, {foreignKey: 'serial_id'});
- Serial.hasMany(Episode, {foreignKey: 'serial_id'});
- Episode.hasMany(UserEpisode, {foreignKey: 'episode_id'});
- User.hasMany(UserEpisode, {foreignKey: 'user_id'});
- UserEpisode.belongsTo(User, {foreignKey: 'user_id'});
- UserEpisode.belongsTo(Episode, {foreignKey: 'episode_id'});
- Serial.hasMany(UserSerial, {foreignKey: 'serial_id'});
- User.hasMany(UserSerial, {foreignKey: 'user_id'});
- UserSerial.belongsTo(Serial, {foreignKey: 'serial_id'});
- UserSerial.belongsTo(User, {foreignKey: 'user_id'});
- User.hasMany(Comment, {foreignKey: 'user_id'});
- Episode.hasMany(Comment, {foreignKey: 'episode_id'});
- Comment.belongsTo(User, {foreignKey: 'user_id'});
- Comment.belongsTo(Episode, {foreignKey: 'episode_id'});
- Serial.sync({force: true})
- Episode.sync({force: true})
- UserSerial.sync({force: true})
- UserEpisode.sync({force: true})
- User.sync({force: true})
- Comment.sync({foce: true})
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement