UNPKG

phibernate

Version:

Client side ORM and Delta Tracker for Relational data

91 lines 3.78 kB
"use strict"; const EntityUtils_1 = require("../shared/EntityUtils"); const PersistenceConfig_1 = require("./PersistenceConfig"); const EntityManager_1 = require("../core/repository/EntityManager"); const QuerySubject_1 = require("../core/query/QuerySubject"); const UpdateCache_1 = require("../core/repository/UpdateCache"); /** * Created by Papa on 6/24/2016. */ class PH { static startPersistenceContext() { UpdateCache_1.UpdateCache.initCache(); } static endPeristenceContext() { UpdateCache_1.UpdateCache.dropCache(); } static getQEntityFromEntityClass(entityClass) { let entityClassName = EntityUtils_1.EntityUtils.getClassName(entityClass); let qEntity = PH.qEntityMap[entityClassName]; return qEntity; } static addQEntity(entityConstructor, qEntity) { let entityName = qEntity.__entityName__; let fields = qEntity.__entityFieldMap__; let relations = qEntity.__entityRelationMap__; PH.qEntityMap[entityName] = qEntity; let entityRelationPropertyMap = PH.entitiesRelationPropertyMap[entityName]; if (entityRelationPropertyMap) { entityRelationPropertyMap = {}; PH.entitiesRelationPropertyMap[entityName] = entityRelationPropertyMap; } let entityMetadata = entityConstructor; for (let relationPropertyName in relations) { let relation = relations[relationPropertyName]; let propertyName = relation.propertyName; let relationClassName = EntityUtils_1.EntityUtils.getClassName(relation.relationEntityConstructor); let relationRecord = { entityName: relationClassName, propertyName: propertyName, relationType: relation.relationType }; entityRelationPropertyMap[propertyName] = relationRecord; } let entityPropertyTypeMap = PH.entitiesPropertyTypeMap[entityName]; if (entityPropertyTypeMap) { entityPropertyTypeMap = {}; PH.entitiesPropertyTypeMap[entityName] = entityPropertyTypeMap; } for (let fieldPropertyName in fields) { let field = fields[fieldPropertyName]; entityPropertyTypeMap[field.fieldName] = true; } } static init(phConfig) { let persistenceConfig = new PersistenceConfig_1.PersistenceConfig(phConfig); PH.entityManager = new EntityManager_1.EntityManager(persistenceConfig); } static getFindSubject(entityClass) { let subscription; let querySubject = new QuerySubject_1.QuerySubject(() => { if (querySubject.resultsSubject.observers.length < 1) { subscription.unsubscribe(); } }); subscription = querySubject.querySubject.subscribe((// iEntityQuery // ) => { PH.entityManager.search(entityClass, iEntityQuery, querySubject.resultsSubject); }); return querySubject; } static getFindOneSubject(entityClass) { let subscription; let querySubject = new QuerySubject_1.QueryOneSubject(() => { if (querySubject.resultsSubject.observers.length < 1) { subscription.unsubscribe(); } }); subscription = querySubject.querySubject.subscribe((// iEntityQuery // ) => { PH.entityManager.searchOne(entityClass, iEntityQuery, querySubject.resultsSubject); }); return querySubject; } } exports.PH = PH; PH.qEntityMap = {}; PH.entitiesRelationPropertyMap = {}; PH.entitiesPropertyTypeMap = {}; //# sourceMappingURL=PH.js.map