@sap/xsodata
Version:
Expose data from a HANA database as OData V2 service with help of .xsodata files.
213 lines (184 loc) • 4.97 kB
JavaScript
;
const exitProcessor = require('./exitProcessor');
function eventActionHandlerWithEndEvent(
action,
event,
endEvent,
context,
asyncDone
) {
context.logger.info(event, `event start ${action}`);
const eventFunction = exitProcessor.eventHandler(action, event);
eventFunction(context, function (err, context) {
context.logger.info(`${endEvent} event end`, action);
if (err) {
context.logger.info(`${endEvent} event end`, 'error occured');
}
return asyncDone(err, context);
});
}
function eventActionHandler(action, event, context, asyncDone) {
eventActionHandlerWithEndEvent(action, event, event, context, asyncDone);
}
function eventDeleteBefore(context, asyncDone) {
eventActionHandler('before', 'delete', context, asyncDone);
}
function eventDeleteAfter(context, asyncDone) {
eventActionHandler('after', 'delete', context, asyncDone);
}
function eventDeletePrecommit(context, asyncDone) {
eventActionHandler('precommit', 'delete', context, asyncDone);
}
function eventDeletePostCommit(context, asyncDone) {
eventActionHandler('postcommit', 'delete', context, asyncDone);
}
exports.eventDelete = {
eventBefore: eventDeleteBefore,
eventAfter: eventDeleteAfter,
eventPrecommit: eventDeletePrecommit,
eventPostCommit: eventDeletePostCommit,
};
function eventPostBefore(context, asyncDone) {
eventActionHandler('before', 'create', context, asyncDone);
}
function eventPostAfter(context, asyncDone) {
eventActionHandler('after', 'create', context, asyncDone);
}
function eventPostPrecommit(context, asyncDone) {
eventActionHandler('precommit', 'create', context, asyncDone);
}
function eventPostPostCommit(context, asyncDone) {
eventActionHandler('postcommit', 'create', context, asyncDone);
}
exports.eventPost = {
eventBefore: eventPostBefore,
eventAfter: eventPostAfter,
eventPrecommit: eventPostPrecommit,
eventPostCommit: eventPostPostCommit,
};
function eventDeleteLinksBefore(context, asyncDone) {
eventActionHandlerWithEndEvent(
'before',
'delete',
'modify',
context,
asyncDone
);
}
function eventDeleteLinksAfter(context, asyncDone) {
eventActionHandlerWithEndEvent(
'after',
'delete',
'modify',
context,
asyncDone
);
}
function eventDeleteLinksPrecommit(context, asyncDone) {
eventActionHandlerWithEndEvent(
'precommit',
'delete',
'modify',
context,
asyncDone
);
}
function eventDeleteLinksPostCommit(context, asyncDone) {
eventActionHandlerWithEndEvent(
'postcommit',
'delete',
'modify',
context,
asyncDone
);
}
exports.eventDeleteLinks = {
eventBefore: eventDeleteLinksBefore,
eventAfter: eventDeleteLinksAfter,
eventPrecommit: eventDeleteLinksPrecommit,
eventPostCommit: eventDeleteLinksPostCommit,
};
function eventPutBefore(context, asyncDone) {
eventActionHandlerWithEndEvent(
'before',
'update',
'modify',
context,
asyncDone
);
}
function eventPutAfter(context, asyncDone) {
eventActionHandlerWithEndEvent(
'after',
'update',
'modify',
context,
asyncDone
);
}
function eventPutPrecommit(context, asyncDone) {
eventActionHandlerWithEndEvent(
'precommit',
'update',
'modify',
context,
asyncDone
);
}
function eventPutPostCommit(context, asyncDone) {
eventActionHandlerWithEndEvent(
'postcommit',
'update',
'modify',
context,
asyncDone
);
}
exports.eventPut = {
eventBefore: eventPutBefore,
eventAfter: eventPutAfter,
eventPrecommit: eventPutPrecommit,
eventPostCommit: eventPutPostCommit,
};
function eventPutPostLinksBefore(context, asyncDone) {
eventActionHandlerWithEndEvent(
'before',
context.oData.links.sOperation,
'modify',
context,
asyncDone
);
}
function eventPutPostLinksAfter(context, asyncDone) {
eventActionHandlerWithEndEvent(
'after',
context.oData.links.sOperation,
'modify',
context,
asyncDone
);
}
function eventPutPostLinksPrecommit(context, asyncDone) {
eventActionHandlerWithEndEvent(
'precommit',
context.oData.links.sOperation,
'modify',
context,
asyncDone
);
}
function eventPutPostLinksPostCommit(context, asyncDone) {
eventActionHandlerWithEndEvent(
'postcommit',
context.oData.links.sOperation,
'modify',
context,
asyncDone
);
}
exports.eventPutPostLinks = {
eventBefore: eventPutPostLinksBefore,
eventAfter: eventPutPostLinksAfter,
eventPrecommit: eventPutPostLinksPrecommit,
eventPostCommit: eventPutPostLinksPostCommit,
};