forest-express-sequelize
Version:
Official Express/Sequelize Liana for Forest
46 lines (45 loc) • 1.75 kB
JavaScript
function ApimapFieldTypeDetector(column, options) {
const DataTypes = options.Sequelize;
this.perform = function () {
if (column.type instanceof DataTypes.STRING || column.type instanceof DataTypes.TEXT || DataTypes.CITEXT && column.type instanceof DataTypes.CITEXT || column.type === 'citext') {
// TODO: Remove 'citext' once Sequelize 4 has been deprecated.
return 'String';
}
if (column.type instanceof DataTypes.ENUM) {
return 'Enum';
}
if (column.type instanceof DataTypes.BOOLEAN) {
return 'Boolean';
}
if (column.type instanceof DataTypes.DATEONLY) {
return 'Dateonly';
}
if (column.type instanceof DataTypes.DATE) {
return 'Date';
}
if (column.type instanceof DataTypes.INTEGER || column.type instanceof DataTypes.FLOAT || column.type instanceof DataTypes['DOUBLE PRECISION'] || column.type instanceof DataTypes.BIGINT || column.type instanceof DataTypes.DECIMAL) {
return 'Number';
}
if (column.type instanceof DataTypes.JSONB || column.type instanceof DataTypes.JSON) {
return 'Json';
}
if (column.type instanceof DataTypes.TIME) {
return 'Time';
}
if (column.type instanceof DataTypes.GEOMETRY && column.type.type === 'POINT') {
return 'Point';
}
if (column.type instanceof DataTypes.UUID || column.type instanceof DataTypes.UUIDV1 || column.type instanceof DataTypes.UUIDV4) {
return 'Uuid';
}
// NOTICE: Detect Array types (Array(String), Array(Integer), ...)
if (column.type.type) {
return [new ApimapFieldTypeDetector({
type: column.type.type
}, options).perform()];
}
return null;
};
}
module.exports = ApimapFieldTypeDetector;
;