blow-data
Version:
Data access layer for Blow.
37 lines (36 loc) • 994 B
JavaScript
;
require('reflect-metadata');
const manager_1 = require('./manager');
const data_ = new WeakMap();
function data(model) {
if (!data_.has(model)) {
data_.set(model, {
properties: {},
relations: {}
});
}
return data_.get(model);
}
function model(options) {
return function (target) {
data(target).options = options;
const data_ = data(target);
manager_1.manager.defineModel(target, data_.options, data_.properties, data_.relations);
return target;
};
}
exports.model = model;
function property(options) {
return function (target, propertyKey) {
const model = target.constructor;
data(model).properties[propertyKey] = options;
};
}
exports.property = property;
function relation(options) {
return function (target, propertyKey) {
const model = target.constructor;
data(model).relations[propertyKey] = options;
};
}
exports.relation = relation;