UNPKG

apeman-app-rest

Version:
67 lines (59 loc) 1.63 kB
/** * @function validateDataVr * @returns {?Object} - Error if failed */ 'use strict' const apemanerror = require('apemanerror') const ApErrorCodes = apemanerror.ApErrorCodes /** @lends validateDataVr */ function validateDataVr (data, vr) { if (!data) { return null } let attributes = data.attributes if (!attributes.hasOwnProperty('vr')) { return null } if (isNaN(Number(attributes.vr))) { return validateDataVr.versionError(attributes.vr, '/data/attributes/vr', attributes.vr) } let conflict = Number(attributes.vr) < Number(vr) if (conflict) { return validateDataVr.conflictError('/data/attributes/vr', attributes.vr, vr) } else { return null } } Object.assign(validateDataVr, { bulk (data, vrs) { let errors = data.map((data, i) => validateDataVr(data, vrs[ i ]) ).map((error, i) => error ? Object.assign(error, { source: { pointer: `/data/${i}/attributes/vr` } }) : null ).filter((error) => !!error) return errors.length > 0 ? errors : null }, versionError (pointer, given) { let code = ApErrorCodes.RESOURCE_VR_TYPE_ERROR return Object.assign( apemanerror.newError(code, pointer, { trigger: 'RestHandler', scope: { given, cause: 'isNaN' } }), { status: '409' } ) }, conflictError (pointer, given, should) { let code = ApErrorCodes.RESOURCE_DATA_CONFLICT_ERROR return Object.assign( apemanerror.newError(code, pointer, { trigger: 'RestHandler', scope: { given, should } }), { status: '409' } ) } }) module.exports = validateDataVr