UNPKG

@berish/orm

Version:

ORM

80 lines 3.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createEntity = exports.getClassNameByClassOrClassName = exports.getClassByClassOrClassName = exports.getClassByClassName = exports.getClassNameByClass = exports.register = void 0; const linq_1 = require("@berish/linq"); const typeof_1 = require("@berish/typeof"); const class_1 = require("@berish/class"); const entity_1 = require("./entity"); const methods_1 = require("./entity/methods"); const registrator = new class_1.Registrator(); /** * Регистрация класса сущности по названию сущности */ function register(className, cls) { if (registrator.isRegisteredName(className)) throw new Error('Entity already registered with same className'); if (registrator.isRegisteredClass(cls)) throw new Error('Entity already registered with same class'); registrator.register(className, cls); } exports.register = register; /** * Получение название сущности по классу сущности */ function getClassNameByClass(cls) { return registrator.getNamesByClass(cls)[0]; } exports.getClassNameByClass = getClassNameByClass; /** * Получение класса сущности по названию сущности */ function getClassByClassName(className) { return registrator.getClassesByClassName(className)[0] || entity_1.Entity; } exports.getClassByClassName = getClassByClassName; /** * Получение класса сущности по названию сущности или по зарегистрированному классу сущности. * Если сущность не зарегистрирована, возвращает базовый класс сущности */ function getClassByClassOrClassName(cls) { const className = getClassNameByClassOrClassName(cls); if (!className || !registrator.isRegisteredName(className)) return entity_1.Entity; return getClassByClassName(className); } exports.getClassByClassOrClassName = getClassByClassOrClassName; /** * Получение названия сущности по названию сущности или по зарегистрированному классу сущности. * Если сущность не зарегистрирована, возвращает null */ function getClassNameByClassOrClassName(cls) { if (typeof_1.default(cls) !== 'string' && typeof_1.default(cls) !== 'function') return null; if (typeof_1.default(cls) === 'string') return cls; return getClassNameByClass(cls); } exports.getClassNameByClassOrClassName = getClassNameByClassOrClassName; function createEntity(className, attributes) { const cls = getClassByClassName(className); const arrayAttributes = Array.isArray(attributes) ? attributes : [attributes]; const entities = linq_1.default.from(arrayAttributes).select((m) => { const entity = new cls(); methods_1.setClassName(entity, className); if (cls.fields) { for (const key of cls.fields) { entity.set(key, void 0); } } if (m) { const entries = Object.entries(m); for (const [key, value] of entries) { entity.set(key, value); } } return entity; }); return Array.isArray(attributes) ? entities : entities.first(); } exports.createEntity = createEntity; //# sourceMappingURL=registrator.js.map