UNPKG

mvom

Version:

Multivalue Object Mapper

54 lines (47 loc) 1.61 kB
"use strict"; 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;