Await for validation callbacks too; modify data in update mutator validation callback

This commit is contained in:
SachaG 2018-08-21 19:22:38 +09:00
parent 8705ff6b7b
commit 485f7bad37

View file

@ -58,10 +58,10 @@ export const createMutator = async ({ collection, document, data, currentUser, v
const validationErrors = validateDocument(newDocument, collection, context);
// run validation callbacks
newDocument = runCallbacks({ name: `${typeName.toLowerCase()}.create.validate`, iterator: newDocument, properties: { currentUser, validationErrors }});
newDocument = runCallbacks({ name: `*.create.validate`, iterator: newDocument, properties: { currentUser, validationErrors }});
newDocument = await runCallbacks({ name: `${typeName.toLowerCase()}.create.validate`, iterator: newDocument, properties: { currentUser, validationErrors }});
newDocument = await runCallbacks({ name: `*.create.validate`, iterator: newDocument, properties: { currentUser, validationErrors }});
// OpenCRUD backwards compatibility
newDocument = runCallbacks(`${collectionName.toLowerCase()}.new.validate`, newDocument, currentUser, validationErrors);
newDocument = await runCallbacks(`${collectionName.toLowerCase()}.new.validate`, newDocument, currentUser, validationErrors);
if (validationErrors.length) {
const NewDocumentValidationError = createError('app.validation_error', {message: 'app.new_document_validation_error'});
@ -176,10 +176,10 @@ export const updateMutator = async ({ collection, documentId, selector, data, se
let validationErrors;
validationErrors = validateData(data, document, collection, context);
runCallbacks({ name: `${typeName.toLowerCase()}.update.validate`, iterator: data, properties: { document, currentUser, validationErrors }});
runCallbacks({ name: `*.update.validate`, iterator: data, properties: { document, currentUser, validationErrors }});
data = await runCallbacks({ name: `${typeName.toLowerCase()}.update.validate`, iterator: data, properties: { document, currentUser, validationErrors }});
data = await runCallbacks({ name: `*.update.validate`, iterator: data, properties: { document, currentUser, validationErrors }});
// OpenCRUD backwards compatibility
runCallbacks(`${collectionName.toLowerCase()}.edit.validate`, dataToModifier(data), document, currentUser, validationErrors);
data = modifierToData(await runCallbacks(`${collectionName.toLowerCase()}.edit.validate`, dataToModifier(data), document, currentUser, validationErrors));
if (validationErrors.length) {
// eslint-disable-next-line no-console
@ -292,10 +292,10 @@ export const deleteMutator = async ({ collection, documentId, selector, currentU
// if document is not trusted, run validation callbacks
if (validate) {
document = runCallbacks({ name: `${typeName.toLowerCase()}.delete.validate`, iterator: document, properties: { currentUser }});
document = runCallbacks({ name: `*.delete.validate`, iterator: document, properties: { currentUser }});
document = await runCallbacks({ name: `${typeName.toLowerCase()}.delete.validate`, iterator: document, properties: { currentUser }});
document = await runCallbacks({ name: `*.delete.validate`, iterator: document, properties: { currentUser }});
// OpenCRUD backwards compatibility
document = runCallbacks(`${collectionName.toLowerCase()}.remove.validate`, document, currentUser);
document = await runCallbacks(`${collectionName.toLowerCase()}.remove.validate`, document, currentUser);
}
// run onRemove step