news.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. 'use strict';
  2. const async = require('async');
  3. const db = require('../db');
  4. const cache = require('../cache');
  5. const utils = require('../utils');
  6. const hooks = require('./hooks');
  7. cache.sub('news.create', news => {
  8. utils.socketsFromUser(news.createdBy, sockets => {
  9. sockets.forEach(socket => {
  10. socket.emit('event:admin.news.created', news);
  11. });
  12. });
  13. });
  14. module.exports = {
  15. index: (session, cb) => {
  16. db.models.news.find({}).sort({ createdAt: 'desc' }).exec((err, news) => {
  17. if (err) throw err;
  18. else cb({ status: 'success', data: news });
  19. });
  20. },
  21. create: hooks.adminRequired((session, data, cb, userId) => {
  22. async.waterfall([
  23. (next) => {
  24. data.createdBy = userId;
  25. data.createdAt = Date.now();
  26. db.models.news.create(data, next);
  27. }
  28. ], (err, news) => {
  29. console.log(err);
  30. if (err) return cb({ 'status': 'failure', 'message': 'Something went wrong' });
  31. else {
  32. cache.pub('news.create', news);
  33. return cb({ 'status': 'success', 'message': 'Successfully created News' });
  34. }
  35. });
  36. }),
  37. newest: (session, cb) => {
  38. db.models.news.findOne({}).sort({ createdAt: 'desc' }).exec((err, news) => {
  39. if (err) throw err;
  40. else cb({ status: 'success', data: news });
  41. });
  42. }
  43. };