@sqb/connect
Version:
Multi-dialect database connection framework written with TypeScript
35 lines (34 loc) • 1.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isAssociationField = exports.isEmbeddedField = void 0;
exports.isClass = isClass;
exports.isEntityClass = isEntityClass;
exports.isColumnField = isColumnField;
exports.resolveEntity = resolveEntity;
exports.resolveEntityMeta = resolveEntityMeta;
const orm_const_js_1 = require("../orm.const.js");
function isClass(fn) {
return typeof fn === 'function' && /^\s*class/.test(fn.toString());
}
function isEntityClass(fn) {
return isClass(fn) && Reflect.hasMetadata(orm_const_js_1.ENTITY_METADATA_KEY, fn);
}
function isColumnField(f) {
return !!(f && f.name && f.kind === 'column');
}
const isEmbeddedField = (f) => !!(f && f.name && f.kind === 'object');
exports.isEmbeddedField = isEmbeddedField;
const isAssociationField = (f) => !!(f && f.name && f.kind === 'association');
exports.isAssociationField = isAssociationField;
async function resolveEntity(ctorThunk) {
if (typeof ctorThunk !== 'function')
return;
if (!isClass(ctorThunk))
ctorThunk = await ctorThunk();
if (isEntityClass(ctorThunk))
return ctorThunk;
}
async function resolveEntityMeta(ctorThunk) {
const ctor = await resolveEntity(ctorThunk);
return ctor && Reflect.getMetadata(orm_const_js_1.ENTITY_METADATA_KEY, ctor);
}