leo-connector-common
Advanced tools
Comparing version 2.1.0-RC2 to 2.1.0-RC3
@@ -112,49 +112,52 @@ "use strict"; | ||
let type = table.structure[field] && table.structure[field].type.match(/(\w+)(\((\d+)\))?/) || [undefined, undefined]; | ||
let fieldDefault = table.structure[field] && table.structure[field].default || null; | ||
let value = eventObj[field]; | ||
switch (type[1]) { | ||
case 'varchar': | ||
if (!validate.isValidString(value, type[3] && type[3] || 255)) { | ||
return handleFailedValidation(ID, obj, `Invalid String on field ${field}`); | ||
} | ||
if (value !== null) { | ||
switch (type[1]) { | ||
case 'varchar': | ||
if (!validate.isValidString(value, type[3] && type[3] || 255, fieldDefault)) { | ||
return handleFailedValidation(ID, obj, `Invalid String on field ${field}`); | ||
} | ||
// check for enum and validate if exists | ||
if (table.structure[field].sort && table.structure[field].sort.values && !validate.isValidEnum(value, table.structure[field].sort.values)) { | ||
return handleFailedValidation(ID, obj, `Invalid enum on field ${field}`); | ||
} | ||
break; | ||
// check for enum and validate if exists | ||
if (table.structure[field].sort && table.structure[field].sort.values && !validate.isValidEnum(value, table.structure[field].sort.values, fieldDefault)) { | ||
return handleFailedValidation(ID, obj, `Invalid enum on field ${field}`); | ||
} | ||
break; | ||
case 'timestamp': | ||
if (!validate.isValidTimestamp(value)) { | ||
return handleFailedValidation(ID, obj, `Invalid ${type[1]} on field ${field}`); | ||
} | ||
break; | ||
case 'timestamp': | ||
if (!validate.isValidTimestamp(value, fieldDefault)) { | ||
return handleFailedValidation(ID, obj, `Invalid ${type[1]} on field ${field}`); | ||
} | ||
break; | ||
case 'datetime': | ||
if (!validate.isValidDatetime(value)) { | ||
return handleFailedValidation(ID, obj, `Invalid ${type[1]} on field ${field}`); | ||
} | ||
break; | ||
case 'datetime': | ||
if (!validate.isValidDatetime(value, fieldDefault)) { | ||
return handleFailedValidation(ID, obj, `Invalid ${type[1]} on field ${field}`); | ||
} | ||
break; | ||
case 'integer': | ||
if (!validate.isValidInteger(value)) { | ||
return handleFailedValidation(ID, obj, `Invalid ${type[1]} on field ${field}`); | ||
} | ||
break; | ||
case 'integer': | ||
if (!validate.isValidInteger(value, fieldDefault)) { | ||
return handleFailedValidation(ID, obj, `Invalid ${type[1]} on field ${field}`); | ||
} | ||
break; | ||
case 'bigint': | ||
if (!validate.isValidBigint(value)) { | ||
return handleFailedValidation(ID, obj, `Invalid ${type[1]} on field ${field}`); | ||
} | ||
break; | ||
case 'bigint': | ||
if (!validate.isValidBigint(value, fieldDefault)) { | ||
return handleFailedValidation(ID, obj, `Invalid ${type[1]} on field ${field}`); | ||
} | ||
break; | ||
case 'float': | ||
if (!validate.isValidFloat(value)) { | ||
return handleFailedValidation(ID, obj, `Invalid ${type[1]} on field ${field}`); | ||
} | ||
break; | ||
case 'float': | ||
if (!validate.isValidFloat(value, fieldDefault)) { | ||
return handleFailedValidation(ID, obj, `Invalid ${type[1]} on field ${field}`); | ||
} | ||
break; | ||
case undefined: | ||
return handleFailedValidation(ID, obj, `Invalid ${type[1]} in the table config for table: ${table.identifier} field ${field}`); | ||
break; | ||
case undefined: | ||
return handleFailedValidation(ID, obj, `Invalid ${type[1]} in the table config for table: ${table.identifier} field ${field}`); | ||
break; | ||
} | ||
} | ||
@@ -161,0 +164,0 @@ }); |
@@ -727,3 +727,3 @@ 'use strict'; | ||
processResults(err, rows, done) { | ||
if (rows && Object.keys(rows[0]).length > 1) { | ||
if (rows && rows.length >= 1 && Object.keys(rows[0]).length > 1) { | ||
return done(err, rows); | ||
@@ -730,0 +730,0 @@ } |
{ | ||
"name": "leo-connector-common", | ||
"version": "2.1.0-RC2", | ||
"version": "2.1.0-RC3", | ||
"description": "Common package for all Leo Platform database connectors", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -11,6 +11,9 @@ 'use strict'; | ||
* @param maxLength {int} | ||
* @param fieldDefault | ||
* @returns {boolean} | ||
*/ | ||
isValidString: function (value, maxLength) { | ||
if (typeof value !== 'string') { | ||
isValidString: function (value, maxLength, fieldDefault) { | ||
if (value === fieldDefault) { | ||
return true; | ||
} else if (typeof value !== 'string') { | ||
return false; | ||
@@ -28,6 +31,7 @@ } else if (value.length > maxLength) { | ||
* @param values {array} | ||
* @param fieldDefault | ||
* @returns {boolean} | ||
*/ | ||
isValidEnum: function (value, values) { | ||
return values.indexOf(value) !== -1; | ||
isValidEnum: function (value, values, fieldDefault) { | ||
return value === fieldDefault || values.indexOf(value) !== -1; | ||
}, | ||
@@ -38,6 +42,7 @@ | ||
* @param value | ||
* @param fieldDefault | ||
* @returns {boolean} | ||
*/ | ||
isValidTimestamp: function (value) { | ||
return moment(value).format() !== 'Invalid date'; | ||
isValidTimestamp: function (value, fieldDefault) { | ||
return value === fieldDefault || moment(value).isValid(); | ||
}, | ||
@@ -48,7 +53,8 @@ | ||
* @param value | ||
* @param fieldDefault | ||
* @returns {boolean} | ||
*/ | ||
isValidDatetime: function (value) { | ||
isValidDatetime: function (value, fieldDefault) { | ||
// check if it's a valid string. Most datetimes would use 35 chars max if the month is a full name. Give a little extra buffer. | ||
return this.isValidString(value, 40) && moment(value).format() !== 'Invalid date'; | ||
return value === fieldDefault || this.isValidString(value, 40) && moment(value).isValid(); | ||
}, | ||
@@ -59,6 +65,9 @@ | ||
* @param value | ||
* @param fieldDefault | ||
* @returns {boolean} | ||
*/ | ||
isValidInteger: function (value) { | ||
if (typeof value !== 'number') { | ||
isValidInteger: function (value, fieldDefault) { | ||
if (value === fieldDefault) { | ||
return true; | ||
} else if (typeof value !== 'number') { | ||
return false; | ||
@@ -78,6 +87,9 @@ } else if (value > 2147483647) { // above this, we're going into bigint territory | ||
* @param maxSize {default: 9223372036854775807, which is the max bigint size for databases} | ||
* @param fieldDefault | ||
* @returns {boolean} | ||
*/ | ||
isValidBigint: function (value, maxSize = '9223372036854775807') { | ||
if (typeof value !== 'number' && !value.match(/^\-?\d{0,19}$/)) { | ||
isValidBigint: function (value, maxSize = '9223372036854775807', fieldDefault) { | ||
if (value === fieldDefault) { | ||
return true; | ||
} else if (typeof value !== 'number' && !value.match(/^\-?\d{0,19}$/)) { | ||
logger.error('Invalid bigint', value); | ||
@@ -112,7 +124,8 @@ return false; | ||
* @param value | ||
* @param fieldDefault | ||
* @returns {boolean} | ||
*/ | ||
isValidFloat: function (value) { | ||
return parseFloat(value) == value; | ||
isValidFloat: function (value, fieldDefault) { | ||
return parseFloat(value) == value || value === fieldDefault; | ||
}, | ||
}; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
108595
3883