Files
Windshaft-cartodb/lib/cartodb/utils/date-wrapper.js
2018-06-05 08:44:20 +02:00

39 lines
933 B
JavaScript

const DATE_OIDS = Object.freeze({
1082: 'DATE',
1083: 'TIME',
1114: 'TIMESTAMP',
1184: 'TIMESTAMPTZ',
1266: 'TIMETZ'
});
/**
* Wrap a query transforming all date columns into a unix epoch
* @param {*} originalQuery
* @param {*} fields
*/
function wrapDates(originalQuery, fields) {
return `
SELECT
${fields.map(field => _isDateType(field) ? _castColumnToEpoch(field.name) : `${field.name}`).join(',')}
FROM
(${originalQuery}) _cdb_epoch_transformation `;
}
/**
* @param {object} field
*/
function _isDateType(field) {
return DATE_OIDS.hasOwnProperty(field.dataTypeID);
}
/**
* Return a sql query to transform a date column into a unix epoch
* @param {string} column - The name of the date column
*/
function _castColumnToEpoch(columnName) {
return `date_part('epoch', ${columnName}) as "${columnName}"`;
}
module.exports = {
wrapDates
};