Advertisement
Guest User

Untitled

a guest
Jul 17th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.24 KB | None | 0 0
  1. // BASE SETUP
  2. // =============================================================================
  3.  
  4. // call the packages we need
  5. var express = require('express'); // call express
  6. var app = express(); // define our app using express
  7. var bodyParser = require('body-parser');
  8. var Sequelize = require('sequelize');
  9. var bodyParser = require('body-parser');
  10. var bcrypt = require('bcrypt');
  11.  
  12. var defineModelSerial = require('./app/models/serial');
  13. var defineModelEpisode = require('./app/models/episode');
  14. var defineModelUser = require('./app/models/user');
  15. var defineModelUserEpisode = require('./app/models/userEpisode');
  16. var defineModelUserSerial = require('./app/models/userSerial');
  17. var defineModelComment = require('./app/models/comment');
  18.  
  19. var UserSerial;
  20. var UserEpisode;
  21. var User;
  22. var Serial;
  23. var Episode;
  24. var Comment;
  25. var sequelize;
  26.  
  27. const ROUNDS = 12;
  28.  
  29. // configure app to use bodyParser()
  30. // this will let us get the data from a POST
  31. app.use(bodyParser.json({limit: "50mb"}));
  32. app.use(bodyParser.urlencoded({limit: "50mb", extended: true, parameterLimit:500000}));
  33.  
  34. var port = process.env.PORT || 8080; // set our port
  35.  
  36. // ROUTES FOR OUR API
  37. // =============================================================================
  38. var router = express.Router(); // get an instance of the express Router
  39.  
  40. // middleware to use for all requests
  41. router.use(function(req, res, next) {
  42. // do logging
  43. console.log('Something is happening.');
  44. next(); // make sure we go to the next routes and don't stop here
  45. });
  46.  
  47. // test route to make sure everything is working (accessed at GET http://localhost:8080/api)
  48. router.get('/', function(req, res) {
  49. res.json({ message: 'hooray! welcome to our api!' });
  50. //res.sendfile('public/index.html');
  51. });
  52.  
  53. router.route('/register')
  54. //REGISTER
  55. .post(function(req,res) {
  56. var pass = '';
  57. bcrypt.genSalt(ROUNDS, function(err, salt) {
  58. bcrypt.hash(req.body.password, salt, function(err, hash) {
  59. pass = hash;
  60. })
  61. })
  62. User.create({
  63. email: req.body.email,
  64. password: pass,
  65. age: req.body.age,
  66. language: req.body.language,
  67. }).then(()=>{
  68. res.json({ message: 'Done'});
  69. },(err)=> {
  70. res.json({ message: err});
  71. });
  72. })
  73.  
  74. router.route('/user')
  75. //LOGIN
  76. .post(function(req,res) {
  77. User.findOne({
  78. where: {
  79. email: req.body.email
  80. }
  81. }).then(user()=>{
  82. bcrypt.compare(req.body.password, user.password, function(err, res) {
  83. if (res) {
  84. user.update({
  85. logged: true,
  86. });
  87. res.json({ message: 'Done'})
  88. }, (err)=>{
  89. res.json({message: err})
  90. });
  91.  
  92. }
  93. })
  94. }),(err)=> {
  95. res.json({ message: err});
  96. });
  97. })
  98.  
  99. router.route('/user/:user_id')
  100. //UPDATE USER
  101. .post(function(req,res) {
  102. User.findById(req.params.user_id).then(user =>{
  103. var pass = '';
  104. bcrypt.genSalt(ROUNDS, function(err, salt) {
  105. bcrypt.hash(req.body.password, salt, function(err, hash) {
  106. pass = hash;
  107. })
  108. })
  109. user.update({
  110. email: req.body.email,
  111. password: pass,
  112. });
  113. res.json({ message: 'Done'})
  114. }, (err)=>{
  115. res.json({message: err})
  116. });
  117. })
  118. //GET ACTUAL USER
  119. .get(function(req,res) {
  120. User.findById(req.params.user_id).then(user =>{
  121. res.json({user});
  122. }),(err)=>{
  123. res.json({message: err})
  124. });
  125. })
  126.  
  127. router.route('/user/:user_id/logout')
  128. //LOGOUT
  129. .post(function(req,res) {
  130. User.findById(req.params.user_id).then(user =>{
  131. user.update({
  132. logged: false
  133. })
  134. })
  135. })
  136.  
  137. router.route('/serials')
  138. //GET ALL SERIALS
  139. .get(function(req,res) {
  140. Serial.findAll().then(serials => {
  141. res.json({serials});
  142. }),(err)=>{
  143. res.json({message: err})
  144. });
  145. })
  146.  
  147.  
  148. router.route('/serials/:serial_id')
  149. //ADD SERIAL TO FAVOURITE LIST
  150. .post(function(req,res) {
  151. UserSerial.findOne({{serial_id : req.params.serial_id, user_id: req.body.user_id}})
  152. .then(userSerial => {
  153. if(userSerial) {
  154. userSerial.update({
  155. favourite: true
  156. });
  157. }
  158. else {
  159. UserSerial.create({
  160. favourite: true,
  161. watched: false,
  162. serial_id: req.params.serial_id,
  163. user_id: req.body.user_id,
  164. })
  165. }
  166. }),(err)=>{
  167. res.json({message: err})
  168. });
  169. })
  170. //REMOVE SERIAL FROM FAVOURITE LIST
  171. .remove(function(req,res) {
  172. UserSerial.destroy({ where: {serial_id : req.params.serial_id, user_id: req.body.user_id}}).then(()=>{
  173. res.json({ message: 'Done'});
  174. },(err)=> {
  175. res.json({ message: err});
  176. });
  177. })
  178.  
  179. router.route('/serials/:serial_id/watched')
  180. //ALL EPISODES IN SERIAL WATCHED
  181. .post(function(req,res) {
  182. UserSerial.findOne({ where: {serial_id : req.params.serial_id, user_id: req.body.user_id}})
  183. .then(userSerial => {
  184. if(userSerial) {
  185. userSerial.update({
  186. watched: true
  187. });
  188. }
  189. else {
  190. UserSerial.create({
  191. favourite: false,
  192. watched: true,
  193. serial_id: req.params.serial_id,
  194. user_id: req.body.user_id,
  195. })
  196. }
  197. }),(err)=>{
  198. res.json({message: err})
  199. });
  200. })
  201.  
  202. router.route('/serials/:serial_id/episodes')
  203. //GET ALL EPISODES OF SERIAL
  204. .get(function(req,res) {
  205. Episode.findAll({where: {serial_id: req.params.serial_id}},order: ['number', DESC]).then(episodes => {
  206. res.json({episodes});
  207. }),(err)=>{
  208. res.json({message: err})
  209. });
  210. })
  211.  
  212. router.route('/serials/:serial_id/episodes/:episode_id')
  213. //ADD EPISODE TO FAVOURITE LIST
  214. .post(function(req,res) {
  215. UserEpisode.findOne({{episode_id : req.params.episode, user_id: req.body.user_id}})
  216. .then(userEpisode => {
  217. if(userEpisode) {
  218. userEpisode.update({
  219. favourite: true
  220. });
  221. }
  222. else {
  223. UserEpisode.create({
  224. favourite: true,
  225. watched: false,
  226. serial_id: req.params.serial_id,
  227. user_id: req.body.user_id,
  228. })
  229. }
  230. }),(err)=>{
  231. res.json({message: err})
  232. });
  233. })
  234. //REMOVE EPISODE FROM FAVOURITE LIST
  235. .remove(function(req,res) {
  236. UserEpisode.destroy({ where: {episode_id : req.params.episode_id, user_id : req.body.user_id}}).then(()=>{
  237. res.json({ message: 'Done'});
  238. },(err)=> {
  239. res.json({ message: err});
  240. });
  241. })
  242.  
  243. router.route('/serials/:serial_id/episodes/:episode_id/watched')
  244. //EPISODE WATCHED, SAVE TIME
  245. .post(function(req,res) {
  246. UserEpisode.findOne({ where: {episode_id : req.params.episode_id, user_id: req.body.user_id}})
  247. .then(userEpisode => {
  248. if(userEpisode) {
  249. userEpisode.update({
  250. watched: true
  251. });
  252. }
  253. else {
  254. userEpisode.create({
  255. favourite: false,
  256. watched: true,
  257. episode_id: req.params.episode_id,
  258. user_id: req.body.user_id,
  259. })
  260. }
  261. }),(err)=>{
  262. res.json({message: err})
  263. });
  264. })
  265.  
  266. router.route('/serials/:serial_id/episodes/:episode_id/comments')
  267. .post(function(req,res) { //ADD COMMENT TO EPISODE
  268. Comment.create({
  269. message: req.body.message,
  270. episode_id: req.params.episode_id,
  271. user_id: req.body.user_id,
  272. })
  273. })
  274. .get(function(req,res) { //GET COMMENTS OF EPISODE
  275. Comment.findAll({where: {episode_id: req.params.episode_id}},order: ['date', DESC]).then(comments => {
  276. res.json({comments});
  277. }),(err)=>{
  278. res.json({message: err})
  279. });
  280. })
  281.  
  282.  
  283.  
  284.  
  285. // REGISTER OUR ROUTES -------------------------------
  286. // all of our routes will be prefixed with /api
  287. app.use('/api', router);
  288.  
  289.  
  290. // START THE SERVER
  291. // =============================================================================
  292. app.listen(port);
  293. console.log('Magic happens on port ' + port);
  294.  
  295. getReadDb();
  296.  
  297. function getReadDb(){
  298. sequelize = new Sequelize('database', 'username', 'password', {
  299. host: 'localhost',
  300. dialect: 'sqlite',
  301. pool: {
  302. max: 5,
  303. min: 0,
  304. idle: 10000
  305. },
  306. // SQLite only
  307. storage: './app/models/watchit.db'
  308. });
  309.  
  310. Serial = defineModelSerial(sequelize);
  311. Episode = defineModelEpisode(sequelize);
  312. User = defineModelUser(sequelize);
  313. UserEpisode = defineModelUserEpisode(sequelize);
  314. UserSerial = defineModelUserSerial(sequelize);
  315. Comment = defineModelComment(sequelize);
  316.  
  317. Episode.belongsTo(Serial, {foreignKey: 'serial_id'});
  318. Serial.hasMany(Episode, {foreignKey: 'serial_id'});
  319.  
  320. Episode.hasMany(UserEpisode, {foreignKey: 'episode_id'});
  321. User.hasMany(UserEpisode, {foreignKey: 'user_id'});
  322. UserEpisode.belongsTo(User, {foreignKey: 'user_id'});
  323. UserEpisode.belongsTo(Episode, {foreignKey: 'episode_id'});
  324.  
  325. Serial.hasMany(UserSerial, {foreignKey: 'serial_id'});
  326. User.hasMany(UserSerial, {foreignKey: 'user_id'});
  327. UserSerial.belongsTo(Serial, {foreignKey: 'serial_id'});
  328. UserSerial.belongsTo(User, {foreignKey: 'user_id'});
  329.  
  330. User.hasMany(Comment, {foreignKey: 'user_id'});
  331. Episode.hasMany(Comment, {foreignKey: 'episode_id'});
  332. Comment.belongsTo(User, {foreignKey: 'user_id'});
  333. Comment.belongsTo(Episode, {foreignKey: 'episode_id'});
  334.  
  335. Serial.sync({force: true})
  336. Episode.sync({force: true})
  337. UserSerial.sync({force: true})
  338. UserEpisode.sync({force: true})
  339. User.sync({force: true})
  340. Comment.sync({foce: true})
  341. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement