mvom
Version:
Multivalue Object Mapper
54 lines (47 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _errors = require("../errors");
/**
* Number Data Transformer
* @throws {@link InvalidParameterError} An invalid parameter was passed to the function
*/
class NumberDataTransformer {
/** Number of implied decimals in database storage */
constructor(dbDecimals = 0) {
if (!Number.isInteger(dbDecimals) || dbDecimals < 0) {
throw new _errors.InvalidParameterError({
parameterName: 'definition.dbDecimals'
});
}
this.dbDecimals = dbDecimals;
}
/**
* Transform mv style internally formatted numeric data (nnnnn) to externally formatted numeric data (nnn.nn)
* @throws {@link TransformDataError} Database value could not be transformed to external format
*/
transformFromDb(value) {
if (value == null) {
return null;
}
const castValue = Number(value);
if (!Number.isFinite(castValue)) {
throw new _errors.TransformDataError({
transformClass: this.constructor.name,
transformValue: value
});
}
return Number((Math.round(castValue) / 10 ** this.dbDecimals).toFixed(this.dbDecimals));
}
/** Transform externally formatted numeric data (nnn.nn) to mv style internally formatted numeric data */
transformToDb(value) {
return value == null ? null : (Number(value) * 10 ** this.dbDecimals).toFixed(0);
}
/** Transform query constants to u2 formatted string number */
transformToQuery(value) {
return String(value);
}
}
var _default = exports.default = NumberDataTransformer;