zumito-db
Version:
Multi-driver database abstraction layer with decorator-based models
29 lines (28 loc) • 1.15 kB
JavaScript
import 'reflect-metadata';
const MODEL_METADATA_KEY = Symbol('zumito-db:model');
const FIELD_METADATA_KEY = Symbol('zumito-db:fields');
const RELATION_METADATA_KEY = Symbol('zumito-db:relations');
export class MetadataStore {
static getModelMetadata(target) {
return Reflect.getOwnMetadata(MODEL_METADATA_KEY, target);
}
static setModelMetadata(target, metadata) {
Reflect.defineMetadata(MODEL_METADATA_KEY, metadata, target);
}
static getFieldMetadata(target) {
return Reflect.getOwnMetadata(FIELD_METADATA_KEY, target) || [];
}
static addFieldMetadata(target, field) {
const fields = MetadataStore.getFieldMetadata(target);
fields.push(field);
Reflect.defineMetadata(FIELD_METADATA_KEY, fields, target);
}
static getRelationMetadata(target) {
return Reflect.getOwnMetadata(RELATION_METADATA_KEY, target) || [];
}
static addRelationMetadata(target, relation) {
const relations = MetadataStore.getRelationMetadata(target);
relations.push(relation);
Reflect.defineMetadata(RELATION_METADATA_KEY, relations, target);
}
}