ionic-orm-2
Version:
Data-mapper ORM for Ionic WebSQL and SQLite
62 lines • 2.67 kB
JavaScript
/**
*/
export class AliasMap {
// -------------------------------------------------------------------------
// Constructor
// -------------------------------------------------------------------------
constructor(entityMetadatas) {
this.entityMetadatas = entityMetadatas;
// -------------------------------------------------------------------------
// Properties
// -------------------------------------------------------------------------
this.aliases = [];
}
// -------------------------------------------------------------------------
// Public Methods
// -------------------------------------------------------------------------
addMainAlias(alias) {
if (this.hasMainAlias)
this.aliases.splice(this.aliases.indexOf(this.mainAlias), 1);
alias.isMain = true;
this.aliases.push(alias);
}
addAlias(alias) {
this.aliases.push(alias);
}
get hasMainAlias() {
return !!this.aliases.find(alias => alias.isMain);
}
get mainAlias() {
const alias = this.aliases.find(alias => alias.isMain);
if (!alias)
throw new Error(`Main alias is not set.`);
return alias;
}
findAliasByName(name) {
return this.aliases.find(alias => alias.name === name);
}
findAliasByParent(parentAliasName, parentPropertyName) {
return this.aliases.find(alias => {
return alias.parentAliasName === parentAliasName && alias.parentPropertyName === parentPropertyName;
});
}
getEntityMetadataByAlias(alias) {
if (alias.target) {
return this.entityMetadatas.findByTarget(alias.target);
}
else if (alias.parentAliasName && alias.parentPropertyName) {
const parentAlias = this.findAliasByName(alias.parentAliasName);
if (!parentAlias)
throw new Error(`Alias "${alias.parentAliasName}" was not found`);
const parentEntityMetadata = this.getEntityMetadataByAlias(parentAlias);
if (!parentEntityMetadata)
throw new Error("Cannot get entity metadata for the given alias " + alias.name);
if (!parentEntityMetadata.hasRelationWithPropertyName(alias.parentPropertyName))
throw new Error("Relation metadata for " + alias.parentAliasName + "#" + alias.parentPropertyName + " was not found.");
const relation = parentEntityMetadata.findRelationWithPropertyName(alias.parentPropertyName);
return relation.inverseEntityMetadata;
}
return undefined;
}
}
//# sourceMappingURL=AliasMap.js.map