UNPKG

@sqb/connect

Version:

Multi-dialect database connection framework written with TypeScript

50 lines (49 loc) 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.serializeColumn = serializeColumn; const builder_1 = require("@sqb/builder"); const orm_helper_js_1 = require("./orm.helper.js"); function serializeColumn(col, v) { if ((0, orm_helper_js_1.isColumnField)(col)) { if (col.isArray) { if (Array.isArray(v)) return v.map(x => serializeDataValue(col.dataType || builder_1.DataType.VARCHAR, x)); return [serializeDataValue(col.dataType || builder_1.DataType.VARCHAR, v)]; } return serializeDataValue(col.dataType || builder_1.DataType.VARCHAR, v); } if (typeof v === 'object' && typeof v.toJSON === 'function') return v.toJSON(); return v; } const padZero = (n) => (n < 9 ? '0' : '') + n; function serializeDataValue(dataType, v) { if (v == null) return; if (v instanceof Date && (dataType === builder_1.DataType.DATE || dataType === builder_1.DataType.TIMESTAMP)) { return (v.getFullYear() + '-' + padZero(v.getMonth() + 1) + '-' + padZero(v.getDate()) + (dataType === builder_1.DataType.TIMESTAMP ? 'T' + padZero(v.getHours()) + ':' + padZero(v.getMinutes()) + ':' + padZero(v.getSeconds()) : '')); } if (v instanceof Buffer) return v.toString('base64'); if (typeof v === 'number' && (dataType === builder_1.DataType.SMALLINT || dataType === builder_1.DataType.INTEGER)) return Math.trunc(v); if (typeof v === 'bigint') return v.toString(); if (v && typeof v === 'object' && typeof v.toJSON === 'function') return v.toJSON(); return v; }