56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
require('../models/schema');
|
|
var config = require('config');
|
|
const redis = require('../helpers/redis');
|
|
|
|
var saveAction = (actionKey, object) => {
|
|
if (object.constructor.modelName == "Space")
|
|
return;
|
|
|
|
let attr = {
|
|
action: actionKey,
|
|
space: object.space_id || object.space,
|
|
user: object.user_id || object.user,
|
|
editor_name: object.editor_name,
|
|
object: object.toJSON()
|
|
};
|
|
|
|
let action = new Action(attr);
|
|
action.save(function(err) {
|
|
if (err)
|
|
console.error("saved create action err:", err);
|
|
});
|
|
};
|
|
|
|
module.exports = (req, res, next) => {
|
|
res.header("Cache-Control", "no-cache");
|
|
|
|
req['channelId'] = req.headers['x-spacedeck-channel'];
|
|
req['spacePassword'] = req.headers['x-spacedeck-spacepassword'];
|
|
req['spaceAuth'] = req.query['spaceAuth'] || req.headers['x-spacedeck-space-auth'];
|
|
|
|
res['distributeCreate'] = function(model, object) {
|
|
if (!object) return;
|
|
redis.sendMessage("create", model, object.toJSON(), req.channelId);
|
|
this.status(201).json(object.toJSON());
|
|
saveAction("create", object);
|
|
};
|
|
|
|
res['distributeUpdate'] = function(model, object) {
|
|
if (!object) return;
|
|
redis.sendMessage("update", model, object.toJSON(), req.channelId);
|
|
this.status(200).json(object.toJSON());
|
|
saveAction("update", object);
|
|
};
|
|
|
|
res['distributeDelete'] = function(model, object) {
|
|
if (!object) return;
|
|
redis.sendMessage("delete", model, object.toJSON(), req.channelId);
|
|
this.sendStatus(204);
|
|
saveAction("delete", object);
|
|
};
|
|
|
|
next();
|
|
}
|