ffc-pay-etl-framework
Version:
A framework for creating ETL pipelines in node
36 lines (33 loc) • 895 B
JavaScript
// @ts-nocheck
const { Transform } = require('node:stream')
/**
*
* @param {Object} options
* @param {String} options.message
* @param {Array} options.columns
* @returns Transform
*/
function requiredValidator (options) {
return new Transform({
readableObjectMode: true,
writableObjectMode: true,
decodeStrings: false,
construct (callback) {
this.message = options.message ? options.message : 'Required value is null'
this.requiredColumns = options.columns
callback()
},
transform (chunk, _, callback) {
this.requiredColumns.forEach(column => {
const requiredVal = chunk[column]
if (requiredVal === undefined || requiredVal === '') {
chunk.errors.push(`${this.message} in column ${column}`)
}
})
callback(null, chunk)
}
})
}
module.exports = {
RequiredValidator: requiredValidator
}