miter
Version:
A typescript web framework based on ExpressJs based loosely on SailsJs
40 lines • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const prop_1 = require("../../metadata/orm/prop");
const model_1 = require("../../metadata/orm/model");
const sequelize = require("sequelize");
require("reflect-metadata");
function Prop(columnName) {
let meta;
if (typeof columnName === 'string')
meta = { columnName: columnName };
else
meta = columnName || {};
return function (model, propertyName) {
let props = Reflect.getOwnMetadata(model_1.ModelPropertiesSym, model) || [];
props.push(propertyName);
Reflect.defineMetadata(model_1.ModelPropertiesSym, props, model);
if (!meta.type) {
let reflectType = Reflect.getMetadata('design:type', model, propertyName);
let sequelizeType = null;
if (reflectType === String)
sequelizeType = sequelize.STRING;
else if (reflectType === Number) {
if (meta.primaryKey || meta.autoIncrement)
sequelizeType = sequelize.INTEGER;
else
sequelizeType = sequelize.FLOAT;
}
else if (reflectType === Date)
sequelizeType = sequelize.DATE;
else if (reflectType === Boolean)
sequelizeType = sequelize.BOOLEAN;
else
throw new Error(`Could not infer column type for model property: ${propertyName}`);
meta.type = sequelizeType;
}
Reflect.defineMetadata(prop_1.PropMetadataSym, meta, model, propertyName);
};
}
exports.Prop = Prop;
//# sourceMappingURL=prop.decorator.js.map