UNPKG

zumito-db

Version:

Multi-driver database abstraction layer with decorator-based models

29 lines (28 loc) 1.15 kB
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); } }