Factor out checking for triggers/liveQuery in rest.js (#3539)
This commit is contained in:
23
src/rest.js
23
src/rest.js
@@ -14,6 +14,16 @@ var RestQuery = require('./RestQuery');
|
|||||||
var RestWrite = require('./RestWrite');
|
var RestWrite = require('./RestWrite');
|
||||||
var triggers = require('./triggers');
|
var triggers = require('./triggers');
|
||||||
|
|
||||||
|
function checkTriggers(className, config, types) {
|
||||||
|
return types.some((triggerType) => {
|
||||||
|
return triggers.getTrigger(className, triggers.Types[triggerType], config.applicationId);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkLiveQuery(className, config) {
|
||||||
|
return config.liveQueryController && config.liveQueryController.hasLiveQuery(className)
|
||||||
|
}
|
||||||
|
|
||||||
// Returns a promise for an object with optional keys 'results' and 'count'.
|
// Returns a promise for an object with optional keys 'results' and 'count'.
|
||||||
function find(config, auth, className, restWhere, restOptions, clientSDK) {
|
function find(config, auth, className, restWhere, restOptions, clientSDK) {
|
||||||
enforceRoleSecurity('find', className, auth);
|
enforceRoleSecurity('find', className, auth);
|
||||||
@@ -49,10 +59,9 @@ function del(config, auth, className, objectId) {
|
|||||||
var inflatedObject;
|
var inflatedObject;
|
||||||
|
|
||||||
return Promise.resolve().then(() => {
|
return Promise.resolve().then(() => {
|
||||||
if (triggers.getTrigger(className, triggers.Types.beforeDelete, config.applicationId) ||
|
const hasTriggers = checkTriggers(className, config, ['beforeDelete', 'afterDelete']);
|
||||||
triggers.getTrigger(className, triggers.Types.afterDelete, config.applicationId) ||
|
const hasLiveQuery = checkLiveQuery(className, config);
|
||||||
(config.liveQueryController && config.liveQueryController.hasLiveQuery(className)) ||
|
if (hasTriggers || hasLiveQuery || className == '_Session') {
|
||||||
className == '_Session') {
|
|
||||||
return find(config, Auth.master(config), className, {objectId: objectId})
|
return find(config, Auth.master(config), className, {objectId: objectId})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (response && response.results && response.results.length) {
|
if (response && response.results && response.results.length) {
|
||||||
@@ -108,9 +117,9 @@ function update(config, auth, className, objectId, restObject, clientSDK) {
|
|||||||
enforceRoleSecurity('update', className, auth);
|
enforceRoleSecurity('update', className, auth);
|
||||||
|
|
||||||
return Promise.resolve().then(() => {
|
return Promise.resolve().then(() => {
|
||||||
if (triggers.getTrigger(className, triggers.Types.beforeSave, config.applicationId) ||
|
const hasTriggers = checkTriggers(className, config, ['beforeSave', 'afterSave']);
|
||||||
triggers.getTrigger(className, triggers.Types.afterSave, config.applicationId) ||
|
const hasLiveQuery = checkLiveQuery(className, config);
|
||||||
(config.liveQueryController && config.liveQueryController.hasLiveQuery(className))) {
|
if (hasTriggers || hasLiveQuery) {
|
||||||
return find(config, Auth.master(config), className, {objectId: objectId});
|
return find(config, Auth.master(config), className, {objectId: objectId});
|
||||||
}
|
}
|
||||||
return Promise.resolve({});
|
return Promise.resolve({});
|
||||||
|
|||||||
Reference in New Issue
Block a user