UNPKG

45.3 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/metadata/EntityMetadata.ts"],"names":[],"mappings":"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","file":"EntityMetadata.js","sourcesContent":["import {QueryRunner, SelectQueryBuilder} from \"..\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {Connection} from \"../connection/Connection\";\nimport {PostgresConnectionOptions} from \"../driver/postgres/PostgresConnectionOptions\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {SqlServerConnectionOptions} from \"../driver/sqlserver/SqlServerConnectionOptions\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {CannotCreateEntityIdMapError} from \"../error/CannotCreateEntityIdMapError\";\nimport {OrderByCondition} from \"../find-options/OrderByCondition\";\nimport {TableMetadataArgs} from \"../metadata-args/TableMetadataArgs\";\nimport {TreeMetadataArgs} from \"../metadata-args/TreeMetadataArgs\";\nimport {OrmUtils} from \"../util/OrmUtils\";\nimport {shorten} from \"../util/StringUtils\";\nimport {CheckMetadata} from \"./CheckMetadata\";\nimport {ColumnMetadata} from \"./ColumnMetadata\";\nimport {EmbeddedMetadata} from \"./EmbeddedMetadata\";\nimport {EntityListenerMetadata} from \"./EntityListenerMetadata\";\nimport {ExclusionMetadata} from \"./ExclusionMetadata\";\nimport {ForeignKeyMetadata} from \"./ForeignKeyMetadata\";\nimport {IndexMetadata} from \"./IndexMetadata\";\nimport {RelationCountMetadata} from \"./RelationCountMetadata\";\nimport {RelationIdMetadata} from \"./RelationIdMetadata\";\nimport {RelationMetadata} from \"./RelationMetadata\";\nimport {TableType} from \"./types/TableTypes\";\nimport {TreeType} from \"./types/TreeTypes\";\nimport {UniqueMetadata} from \"./UniqueMetadata\";\n\n/**\n * Contains all entity metadata.\n */\nexport class EntityMetadata {\n\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection where this entity metadata is created.\n */\n connection: Connection;\n\n /**\n * Metadata arguments used to build this entity metadata.\n */\n tableMetadataArgs: TableMetadataArgs;\n\n /**\n * If entity's table is a closure-typed table, then this entity will have a closure junction table metadata.\n */\n closureJunctionTable: EntityMetadata;\n\n /**\n * If this is entity metadata for a junction closure table then its owner closure table metadata will be set here.\n */\n parentClosureEntityMetadata: EntityMetadata;\n\n /**\n * Parent's entity metadata. Used in inheritance patterns.\n */\n parentEntityMetadata: EntityMetadata;\n\n /**\n * Children entity metadatas. Used in inheritance patterns.\n */\n childEntityMetadatas: EntityMetadata[] = [];\n\n /**\n * All \"inheritance tree\" from a target entity.\n * For example for target Post < ContentModel < Unit it will be an array of [Post, ContentModel, Unit].\n * It also contains child entities for single table inheritance.\n */\n inheritanceTree: Function[] = [];\n\n /**\n * Table type. Tables can be abstract, closure, junction, embedded, etc.\n */\n tableType: TableType = \"regular\";\n\n /**\n * Target class to which this entity metadata is bind.\n * Note, that when using table inheritance patterns target can be different rather then table's target.\n * For virtual tables which lack of real entity (like junction tables) target is equal to their table name.\n */\n target: Function|string;\n\n /**\n * Gets the name of the target.\n */\n targetName: string;\n\n /**\n * Entity's name.\n * Equal to entity target class's name if target is set to table.\n * If target class is not then then it equals to table name.\n */\n name: string;\n\n /**\n * View's expression.\n * Used in views\n */\n expression?: string|((connection: Connection) => SelectQueryBuilder<any>);\n\n /**\n * Original user-given table name (taken from schema or @Entity(tableName) decorator).\n * If user haven't specified a table name this property will be undefined.\n */\n givenTableName?: string;\n\n /**\n * Entity table name in the database.\n * This is final table name of the entity.\n * This name already passed naming strategy, and generated based on\n * multiple criteria, including user table name and global table prefix.\n */\n tableName: string;\n\n /**\n * Entity table path. Contains database name, schema name and table name.\n * E.g. myDB.mySchema.myTable\n */\n tablePath: string;\n\n /**\n * Entity schema path. Contains database name and schema name.\n * E.g. myDB.mySchema\n */\n schemaPath?: string;\n\n /**\n * Gets the table name without global table prefix.\n * When querying table you need a table name with prefix, but in some scenarios,\n * for example when you want to name a junction table that contains names of two other tables,\n * you may want a table name without prefix.\n */\n tableNameWithoutPrefix: string;\n\n /**\n * Indicates if schema will be synchronized for this entity or not.\n */\n synchronize: boolean = true;\n\n /**\n * Table's database engine type (like \"InnoDB\", \"MyISAM\", etc).\n */\n engine?: string;\n\n /**\n * Database name.\n */\n database?: string;\n\n /**\n * Schema name. Used in Postgres and Sql Server.\n */\n schema?: string;\n\n /**\n * Specifies a default order by used for queries from this table when no explicit order by is specified.\n */\n orderBy?: OrderByCondition;\n\n /**\n * If this entity metadata's table using one of the inheritance patterns,\n * then this will contain what pattern it uses.\n */\n inheritancePattern?: \"STI\"/*|\"CTI\"*/;\n\n /**\n * Checks if there any non-nullable column exist in this entity.\n */\n hasNonNullableRelations: boolean = false;\n\n /**\n * Indicates if this entity metadata of a junction table, or not.\n * Junction table is a table created by many-to-many relationship.\n *\n * Its also possible to understand if entity is junction via tableType.\n */\n isJunction: boolean = false;\n\n /**\n * Indicates if this entity is a tree, what type of tree it is.\n */\n treeType?: TreeType;\n\n /**\n * Checks if this table is a junction table of the closure table.\n * This type is for tables that contain junction metadata of the closure tables.\n */\n isClosureJunction: boolean = false;\n\n /**\n * Checks if entity's table has multiple primary columns.\n */\n hasMultiplePrimaryKeys: boolean = false;\n\n /**\n * Indicates if this entity metadata has uuid generated columns.\n */\n hasUUIDGeneratedColumns: boolean = false;\n\n /**\n * If this entity metadata is a child table of some table, it should have a discriminator value.\n * Used to store a value in a discriminator column.\n */\n discriminatorValue?: string;\n\n /**\n * Entity's column metadatas defined by user.\n */\n ownColumns: ColumnMetadata[] = [];\n\n /**\n * Columns of the entity, including columns that are coming from the embeddeds of this entity.\n */\n columns: ColumnMetadata[] = [];\n\n /**\n * Ancestor columns used only in closure junction tables.\n */\n ancestorColumns: ColumnMetadata[] = [];\n\n /**\n * Descendant columns used only in closure junction tables.\n */\n descendantColumns: ColumnMetadata[] = [];\n\n /**\n * All columns except for virtual columns.\n */\n nonVirtualColumns: ColumnMetadata[] = [];\n\n /**\n * In the case if this entity metadata is junction table's entity metadata,\n * this will contain all referenced columns of owner entity.\n */\n ownerColumns: ColumnMetadata[] = [];\n\n /**\n * In the case if this entity metadata is junction table's entity metadata,\n * this will contain all referenced columns of inverse entity.\n */\n inverseColumns: ColumnMetadata[] = [];\n\n /**\n * Gets the column with generated flag.\n */\n generatedColumns: ColumnMetadata[] = [];\n\n /**\n * Gets the object id column used with mongodb database.\n */\n objectIdColumn?: ColumnMetadata;\n\n /**\n * Gets entity column which contains a create date value.\n */\n createDateColumn?: ColumnMetadata;\n\n /**\n * Gets entity column which contains an update date value.\n */\n updateDateColumn?: ColumnMetadata;\n\n /**\n * Gets entity column which contains an entity version.\n */\n versionColumn?: ColumnMetadata;\n\n /**\n * Gets the discriminator column used to store entity identificator in single-table inheritance tables.\n */\n discriminatorColumn?: ColumnMetadata;\n\n /**\n * Special column that stores tree level in tree entities.\n */\n treeLevelColumn?: ColumnMetadata;\n\n /**\n * Nested set's left value column.\n * Used only in tree entities with nested set pattern applied.\n */\n nestedSetLeftColumn?: ColumnMetadata;\n\n /**\n * Nested set's right value column.\n * Used only in tree entities with nested set pattern applied.\n */\n nestedSetRightColumn?: ColumnMetadata;\n\n /**\n * Materialized path column.\n * Used only in tree entities with materialized path pattern applied.\n */\n materializedPathColumn?: ColumnMetadata;\n\n /**\n * Gets the primary columns.\n */\n primaryColumns: ColumnMetadata[] = [];\n\n /**\n * Entity's relation metadatas.\n */\n ownRelations: RelationMetadata[] = [];\n\n /**\n * Relations of the entity, including relations that are coming from the embeddeds of this entity.\n */\n relations: RelationMetadata[] = [];\n\n /**\n * List of eager relations this metadata has.\n */\n eagerRelations: RelationMetadata[] = [];\n\n /**\n * List of eager relations this metadata has.\n */\n lazyRelations: RelationMetadata[] = [];\n\n /**\n * Gets only one-to-one relations of the entity.\n */\n oneToOneRelations: RelationMetadata[] = [];\n\n /**\n * Gets only owner one-to-one relations of the entity.\n */\n ownerOneToOneRelations: RelationMetadata[] = [];\n\n /**\n * Gets only one-to-many relations of the entity.\n */\n oneToManyRelations: RelationMetadata[] = [];\n\n /**\n * Gets only many-to-one relations of the entity.\n */\n manyToOneRelations: RelationMetadata[] = [];\n\n /**\n * Gets only many-to-many relations of the entity.\n */\n manyToManyRelations: RelationMetadata[] = [];\n\n /**\n * Gets only owner many-to-many relations of the entity.\n */\n ownerManyToManyRelations: RelationMetadata[] = [];\n\n /**\n * Gets only owner one-to-one and many-to-one relations.\n */\n relationsWithJoinColumns: RelationMetadata[] = [];\n\n /**\n * Tree parent relation. Used only in tree-tables.\n */\n treeParentRelation?: RelationMetadata;\n\n /**\n * Tree children relation. Used only in tree-tables.\n */\n treeChildrenRelation?: RelationMetadata;\n\n /**\n * Entity's relation id metadatas.\n */\n relationIds: RelationIdMetadata[] = [];\n\n /**\n * Entity's relation id metadatas.\n */\n relationCounts: RelationCountMetadata[] = [];\n\n /**\n * Entity's foreign key metadatas.\n */\n foreignKeys: ForeignKeyMetadata[] = [];\n\n /**\n * Entity's embedded metadatas.\n */\n embeddeds: EmbeddedMetadata[] = [];\n\n /**\n * All embeddeds - embeddeds from this entity metadata and from all child embeddeds, etc.\n */\n allEmbeddeds: EmbeddedMetadata[] = [];\n\n /**\n * Entity's own indices.\n */\n ownIndices: IndexMetadata[] = [];\n\n /**\n * Entity's index metadatas.\n */\n indices: IndexMetadata[] = [];\n\n /**\n * Entity's unique metadatas.\n */\n uniques: UniqueMetadata[] = [];\n\n /**\n * Entity's own uniques.\n */\n ownUniques: UniqueMetadata[] = [];\n\n /**\n * Entity's check metadatas.\n */\n checks: CheckMetadata[] = [];\n\n /**\n * Entity's exclusion metadatas.\n */\n exclusions: ExclusionMetadata[] = [];\n\n /**\n * Entity's own listener metadatas.\n */\n ownListeners: EntityListenerMetadata[] = [];\n\n /**\n * Entity listener metadatas.\n */\n listeners: EntityListenerMetadata[] = [];\n\n /**\n * Listener metadatas with \"AFTER LOAD\" type.\n */\n afterLoadListeners: EntityListenerMetadata[] = [];\n\n /**\n * Listener metadatas with \"AFTER INSERT\" type.\n */\n beforeInsertListeners: EntityListenerMetadata[] = [];\n\n /**\n * Listener metadatas with \"AFTER INSERT\" type.\n */\n afterInsertListeners: EntityListenerMetadata[] = [];\n\n /**\n * Listener metadatas with \"AFTER UPDATE\" type.\n */\n beforeUpdateListeners: EntityListenerMetadata[] = [];\n\n /**\n * Listener metadatas with \"AFTER UPDATE\" type.\n */\n afterUpdateListeners: EntityListenerMetadata[] = [];\n\n /**\n * Listener metadatas with \"AFTER REMOVE\" type.\n */\n beforeRemoveListeners: EntityListenerMetadata[] = [];\n\n /**\n * Listener metadatas with \"AFTER REMOVE\" type.\n */\n afterRemoveListeners: EntityListenerMetadata[] = [];\n\n /**\n * Map of columns and relations of the entity.\n *\n * example: Post{ id: number, name: string, counterEmbed: { count: number }, category: Category }.\n * This method will create following object:\n * { id: \"id\", counterEmbed: { count: \"counterEmbed.count\" }, category: \"category\" }\n */\n propertiesMap: ObjectLiteral;\n\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n\n constructor(options: {\n connection: Connection,\n inheritanceTree?: Function[],\n inheritancePattern?: \"STI\"/*|\"CTI\"*/,\n tableTree?: TreeMetadataArgs,\n parentClosureEntityMetadata?: EntityMetadata,\n args: TableMetadataArgs\n }) {\n this.connection = options.connection;\n this.inheritanceTree = options.inheritanceTree || [];\n this.inheritancePattern = options.inheritancePattern;\n this.treeType = options.tableTree ? options.tableTree.type : undefined;\n this.parentClosureEntityMetadata = options.parentClosureEntityMetadata!;\n this.tableMetadataArgs = options.args;\n this.target = this.tableMetadataArgs.target;\n this.tableType = this.tableMetadataArgs.type;\n this.expression = this.tableMetadataArgs.expression;\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a new entity.\n */\n create(queryRunner?: QueryRunner): any {\n // if target is set to a function (e.g. class) that can be created then create it\n let ret: any;\n if (this.target instanceof Function) {\n ret = new (<any> this.target)();\n this.lazyRelations.forEach(relation => this.connection.relationLoader.enableLazyLoad(relation, ret, queryRunner));\n return ret;\n }\n\n // otherwise simply return a new empty object\n const newObject = {};\n this.lazyRelations.forEach(relation => this.connection.relationLoader.enableLazyLoad(relation, newObject, queryRunner));\n return newObject;\n }\n\n /**\n * Checks if given entity has an id.\n */\n hasId(entity: ObjectLiteral): boolean {\n if (!entity)\n return false;\n\n return this.primaryColumns.every(primaryColumn => {\n const value = primaryColumn.getEntityValue(entity);\n return value !== null && value !== undefined && value !== \"\";\n });\n }\n\n /**\n * Checks if given entity / object contains ALL primary keys entity must have.\n * Returns true if it contains all of them, false if at least one of them is not defined.\n */\n hasAllPrimaryKeys(entity: ObjectLiteral): boolean {\n return this.primaryColumns.every(primaryColumn => {\n const value = primaryColumn.getEntityValue(entity);\n return value !== null && value !== undefined;\n });\n }\n\n /**\n * Ensures that given object is an entity id map.\n * If given id is an object then it means its already id map.\n * If given id isn't an object then it means its a value of the id column\n * and it creates a new id map with this value and name of the primary column.\n */\n ensureEntityIdMap(id: any): ObjectLiteral {\n if (id instanceof Object)\n return id;\n\n if (this.hasMultiplePrimaryKeys)\n throw new CannotCreateEntityIdMapError(this, id);\n\n return this.primaryColumns[0].createValueMap(id);\n }\n\n /**\n * Gets primary keys of the entity and returns them in a literal object.\n * For example, for Post{ id: 1, title: \"hello\" } where id is primary it will return { id: 1 }\n * For multiple primary keys it returns multiple keys in object.\n * For primary keys inside embeds it returns complex object literal with keys in them.\n */\n getEntityIdMap(entity: ObjectLiteral|undefined): ObjectLiteral|undefined {\n if (!entity)\n return undefined;\n\n return EntityMetadata.getValueMap(entity, this.primaryColumns, { skipNulls: true });\n }\n\n /**\n * Creates a \"mixed id map\".\n * If entity has multiple primary keys (ids) then it will return just regular id map, like what getEntityIdMap returns.\n * But if entity has a single primary key then it will return just value of the id column of the entity, just value.\n * This is called mixed id map.\n */\n getEntityIdMixedMap(entity: ObjectLiteral|undefined): ObjectLiteral|undefined {\n if (!entity)\n return entity;\n\n const idMap = this.getEntityIdMap(entity);\n if (this.hasMultiplePrimaryKeys) {\n return idMap;\n\n } else if (idMap) {\n return this.primaryColumns[0].getEntityValue(idMap); // todo: what about parent primary column?\n }\n\n return idMap;\n }\n\n /**\n * Compares two different entities by their ids.\n * Returns true if they match, false otherwise.\n */\n compareEntities(firstEntity: ObjectLiteral, secondEntity: ObjectLiteral): boolean {\n\n const firstEntityIdMap = this.getEntityIdMap(firstEntity);\n if (!firstEntityIdMap) return false;\n\n const secondEntityIdMap = this.getEntityIdMap(secondEntity);\n if (!secondEntityIdMap) return false;\n\n return EntityMetadata.compareIds(firstEntityIdMap, secondEntityIdMap);\n }\n\n /**\n * Finds column with a given property name.\n */\n findColumnWithPropertyName(propertyName: string): ColumnMetadata|undefined {\n return this.columns.find(column => column.propertyName === propertyName);\n }\n\n /**\n * Finds column with a given database name.\n */\n findColumnWithDatabaseName(databaseName: string): ColumnMetadata|undefined {\n return this.columns.find(column => column.databaseName === databaseName);\n }\n\n /**\n * Finds column with a given property path.\n */\n findColumnWithPropertyPath(propertyPath: string): ColumnMetadata|undefined {\n const column = this.columns.find(column => column.propertyPath === propertyPath);\n if (column)\n return column;\n\n // in the case if column with property path was not found, try to find a relation with such property path\n // if we find relation and it has a single join column then its the column user was seeking\n const relation = this.relations.find(relation => relation.propertyPath === propertyPath);\n if (relation && relation.joinColumns.length === 1)\n return relation.joinColumns[0];\n\n return undefined;\n }\n\n /**\n * Finds columns with a given property path.\n * Property path can match a relation, and relations can contain multiple columns.\n */\n findColumnsWithPropertyPath(propertyPath: string): ColumnMetadata[] {\n const column = this.columns.find(column => column.propertyPath === propertyPath);\n if (column)\n return [column];\n\n // in the case if column with property path was not found, try to find a relation with such property path\n // if we find relation and it has a single join column then its the column user was seeking\n const relation = this.relations.find(relation => relation.propertyPath === propertyPath);\n if (relation && relation.joinColumns)\n return relation.joinColumns;\n\n return [];\n }\n\n /**\n * Finds relation with the given property path.\n */\n findRelationWithPropertyPath(propertyPath: string): RelationMetadata|undefined {\n return this.relations.find(relation => relation.propertyPath === propertyPath);\n }\n\n /**\n * Checks if there is an embedded with a given property path.\n */\n hasEmbeddedWithPropertyPath(propertyPath: string): boolean {\n return this.allEmbeddeds.some(embedded => embedded.propertyPath === propertyPath);\n }\n\n /**\n * Finds embedded with a given property path.\n */\n findEmbeddedWithPropertyPath(propertyPath: string): EmbeddedMetadata|undefined {\n return this.allEmbeddeds.find(embedded => embedded.propertyPath === propertyPath);\n }\n\n /**\n * Iterates through entity and finds and extracts all values from relations in the entity.\n * If relation value is an array its being flattened.\n */\n extractRelationValuesFromEntity(entity: ObjectLiteral, relations: RelationMetadata[]): [RelationMetadata, any, EntityMetadata][] {\n const relationsAndValues: [RelationMetadata, any, EntityMetadata][] = [];\n relations.forEach(relation => {\n const value = relation.getEntityValue(entity);\n if (value instanceof Array) {\n value.forEach(subValue => relationsAndValues.push([relation, subValue, relation.inverseEntityMetadata]));\n } else if (value) {\n relationsAndValues.push([relation, value, relation.inverseEntityMetadata]);\n }\n });\n return relationsAndValues;\n }\n\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a property paths for a given entity.\n */\n static createPropertyPath(metadata: EntityMetadata, entity: ObjectLiteral, prefix: string = \"\") {\n const paths: string[] = [];\n Object.keys(entity).forEach(key => {\n\n // check for function is needed in the cases when createPropertyPath used on values containg a function as a value\n // example: .update().set({ name: () => `SUBSTR('', 1, 2)` })\n const parentPath = prefix ? prefix + \".\" + key : key;\n if (metadata.hasEmbeddedWithPropertyPath(parentPath)) {\n const subPaths = this.createPropertyPath(metadata, entity[key], parentPath);\n paths.push(...subPaths);\n } else {\n const path = prefix ? prefix + \".\" + key : key;\n paths.push(path);\n }\n });\n return paths;\n }\n\n /**\n * Finds difference between two entity id maps.\n * Returns items that exist in the first array and absent in the second array.\n */\n static difference(firstIdMaps: ObjectLiteral[], secondIdMaps: ObjectLiteral[]): ObjectLiteral[] {\n return firstIdMaps.filter(firstIdMap => {\n return !secondIdMaps.find(secondIdMap => OrmUtils.deepCompare(firstIdMap, secondIdMap));\n });\n }\n\n /**\n * Compares ids of the two entities.\n * Returns true if they match, false otherwise.\n */\n static compareIds(firstId: ObjectLiteral|undefined, secondId: ObjectLiteral|undefined): boolean {\n if (firstId === undefined || firstId === null || secondId === undefined || secondId === null)\n return false;\n\n return OrmUtils.deepCompare(firstId, secondId);\n }\n\n /**\n * Creates value map from the given values and columns.\n * Examples of usages are primary columns map and join columns map.\n */\n static getValueMap(entity: ObjectLiteral, columns: ColumnMetadata[], options?: { skipNulls?: boolean }): ObjectLiteral|undefined {\n return columns.reduce((map, column) => {\n const value = column.getEntityValueMap(entity, options);\n\n // make sure that none of the values of the columns are not missing\n if (map === undefined || value === null || value === undefined)\n return undefined;\n\n return column.isObjectId ? Object.assign(map, value) : OrmUtils.mergeDeep(map, value);\n }, {} as ObjectLiteral|undefined);\n }\n\n // ---------------------------------------------------------------------\n // Public Builder Methods\n // ---------------------------------------------------------------------\n\n build() {\n const namingStrategy = this.connection.namingStrategy;\n const entityPrefix = this.connection.options.entityPrefix;\n this.engine = this.tableMetadataArgs.engine;\n this.database = this.tableMetadataArgs.type === \"entity-child\" && this.parentEntityMetadata ? this.parentEntityMetadata.database : this.tableMetadataArgs.database;\n if (this.tableMetadataArgs.schema) {\n this.schema = this.tableMetadataArgs.schema;\n }\n else if ((this.tableMetadataArgs.type === \"entity-child\") && this.parentEntityMetadata) {\n this.schema = this.parentEntityMetadata.schema;\n }\n else {\n this.schema = (this.connection.options as PostgresConnectionOptions|SqlServerConnectionOptions).schema;\n }\n this.givenTableName = this.tableMetadataArgs.type === \"entity-child\" && this.parentEntityMetadata ? this.parentEntityMetadata.givenTableName : this.tableMetadataArgs.name;\n this.synchronize = this.tableMetadataArgs.synchronize === false ? false : true;\n this.targetName = this.tableMetadataArgs.target instanceof Function ? (this.tableMetadataArgs.target as any).name : this.tableMetadataArgs.target;\n if (this.tableMetadataArgs.type === \"closure-junction\") {\n this.tableNameWithoutPrefix = namingStrategy.closureJunctionTableName(this.givenTableName!);\n } else if (this.tableMetadataArgs.type === \"entity-child\" && this.parentEntityMetadata) {\n this.tableNameWithoutPrefix = namingStrategy.tableName(this.parentEntityMetadata.targetName, this.parentEntityMetadata.givenTableName);\n } else {\n this.tableNameWithoutPrefix = namingStrategy.tableName(this.targetName, this.givenTableName);\n\n if (this.connection.driver.maxAliasLength && this.connection.driver.maxAliasLength > 0 && this.tableNameWithoutPrefix.length > this.connection.driver.maxAliasLength) {\n this.tableNameWithoutPrefix = shorten(this.tableNameWithoutPrefix, { separator: \"_\", segmentLength: 3 });\n }\n }\n this.tableName = entityPrefix ? namingStrategy.prefixTableName(entityPrefix, this.tableNameWithoutPrefix) : this.tableNameWithoutPrefix;\n this.target = this.target ? this.target : this.tableName;\n this.name = this.targetName ? this.targetName : this.tableName;\n this.expression = this.tableMetadataArgs.expression;\n this.tablePath = this.buildTablePath();\n this.schemaPath = this.buildSchemaPath();\n this.orderBy = (this.tableMetadataArgs.orderBy instanceof Function) ? this.tableMetadataArgs.orderBy(this.propertiesMap) : this.tableMetadataArgs.orderBy; // todo: is propertiesMap available here? Looks like its not\n\n this.isJunction = this.tableMetadataArgs.type === \"closure-junction\" || this.tableMetadataArgs.type === \"junction\";\n this.isClosureJunction = this.tableMetadataArgs.type === \"closure-junction\";\n }\n\n /**\n * Registers a new column in the entity and recomputes all depend properties.\n */\n registerColumn(column: ColumnMetadata) {\n if (this.ownColumns.indexOf(column) !== -1)\n return;\n\n this.ownColumns.push(column);\n this.columns = this.embeddeds.reduce((columns, embedded) => columns.concat(embedded.columnsFromTree), this.ownColumns);\n this.primaryColumns = this.columns.filter(column => column.isPrimary);\n this.hasMultiplePrimaryKeys = this.primaryColumns.length > 1;\n this.hasUUIDGeneratedColumns = this.columns.filter(column => column.isGenerated || column.generationStrategy === \"uuid\").length > 0;\n this.propertiesMap = this.createPropertiesMap();\n if (this.childEntityMetadatas)\n this.childEntityMetadatas.forEach(entityMetadata => entityMetadata.registerColumn(column));\n }\n\n /**\n * Creates a special object - all columns and relations of the object (plus columns and relations from embeds)\n * in a special format - { propertyName: propertyName }.\n *\n * example: Post{ id: number, name: string, counterEmbed: { count: number }, category: Category }.\n * This method will create following object:\n * { id: \"id\", counterEmbed: { count: \"counterEmbed.count\" }, category: \"category\" }\n */\n createPropertiesMap(): { [name: string]: string|any } {\n const map: { [name: string]: string|any } = {};\n this.columns.forEach(column => OrmUtils.mergeDeep(map, column.createValueMap(column.propertyPath)));\n this.relations.forEach(relation => OrmUtils.mergeDeep(map, relation.createValueMap(relation.propertyPath)));\n return map;\n }\n\n /**\n * Builds table path using database name, schema name and table name.\n */\n protected buildTablePath(): string {\n let tablePath = this.tableName;\n if (this.schema)\n tablePath = this.schema + \".\" + tablePath;\n if (this.database && !(this.connection.driver instanceof PostgresDriver)) {\n if (!this.schema && this.connection.driver instanceof SqlServerDriver) {\n tablePath = this.database + \"..\" + tablePath;\n } else {\n tablePath = this.database + \".\" + tablePath;\n }\n }\n\n return tablePath;\n }\n\n /**\n * Builds table path using schema name and database name.\n */\n protected buildSchemaPath(): string|undefined {\n if (!this.schema)\n return undefined;\n\n return this.database && !(this.connection.driver instanceof PostgresDriver) ? this.database + \".\" + this.schema : this.schema;\n }\n\n}\n"],"sourceRoot":".."}
\No newline at end of file