typeorm
Version:
Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, MongoDB databases.
199 lines (197 loc) • 9.76 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MetadataArgsStorage = void 0;
var MetadataUtils_1 = require("../metadata-builder/MetadataUtils");
/**
* Storage all metadatas args of all available types: tables, columns, subscribers, relations, etc.
* Each metadata args represents some specifications of what it represents.
* MetadataArgs used to create a real Metadata objects.
*/
var MetadataArgsStorage = /** @class */ (function () {
function MetadataArgsStorage() {
// -------------------------------------------------------------------------
// Properties
// -------------------------------------------------------------------------
this.tables = [];
this.trees = [];
this.entityRepositories = [];
this.transactionEntityManagers = [];
this.transactionRepositories = [];
this.namingStrategies = [];
this.entitySubscribers = [];
this.indices = [];
this.uniques = [];
this.checks = [];
this.exclusions = [];
this.columns = [];
this.generations = [];
this.relations = [];
this.joinColumns = [];
this.joinTables = [];
this.entityListeners = [];
this.relationCounts = [];
this.relationIds = [];
this.embeddeds = [];
this.inheritances = [];
this.discriminatorValues = [];
}
MetadataArgsStorage.prototype.filterTables = function (target) {
return this.filterByTarget(this.tables, target);
};
MetadataArgsStorage.prototype.filterColumns = function (target) {
return this.filterByTargetAndWithoutDuplicateProperties(this.columns, target);
};
MetadataArgsStorage.prototype.findGenerated = function (target, propertyName) {
return this.generations.find(function (generated) {
return (Array.isArray(target) ? target.indexOf(generated.target) !== -1 : generated.target === target) && generated.propertyName === propertyName;
});
};
MetadataArgsStorage.prototype.findTree = function (target) {
return this.trees.find(function (tree) {
return (Array.isArray(target) ? target.indexOf(tree.target) !== -1 : tree.target === target);
});
};
MetadataArgsStorage.prototype.filterRelations = function (target) {
return this.filterByTargetAndWithoutDuplicateRelationProperties(this.relations, target);
};
MetadataArgsStorage.prototype.filterRelationIds = function (target) {
return this.filterByTargetAndWithoutDuplicateProperties(this.relationIds, target);
};
MetadataArgsStorage.prototype.filterRelationCounts = function (target) {
return this.filterByTargetAndWithoutDuplicateProperties(this.relationCounts, target);
};
MetadataArgsStorage.prototype.filterIndices = function (target) {
// todo: implement parent-entity overrides?
return this.indices.filter(function (index) {
return Array.isArray(target) ? target.indexOf(index.target) !== -1 : index.target === target;
});
};
MetadataArgsStorage.prototype.filterUniques = function (target) {
return this.uniques.filter(function (unique) {
return Array.isArray(target) ? target.indexOf(unique.target) !== -1 : unique.target === target;
});
};
MetadataArgsStorage.prototype.filterChecks = function (target) {
return this.checks.filter(function (check) {
return Array.isArray(target) ? target.indexOf(check.target) !== -1 : check.target === target;
});
};
MetadataArgsStorage.prototype.filterExclusions = function (target) {
return this.exclusions.filter(function (exclusion) {
return Array.isArray(target) ? target.indexOf(exclusion.target) !== -1 : exclusion.target === target;
});
};
MetadataArgsStorage.prototype.filterListeners = function (target) {
return this.filterByTarget(this.entityListeners, target);
};
MetadataArgsStorage.prototype.filterEmbeddeds = function (target) {
return this.filterByTargetAndWithoutDuplicateEmbeddedProperties(this.embeddeds, target);
};
MetadataArgsStorage.prototype.findJoinTable = function (target, propertyName) {
return this.joinTables.find(function (joinTable) {
return joinTable.target === target && joinTable.propertyName === propertyName;
});
};
MetadataArgsStorage.prototype.filterJoinColumns = function (target, propertyName) {
// todo: implement parent-entity overrides?
return this.joinColumns.filter(function (joinColumn) {
return joinColumn.target === target && joinColumn.propertyName === propertyName;
});
};
MetadataArgsStorage.prototype.filterSubscribers = function (target) {
return this.filterByTarget(this.entitySubscribers, target);
};
MetadataArgsStorage.prototype.filterNamingStrategies = function (target) {
return this.filterByTarget(this.namingStrategies, target);
};
MetadataArgsStorage.prototype.filterTransactionEntityManagers = function (target, propertyName) {
return this.transactionEntityManagers.filter(function (transactionEm) {
return (Array.isArray(target) ? target.indexOf(transactionEm.target) !== -1 : transactionEm.target === target) && transactionEm.methodName === propertyName;
});
};
MetadataArgsStorage.prototype.filterTransactionRepository = function (target, propertyName) {
return this.transactionRepositories.filter(function (transactionEm) {
return (Array.isArray(target) ? target.indexOf(transactionEm.target) !== -1 : transactionEm.target === target) && transactionEm.methodName === propertyName;
});
};
MetadataArgsStorage.prototype.filterSingleTableChildren = function (target) {
return this.tables.filter(function (table) {
return table.target instanceof Function
&& target instanceof Function
&& MetadataUtils_1.MetadataUtils.isInherited(table.target, target)
&& table.type === "entity-child";
});
};
MetadataArgsStorage.prototype.findInheritanceType = function (target) {
return this.inheritances.find(function (inheritance) { return inheritance.target === target; });
};
MetadataArgsStorage.prototype.findDiscriminatorValue = function (target) {
return this.discriminatorValues.find(function (discriminatorValue) { return discriminatorValue.target === target; });
};
// -------------------------------------------------------------------------
// Protected Methods
// -------------------------------------------------------------------------
/**
* Filters given array by a given target or targets.
*/
MetadataArgsStorage.prototype.filterByTarget = function (array, target) {
return array.filter(function (table) {
return Array.isArray(target) ? target.indexOf(table.target) !== -1 : table.target === target;
});
};
/**
* Filters given array by a given target or targets and prevents duplicate property names.
*/
MetadataArgsStorage.prototype.filterByTargetAndWithoutDuplicateProperties = function (array, target) {
var newArray = [];
array.forEach(function (item) {
var sameTarget = Array.isArray(target) ? target.indexOf(item.target) !== -1 : item.target === target;
if (sameTarget) {
if (!newArray.find(function (newItem) { return newItem.propertyName === item.propertyName; }))
newArray.push(item);
}
});
return newArray;
};
/**
* Filters given array by a given target or targets and prevents duplicate relation property names.
*/
MetadataArgsStorage.prototype.filterByTargetAndWithoutDuplicateRelationProperties = function (array, target) {
var newArray = [];
array.forEach(function (item) {
var sameTarget = target instanceof Array ? target.indexOf(item.target) !== -1 : item.target === target;
if (sameTarget) {
var existingIndex = newArray.findIndex(function (newItem) { return newItem.propertyName === item.propertyName; });
if (target instanceof Array && existingIndex !== -1 && target.indexOf(item.target) < target.indexOf(newArray[existingIndex].target)) {
var clone = Object.create(newArray[existingIndex]);
clone.type = item.type;
newArray[existingIndex] = clone;
}
else if (existingIndex === -1) {
newArray.push(item);
}
}
});
return newArray;
};
/**
* Filters given array by a given target or targets and prevents duplicate embedded property names.
*/
MetadataArgsStorage.prototype.filterByTargetAndWithoutDuplicateEmbeddedProperties = function (array, target) {
var newArray = [];
array.forEach(function (item) {
var sameTarget = Array.isArray(target) ? target.indexOf(item.target) !== -1 : item.target === target;
if (sameTarget) {
var isDuplicateEmbeddedProperty = newArray.find(function (newItem) {
return newItem.prefix === item.prefix && newItem.propertyName === item.propertyName;
});
if (!isDuplicateEmbeddedProperty)
newArray.push(item);
}
});
return newArray;
};
return MetadataArgsStorage;
}());
exports.MetadataArgsStorage = MetadataArgsStorage;
//# sourceMappingURL=MetadataArgsStorage.js.map