@sqb/connect
Version:
Multi-dialect database connection framework written with TypeScript
25 lines (24 loc) • 928 B
JavaScript
import { ENTITY_METADATA_KEY } from '../orm.const.js';
export function isClass(fn) {
return typeof fn === 'function' && /^\s*class/.test(fn.toString());
}
export function isEntityClass(fn) {
return isClass(fn) && Reflect.hasMetadata(ENTITY_METADATA_KEY, fn);
}
export function isColumnField(f) {
return !!(f && f.name && f.kind === 'column');
}
export const isEmbeddedField = (f) => !!(f && f.name && f.kind === 'object');
export const isAssociationField = (f) => !!(f && f.name && f.kind === 'association');
export async function resolveEntity(ctorThunk) {
if (typeof ctorThunk !== 'function')
return;
if (!isClass(ctorThunk))
ctorThunk = await ctorThunk();
if (isEntityClass(ctorThunk))
return ctorThunk;
}
export async function resolveEntityMeta(ctorThunk) {
const ctor = await resolveEntity(ctorThunk);
return ctor && Reflect.getMetadata(ENTITY_METADATA_KEY, ctor);
}