miter
Version:
A typescript web framework based on ExpressJs based loosely on SailsJs
40 lines • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const prop_1 = require("../../metadata/orm/prop");
const model_1 = require("../../metadata/orm/model");
const types_1 = require("../../metadata/orm/types");
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 columnType = null;
if (reflectType === String)
columnType = types_1.Types.string;
else if (reflectType === Number) {
if (meta.primaryKey || meta.autoIncrement)
columnType = types_1.Types.integer;
else
columnType = types_1.Types.float;
}
else if (reflectType === Date)
columnType = types_1.Types.date;
else if (reflectType === Boolean)
columnType = types_1.Types.boolean;
else
throw new Error(`Could not infer column type for model property: ${propertyName}`);
meta.type = columnType;
}
Reflect.defineMetadata(prop_1.PropMetadataSym, meta, model, propertyName);
};
}
exports.Prop = Prop;
//# sourceMappingURL=prop.decorator.js.map