zumito-db
Version:
Multi-driver database abstraction layer with decorator-based models
44 lines (43 loc) • 1.4 kB
JavaScript
import { MetadataStore } from './MetadataStore.js';
export function buildModelMetadata(target) {
const fields = MetadataStore.getFieldMetadata(target);
const relations = MetadataStore.getRelationMetadata(target);
const existing = MetadataStore.getModelMetadata(target);
const metadata = {
name: target.name,
collection: existing?.collection || target.name.toLowerCase(),
fields,
relations,
target,
};
MetadataStore.setModelMetadata(target, metadata);
return metadata;
}
export function getModelMetadata(target) {
const meta = MetadataStore.getModelMetadata(target);
if (!meta)
return undefined;
// Always merge latest field/relation metadata
const fields = MetadataStore.getFieldMetadata(target);
const relations = MetadataStore.getRelationMetadata(target);
if (fields.length > 0)
meta.fields = fields;
if (relations.length > 0)
meta.relations = relations;
return meta;
}
export function resolveFieldType(designType) {
if (designType === String)
return 'string';
if (designType === Number)
return 'number';
if (designType === Boolean)
return 'boolean';
if (designType === Date)
return 'date';
if (designType === Array)
return 'array';
if (designType === Object)
return 'object';
return 'any';
}