11// triggers.js
22import Parse from 'parse/node' ;
33import AppCache from './cache' ;
4+ import { logger } from './logger' ;
45
56export const Types = {
67 beforeSave : 'beforeSave' ,
@@ -152,6 +153,36 @@ export function getResponseObject(request, resolve, reject) {
152153 }
153154} ;
154155
156+ function logTrigger ( triggerType , className , input ) {
157+ if ( triggerType . indexOf ( 'after' ) != 0 ) {
158+ return ;
159+ }
160+ logger . info ( `${ triggerType } triggered for ${ className } \nInput: ${ JSON . stringify ( input ) } ` , {
161+ className,
162+ triggerType,
163+ input
164+ } ) ;
165+ }
166+
167+ function logTriggerSuccess ( triggerType , className , input , result ) {
168+ logger . info ( `${ triggerType } triggered for ${ className } \nInput: ${ JSON . stringify ( input ) } \nResult: ${ JSON . stringify ( result ) } ` , {
169+ className,
170+ triggerType,
171+ input,
172+ result
173+ } ) ;
174+ }
175+
176+ function logTriggerError ( triggerType , className , input , error ) {
177+ logger . error ( `${ triggerType } failed for ${ className } \nInput: ${ JSON . stringify ( input ) } \Error: ${ JSON . stringify ( error ) } ` , {
178+ className,
179+ triggerType,
180+ input,
181+ error
182+ } ) ;
183+ }
184+
185+
155186// To be used as part of the promise chain when saving/deleting an object
156187// Will resolve successfully if no trigger is configured
157188// Resolves to an object, empty or containing an object key. A beforeSave
@@ -165,11 +196,19 @@ export function maybeRunTrigger(triggerType, auth, parseObject, originalParseObj
165196 var trigger = getTrigger ( parseObject . className , triggerType , config . applicationId ) ;
166197 if ( ! trigger ) return resolve ( ) ;
167198 var request = getRequestObject ( triggerType , auth , parseObject , originalParseObject , config ) ;
168- var response = getResponseObject ( request , resolve , reject ) ;
199+ var response = getResponseObject ( request , ( object ) => {
200+ logTriggerSuccess ( triggerType , parseObject . className , parseObject . toJSON ( ) , object ) ;
201+ resolve ( object ) ;
202+ } , ( error ) => {
203+ logTriggerError ( triggerType , parseObject . className , parseObject . toJSON ( ) , error ) ;
204+ reject ( error ) ;
205+ } ) ;
169206 // Force the current Parse app before the trigger
170207 Parse . applicationId = config . applicationId ;
171208 Parse . javascriptKey = config . javascriptKey || '' ;
172209 Parse . masterKey = config . masterKey ;
210+ // For the afterSuccess / afterDelete
211+ logTrigger ( triggerType , parseObject . className , parseObject . toJSON ( ) ) ;
173212 trigger ( request , response ) ;
174213 } ) ;
175214} ;
0 commit comments