space_messages.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. "use strict";
  2. var config = require('config');
  3. const db = require('../../models/db');
  4. const Sequelize = require('sequelize');
  5. const Op = Sequelize.Op;
  6. const uuidv4 = require('uuid/v4');
  7. var redis = require('../../helpers/redis');
  8. var mailer = require('../../helpers/mailer');
  9. var uploader = require('../../helpers/uploader');
  10. var space_render = require('../../helpers/space-render');
  11. var phantom = require('../../helpers/phantom');
  12. var async = require('async');
  13. var fs = require('fs');
  14. var _ = require("underscore");
  15. var archiver = require('archiver');
  16. var request = require('request');
  17. var url = require("url");
  18. var path = require("path");
  19. var crypto = require('crypto');
  20. var glob = require('glob');
  21. var express = require('express');
  22. var router = express.Router({mergeParams: true});
  23. // JSON MAPPINGS
  24. var userMapping = {
  25. _id: 1,
  26. nickname: 1,
  27. email: 1,
  28. avatar_thumb_uri: 1
  29. };
  30. var spaceMapping = {
  31. _id: 1,
  32. name: 1,
  33. thumbnail_url: 1
  34. };
  35. var roleMapping = {
  36. "none": 0,
  37. "viewer": 1,
  38. "editor": 2,
  39. "admin": 3
  40. }
  41. // MESSAGES
  42. router.get('/', function(req, res, next) {
  43. db.Message.findAll({where:{
  44. space_id: req.space._id
  45. }, include: ['user']})
  46. .then(function(messages) {
  47. res.status(200).json(messages);
  48. });
  49. });
  50. router.post('/', function(req, res, next) {
  51. var attrs = req.body;
  52. attrs.space_id = req.space._id;
  53. if (req.user) {
  54. attrs.user = req.user;
  55. attrs.user_id = req.user._id;
  56. } else {
  57. attrs.user = null;
  58. }
  59. var msg = attrs;
  60. msg._id = uuidv4();
  61. db.Message.create(msg).then(function() {
  62. if (msg.message.length <= 1) return;
  63. // TODO reimplement notifications
  64. res.distributeCreate("Message", msg);
  65. });
  66. });
  67. router.delete('/:message_id', function(req, res, next) {
  68. db.Message.findOne({where:{
  69. "_id": req.params.message_id
  70. }}).then(function(msg) {
  71. if (!msg) {
  72. res.sendStatus(404);
  73. } else {
  74. msg.destroy().then(function() {
  75. res.distributeDelete("Message", msg);
  76. });
  77. }
  78. });
  79. });
  80. module.exports = router;