@bazilio-san/af-stream
Version:
Data stream from database table
85 lines (77 loc) • 1.7 kB
JavaScript
const moment = require('moment-timezone');
import * as sql from 'mssql';
const isDateType = (sqlType) => {
switch (sqlType) {
case sql.DateTime:
case sql.DateTime2:
case sql.Time:
case sql.Date:
case sql.SmallDateTime:
return true;
}
return false;
};
const isIntType = (sqlType) => {
switch (sqlType) {
case sql.TinyInt:
case sql.SmallInt:
case sql.Int:
case sql.BigInt:
return true;
}
return false;
};
const isFloatType = (sqlType) => {
switch (sqlType) {
case sql.Decimal:
case sql.Float:
case sql.Money:
case sql.Numeric:
case sql.SmallMoney:
case sql.Real:
return true;
}
return false;
};
const convertFunctionForIntLong = (msSqlType) => {
const _intConv = (v) => {
if (v == null) {
return null;
}
const val = Number(v);
return Number.isNaN(val) ? null : val;
};
if (isIntType(msSqlType)) {
return _intConv;
}
if (isFloatType(msSqlType)) {
return (v) => {
if (v == null) {
return null;
}
const val = Number(v);
return Number.isNaN(val) ? null : Math.round(val);
};
}
if (isDateType(msSqlType)) {
return (v) => {
if (v == null) {
return null;
}
if (v instanceof Date) {
return +v;
}
if (typeof v === 'string') {
const val = moment(v);
return val.isValid() ? val.valueOf() : null;
}
const val = Number(v);
return Number.isNaN(val) ? null : Math.round(val);
};
}
return _intConv;
};
const getConvertFunctionDbValueToSiddhi = () => {
return (v) => (v == null ? null : v);
};
module.exports = getConvertFunctionDbValueToSiddhi;