typeorm 0.2.43-dev.6b0b15b → 0.2.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  2. package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.d.ts +18 -0
  3. package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js +8 -0
  4. package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -0
  5. package/browser/entity-schema/EntitySchemaEmbeddedError.d.ts +6 -0
  6. package/browser/entity-schema/EntitySchemaEmbeddedError.js +18 -0
  7. package/browser/entity-schema/EntitySchemaEmbeddedError.js.map +1 -0
  8. package/browser/entity-schema/EntitySchemaOptions.d.ts +7 -1
  9. package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
  10. package/browser/entity-schema/EntitySchemaTransformer.d.ts +1 -0
  11. package/browser/entity-schema/EntitySchemaTransformer.js +217 -191
  12. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  13. package/browser/index.d.ts +1 -0
  14. package/browser/index.js +1 -0
  15. package/browser/index.js.map +1 -1
  16. package/browser/metadata/EmbeddedMetadata.d.ts +1 -1
  17. package/browser/metadata/EmbeddedMetadata.js +3 -0
  18. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  19. package/browser/metadata-args/EmbeddedMetadataArgs.d.ts +2 -2
  20. package/browser/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
  21. package/browser/metadata-builder/EntityMetadataBuilder.js +3 -1
  22. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  23. package/cli.js +0 -0
  24. package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  25. package/entity-schema/EntitySchemaEmbeddedColumnOptions.d.ts +18 -0
  26. package/entity-schema/EntitySchemaEmbeddedColumnOptions.js +11 -0
  27. package/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -0
  28. package/entity-schema/EntitySchemaEmbeddedError.d.ts +6 -0
  29. package/entity-schema/EntitySchemaEmbeddedError.js +21 -0
  30. package/entity-schema/EntitySchemaEmbeddedError.js.map +1 -0
  31. package/entity-schema/EntitySchemaOptions.d.ts +7 -1
  32. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  33. package/entity-schema/EntitySchemaTransformer.d.ts +1 -0
  34. package/entity-schema/EntitySchemaTransformer.js +217 -191
  35. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  36. package/index.d.ts +1 -0
  37. package/index.js +3 -1
  38. package/index.js.map +1 -1
  39. package/index.mjs +2 -0
  40. package/metadata/EmbeddedMetadata.d.ts +1 -1
  41. package/metadata/EmbeddedMetadata.js +3 -0
  42. package/metadata/EmbeddedMetadata.js.map +1 -1
  43. package/metadata-args/EmbeddedMetadataArgs.d.ts +2 -2
  44. package/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
  45. package/metadata-builder/EntityMetadataBuilder.js +3 -1
  46. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  47. package/package.json +252 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/metadata-builder/EntityMetadataBuilder.ts"],"names":[],"mappings":"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","file":"EntityMetadataBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {SapDriver} from \"../driver/sap/SapDriver\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {ColumnMetadata} from \"../metadata/ColumnMetadata\";\nimport {IndexMetadata} from \"../metadata/IndexMetadata\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\nimport {EmbeddedMetadata} from \"../metadata/EmbeddedMetadata\";\nimport {MetadataArgsStorage} from \"../metadata-args/MetadataArgsStorage\";\nimport {EmbeddedMetadataArgs} from \"../metadata-args/EmbeddedMetadataArgs\";\nimport {RelationIdMetadata} from \"../metadata/RelationIdMetadata\";\nimport {RelationCountMetadata} from \"../metadata/RelationCountMetadata\";\nimport { EventListenerTypes } from \"../metadata/types/EventListenerTypes\";\nimport {MetadataUtils} from \"./MetadataUtils\";\nimport {TableMetadataArgs} from \"../metadata-args/TableMetadataArgs\";\nimport {JunctionEntityMetadataBuilder} from \"./JunctionEntityMetadataBuilder\";\nimport {ClosureJunctionEntityMetadataBuilder} from \"./ClosureJunctionEntityMetadataBuilder\";\nimport {RelationJoinColumnBuilder} from \"./RelationJoinColumnBuilder\";\nimport {Connection} from \"../connection/Connection\";\nimport {EntityListenerMetadata} from \"../metadata/EntityListenerMetadata\";\nimport {UniqueMetadata} from \"../metadata/UniqueMetadata\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {CheckMetadata} from \"../metadata/CheckMetadata\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {ExclusionMetadata} from \"../metadata/ExclusionMetadata\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport { TypeORMError } from \"../error\";\n\n/**\n * Builds EntityMetadata objects and all its sub-metadatas.\n */\nexport class EntityMetadataBuilder {\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Used to build entity metadatas of the junction entities.\n */\n protected junctionEntityMetadataBuilder: JunctionEntityMetadataBuilder;\n\n /**\n * Used to build entity metadatas of the closure junction entities.\n */\n protected closureJunctionEntityMetadataBuilder: ClosureJunctionEntityMetadataBuilder;\n\n /**\n * Used to build join columns of the relations.\n */\n protected relationJoinColumnBuilder: RelationJoinColumnBuilder;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: Connection,\n private metadataArgsStorage: MetadataArgsStorage) {\n\n this.junctionEntityMetadataBuilder = new JunctionEntityMetadataBuilder(connection);\n this.closureJunctionEntityMetadataBuilder = new ClosureJunctionEntityMetadataBuilder(connection);\n this.relationJoinColumnBuilder = new RelationJoinColumnBuilder(connection);\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Builds a complete entity metadatas for the given entity classes.\n */\n build(entityClasses?: Function[]): EntityMetadata[] {\n\n // if entity classes to filter entities by are given then do filtering, otherwise use all\n const allTables = entityClasses ? this.metadataArgsStorage.filterTables(entityClasses) : this.metadataArgsStorage.tables;\n\n // filter out table metadata args for those we really create entity metadatas and tables in the db\n const realTables = allTables.filter(table => table.type === \"regular\" || table.type === \"closure\" || table.type === \"entity-child\" || table.type === \"view\");\n\n // create entity metadatas for a user defined entities (marked with @Entity decorator or loaded from entity schemas)\n const entityMetadatas = realTables.map(tableArgs => this.createEntityMetadata(tableArgs));\n\n // compute parent entity metadatas for table inheritance\n entityMetadatas.forEach(entityMetadata => this.computeParentEntityMetadata(entityMetadatas, entityMetadata));\n\n // after all metadatas created we set child entity metadatas for table inheritance\n entityMetadatas.forEach(metadata => {\n metadata.childEntityMetadatas = entityMetadatas.filter(childMetadata => {\n return metadata.target instanceof Function\n && childMetadata.target instanceof Function\n && MetadataUtils.isInherited(childMetadata.target, metadata.target);\n });\n });\n\n // build entity metadata (step0), first for non-single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType !== \"entity-child\")\n .forEach(entityMetadata => entityMetadata.build());\n\n // build entity metadata (step0), now for single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType === \"entity-child\")\n .forEach(entityMetadata => entityMetadata.build());\n\n // compute entity metadata columns, relations, etc. first for the regular, non-single-table-inherited entity metadatas\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType !== \"entity-child\")\n .forEach(entityMetadata => this.computeEntityMetadataStep1(entityMetadatas, entityMetadata));\n\n // then do it for single table inheritance children (since they are depend on their parents to be built)\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType === \"entity-child\")\n .forEach(entityMetadata => this.computeEntityMetadataStep1(entityMetadatas, entityMetadata));\n\n // calculate entity metadata computed properties and all its sub-metadatas\n entityMetadatas.forEach(entityMetadata => this.computeEntityMetadataStep2(entityMetadata));\n\n // calculate entity metadata's inverse properties\n entityMetadatas.forEach(entityMetadata => this.computeInverseProperties(entityMetadata, entityMetadatas));\n\n // go through all entity metadatas and create foreign keys / junction entity metadatas for their relations\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType !== \"entity-child\")\n .forEach(entityMetadata => {\n\n // create entity's relations join columns (for many-to-one and one-to-one owner)\n entityMetadata.relations.filter(relation => relation.isOneToOne || relation.isManyToOne).forEach(relation => {\n const joinColumns = this.metadataArgsStorage.filterJoinColumns(relation.target, relation.propertyName);\n const { foreignKey, columns, uniqueConstraint } = this.relationJoinColumnBuilder.build(joinColumns, relation); // create a foreign key based on its metadata args\n if (foreignKey) {\n relation.registerForeignKeys(foreignKey); // push it to the relation and thus register there a join column\n entityMetadata.foreignKeys.push(foreignKey);\n }\n if (columns) {\n relation.registerJoinColumns(columns);\n }\n if (uniqueConstraint) {\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver\n || this.connection.driver instanceof SqlServerDriver || this.connection.driver instanceof SapDriver) {\n const index = new IndexMetadata({\n entityMetadata: uniqueConstraint.entityMetadata,\n columns: uniqueConstraint.columns,\n args: {\n target: uniqueConstraint.target!,\n name: uniqueConstraint.name,\n unique: true,\n synchronize: true\n }\n });\n\n if (this.connection.driver instanceof SqlServerDriver) {\n index.where = index.columns.map(column => {\n return `${this.connection.driver.escape(column.databaseName)} IS NOT NULL`;\n }).join(\" AND \");\n }\n\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.indices.push(index);\n } else {\n relation.entityMetadata.ownIndices.push(index);\n }\n this.computeEntityMetadataStep2(entityMetadata);\n\n } else {\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.uniques.push(uniqueConstraint);\n } else {\n relation.entityMetadata.ownUniques.push(uniqueConstraint);\n }\n this.computeEntityMetadataStep2(entityMetadata);\n }\n }\n\n if (foreignKey && this.connection.driver instanceof CockroachDriver) {\n const index = new IndexMetadata({\n entityMetadata: relation.entityMetadata,\n columns: foreignKey.columns,\n args: {\n target: relation.entityMetadata.target!,\n synchronize: true\n }\n });\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.indices.push(index);\n } else {\n relation.entityMetadata.ownIndices.push(index);\n }\n this.computeEntityMetadataStep2(entityMetadata);\n }\n });\n\n // create junction entity metadatas for entity many-to-many relations\n entityMetadata.relations.filter(relation => relation.isManyToMany).forEach(relation => {\n const joinTable = this.metadataArgsStorage.findJoinTable(relation.target, relation.propertyName)!;\n if (!joinTable) return; // no join table set - no need to do anything (it means this is many-to-many inverse side)\n\n // here we create a junction entity metadata for a new junction table of many-to-many relation\n const junctionEntityMetadata = this.junctionEntityMetadataBuilder.build(relation, joinTable);\n relation.registerForeignKeys(...junctionEntityMetadata.foreignKeys);\n relation.registerJoinColumns(\n junctionEntityMetadata.ownIndices[0].columns,\n junctionEntityMetadata.ownIndices[1].columns\n );\n relation.registerJunctionEntityMetadata(junctionEntityMetadata);\n\n // compute new entity metadata properties and push it to entity metadatas pool\n this.computeEntityMetadataStep2(junctionEntityMetadata);\n this.computeInverseProperties(junctionEntityMetadata, entityMetadatas);\n entityMetadatas.push(junctionEntityMetadata);\n });\n\n });\n\n // update entity metadata depend properties\n entityMetadatas\n .forEach(entityMetadata => {\n entityMetadata.relationsWithJoinColumns = entityMetadata.relations.filter(relation => relation.isWithJoinColumn);\n entityMetadata.hasNonNullableRelations = entityMetadata.relationsWithJoinColumns.some(relation => !relation.isNullable || relation.isPrimary);\n });\n\n // generate closure junction tables for all closure tables\n entityMetadatas\n .filter(metadata => metadata.treeType === \"closure-table\")\n .forEach(entityMetadata => {\n const closureJunctionEntityMetadata = this.closureJunctionEntityMetadataBuilder.build(entityMetadata);\n entityMetadata.closureJunctionTable = closureJunctionEntityMetadata;\n this.computeEntityMetadataStep2(closureJunctionEntityMetadata);\n this.computeInverseProperties(closureJunctionEntityMetadata, entityMetadatas);\n entityMetadatas.push(closureJunctionEntityMetadata);\n });\n\n // generate keys for tables with single-table inheritance\n entityMetadatas\n .filter(metadata => metadata.inheritancePattern === \"STI\" && metadata.discriminatorColumn)\n .forEach(entityMetadata => this.createKeysForTableInheritance(entityMetadata));\n\n // build all indices (need to do it after relations and their join columns are built)\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.indices.forEach(index => index.build(this.connection.namingStrategy));\n });\n\n // build all unique constraints (need to do it after relations and their join columns are built)\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.uniques.forEach(unique => unique.build(this.connection.namingStrategy));\n });\n\n // build all check constraints\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.checks.forEach(check => check.build(this.connection.namingStrategy));\n });\n\n // build all exclusion constraints\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.exclusions.forEach(exclusion => exclusion.build(this.connection.namingStrategy));\n });\n\n // add lazy initializer for entity relations\n entityMetadatas\n .filter(metadata => metadata.target instanceof Function)\n .forEach(entityMetadata => {\n entityMetadata.relations\n .filter(relation => relation.isLazy)\n .forEach(relation => {\n this.connection.relationLoader.enableLazyLoad(relation, (entityMetadata.target as Function).prototype);\n });\n });\n\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.columns.forEach(column => {\n // const target = column.embeddedMetadata ? column.embeddedMetadata.type : column.target;\n const generated = this.metadataArgsStorage.findGenerated(column.target, column.propertyName);\n if (generated) {\n column.isGenerated = true;\n column.generationStrategy = generated.strategy;\n if (generated.strategy === \"uuid\") {\n column.type = \"uuid\";\n } else if (generated.strategy === \"rowid\") {\n column.type = \"int\";\n } else {\n column.type = column.type || Number;\n }\n column.build(this.connection);\n this.computeEntityMetadataStep2(entityMetadata);\n }\n });\n\n });\n\n return entityMetadatas;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates entity metadata from the given table args.\n * Creates column, relation, etc. metadatas for everything this entity metadata owns.\n */\n protected createEntityMetadata(tableArgs: TableMetadataArgs): EntityMetadata {\n\n // we take all \"inheritance tree\" from a target entity to collect all stored metadata args\n // (by decorators or inside entity schemas). For example for target Post < ContentModel < Unit\n // it will be an array of [Post, ContentModel, Unit] and we can then get all metadata args of those classes\n const inheritanceTree: any[] = tableArgs.target instanceof Function\n ? MetadataUtils.getInheritanceTree(tableArgs.target)\n : [tableArgs.target]; // todo: implement later here inheritance for string-targets\n\n const tableInheritance = this.metadataArgsStorage.findInheritanceType(tableArgs.target);\n const tableTree = this.metadataArgsStorage.findTree(tableArgs.target);\n\n // if single table inheritance used, we need to copy all children columns in to parent table\n let singleTableChildrenTargets: any[];\n if ((tableInheritance && tableInheritance.pattern === \"STI\") || tableArgs.type === \"entity-child\") {\n singleTableChildrenTargets = this.metadataArgsStorage\n .filterSingleTableChildren(tableArgs.target)\n .map(args => args.target)\n .filter(target => target instanceof Function);\n\n inheritanceTree.push(...singleTableChildrenTargets);\n }\n\n return new EntityMetadata({\n connection: this.connection,\n args: tableArgs,\n inheritanceTree: inheritanceTree,\n tableTree: tableTree,\n inheritancePattern: tableInheritance ? tableInheritance.pattern : undefined\n });\n }\n\n protected computeParentEntityMetadata(allEntityMetadatas: EntityMetadata[], entityMetadata: EntityMetadata) {\n\n // after all metadatas created we set parent entity metadata for table inheritance\n if (entityMetadata.tableType === \"entity-child\") {\n entityMetadata.parentEntityMetadata = allEntityMetadatas.find(allEntityMetadata => {\n return allEntityMetadata.inheritanceTree.indexOf(entityMetadata.target as Function) !== -1 && allEntityMetadata.inheritancePattern === \"STI\";\n })!;\n }\n }\n\n protected computeEntityMetadataStep1(allEntityMetadatas: EntityMetadata[], entityMetadata: EntityMetadata) {\n\n const entityInheritance = this.metadataArgsStorage.findInheritanceType(entityMetadata.target);\n\n const discriminatorValue = this.metadataArgsStorage.findDiscriminatorValue(entityMetadata.target);\n\n if (typeof discriminatorValue !== \"undefined\") {\n entityMetadata.discriminatorValue = discriminatorValue.value;\n } else {\n entityMetadata.discriminatorValue = (entityMetadata.target as any).name;\n }\n\n // if single table inheritance is used, we need to mark all embedded columns as nullable\n entityMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(entityMetadata.inheritanceTree))\n .map((embedded: EmbeddedMetadata): EmbeddedMetadata => {\n if (entityMetadata.inheritancePattern === \"STI\") {\n embedded.columns = embedded.columns.map((column: ColumnMetadata): ColumnMetadata => {\n column.isNullable = true;\n return column;\n });\n }\n return embedded;\n });\n\n entityMetadata.ownColumns = this.metadataArgsStorage\n .filterColumns(entityMetadata.inheritanceTree)\n .map(args => {\n\n // for single table children we reuse columns created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.ownColumns.find(column => column.propertyName === args.propertyName)!;\n\n const column = new ColumnMetadata({ connection: this.connection, entityMetadata, args });\n\n // if single table inheritance used, we need to mark all inherit table columns as nullable\n const columnInSingleTableInheritedChild = allEntityMetadatas.find(otherEntityMetadata => otherEntityMetadata.tableType === \"entity-child\" && otherEntityMetadata.target === args.target);\n if (columnInSingleTableInheritedChild)\n column.isNullable = true;\n return column;\n });\n\n // for table inheritance we need to add a discriminator column\n //\n if (entityInheritance && entityInheritance.column) {\n const discriminatorColumnName = entityInheritance.column && entityInheritance.column.name ? entityInheritance.column.name : \"type\";\n let discriminatorColumn = entityMetadata.ownColumns.find(column => column.propertyName === discriminatorColumnName);\n if (!discriminatorColumn) {\n discriminatorColumn = new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: discriminatorColumnName,\n options: entityInheritance.column || {\n name: discriminatorColumnName,\n type: \"varchar\",\n nullable: false\n }\n }\n });\n discriminatorColumn.isVirtual = true;\n discriminatorColumn.isDiscriminator = true;\n entityMetadata.ownColumns.push(discriminatorColumn);\n } else {\n discriminatorColumn.isDiscriminator = true;\n }\n }\n\n // add discriminator column to the child entity metadatas\n // discriminator column will not be there automatically since we are creating it in the code above\n if (entityMetadata.tableType === \"entity-child\") {\n const discriminatorColumn = entityMetadata.parentEntityMetadata.ownColumns.find(column => column.isDiscriminator);\n if (discriminatorColumn && !entityMetadata.ownColumns.find(column => column === discriminatorColumn)) {\n entityMetadata.ownColumns.push(discriminatorColumn);\n }\n }\n\n const { namingStrategy } = this.connection;\n\n // check if tree is used then we need to add extra columns for specific tree types\n if (entityMetadata.treeType === \"materialized-path\") {\n entityMetadata.ownColumns.push(new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n materializedPath: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: \"mpath\",\n options: /*tree.column || */ {\n name: namingStrategy.materializedPathColumnName,\n type: \"varchar\",\n nullable: true,\n default: \"\"\n }\n }\n }));\n\n } else if (entityMetadata.treeType === \"nested-set\") {\n const { left, right } = namingStrategy.nestedSetColumnNames;\n entityMetadata.ownColumns.push(new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n nestedSetLeft: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: left,\n options: /*tree.column || */ {\n name: left,\n type: \"integer\",\n nullable: false,\n default: 1\n }\n }\n }));\n entityMetadata.ownColumns.push(new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n nestedSetRight: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: right,\n options: /*tree.column || */ {\n name: right,\n type: \"integer\",\n nullable: false,\n default: 2\n }\n }\n }));\n }\n\n entityMetadata.ownRelations = this.metadataArgsStorage.filterRelations(entityMetadata.inheritanceTree).map(args => {\n\n // for single table children we reuse relations created for their parents\n if (entityMetadata.tableType === \"entity-child\") {\n const parentRelation = entityMetadata.parentEntityMetadata.ownRelations.find(relation => relation.propertyName === args.propertyName)!;\n const type = args.type instanceof Function ? (args.type as () => any)() : args.type;\n if (parentRelation.type !== type) {\n const clone = Object.create(parentRelation);\n clone.type = type;\n return clone;\n }\n\n return parentRelation;\n }\n\n return new RelationMetadata({ entityMetadata, args });\n });\n entityMetadata.relationIds = this.metadataArgsStorage.filterRelationIds(entityMetadata.inheritanceTree).map(args => {\n\n // for single table children we reuse relation ids created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.relationIds.find(relationId => relationId.propertyName === args.propertyName)!;\n\n return new RelationIdMetadata({ entityMetadata, args });\n });\n entityMetadata.relationCounts = this.metadataArgsStorage.filterRelationCounts(entityMetadata.inheritanceTree).map(args => {\n\n // for single table children we reuse relation counts created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.relationCounts.find(relationCount => relationCount.propertyName === args.propertyName)!;\n\n return new RelationCountMetadata({ entityMetadata, args });\n });\n entityMetadata.ownListeners = this.metadataArgsStorage.filterListeners(entityMetadata.inheritanceTree).map(args => {\n return new EntityListenerMetadata({ entityMetadata: entityMetadata, args: args });\n });\n entityMetadata.checks = this.metadataArgsStorage.filterChecks(entityMetadata.inheritanceTree).map(args => {\n return new CheckMetadata({ entityMetadata, args });\n });\n\n // Only PostgreSQL supports exclusion constraints.\n if (this.connection.driver instanceof PostgresDriver) {\n entityMetadata.exclusions = this.metadataArgsStorage.filterExclusions(entityMetadata.inheritanceTree).map(args => {\n return new ExclusionMetadata({ entityMetadata, args });\n });\n }\n\n if (this.connection.driver instanceof CockroachDriver) {\n entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree)\n .filter(args => !args.unique)\n .map(args => {\n return new IndexMetadata({entityMetadata, args});\n });\n\n const uniques = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree)\n .filter(args => args.unique)\n .map(args => {\n return new UniqueMetadata({\n entityMetadata: entityMetadata,\n args: {\n target: args.target,\n name: args.name,\n columns: args.columns,\n }\n });\n });\n entityMetadata.ownUniques.push(...uniques);\n\n } else {\n entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree).map(args => {\n return new IndexMetadata({entityMetadata, args});\n });\n }\n\n // Mysql and SAP HANA stores unique constraints as unique indices.\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver || this.connection.driver instanceof SapDriver) {\n const indices = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).map(args => {\n return new IndexMetadata({\n entityMetadata: entityMetadata,\n args: {\n target: args.target,\n name: args.name,\n columns: args.columns,\n unique: true,\n synchronize: true\n }\n });\n });\n entityMetadata.ownIndices.push(...indices);\n\n } else {\n const uniques = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).map(args => {\n return new UniqueMetadata({ entityMetadata, args });\n });\n entityMetadata.ownUniques.push(...uniques);\n }\n }\n\n /**\n * Creates from the given embedded metadata args real embedded metadatas with its columns and relations,\n * and does the same for all its sub-embeddeds (goes recursively).\n */\n protected createEmbeddedsRecursively(entityMetadata: EntityMetadata, embeddedArgs: EmbeddedMetadataArgs[]): EmbeddedMetadata[] {\n return embeddedArgs.map(embeddedArgs => {\n const embeddedMetadata = new EmbeddedMetadata({ entityMetadata: entityMetadata, args: embeddedArgs });\n const targets = MetadataUtils.getInheritanceTree(embeddedMetadata.type);\n\n embeddedMetadata.columns = this.metadataArgsStorage.filterColumns(targets).map(args => {\n return new ColumnMetadata({ connection: this.connection, entityMetadata, embeddedMetadata, args});\n });\n embeddedMetadata.relations = this.metadataArgsStorage.filterRelations(targets).map(args => {\n return new RelationMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.listeners = this.metadataArgsStorage.filterListeners(targets).map(args => {\n return new EntityListenerMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.indices = this.metadataArgsStorage.filterIndices(targets).map(args => {\n return new IndexMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.uniques = this.metadataArgsStorage.filterUniques(targets).map(args => {\n return new UniqueMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.relationIds = this.metadataArgsStorage.filterRelationIds(targets).map(args => {\n return new RelationIdMetadata({ entityMetadata, args });\n });\n embeddedMetadata.relationCounts = this.metadataArgsStorage.filterRelationCounts(targets).map(args => {\n return new RelationCountMetadata({ entityMetadata, args });\n });\n embeddedMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(targets));\n embeddedMetadata.embeddeds.forEach(subEmbedded => subEmbedded.parentEmbeddedMetadata = embeddedMetadata);\n entityMetadata.allEmbeddeds.push(embeddedMetadata);\n return embeddedMetadata;\n });\n }\n\n /**\n * Computes all entity metadata's computed properties, and all its sub-metadatas (relations, columns, embeds, etc).\n */\n protected computeEntityMetadataStep2(entityMetadata: EntityMetadata) {\n entityMetadata.embeddeds.forEach(embedded => embedded.build(this.connection));\n entityMetadata.embeddeds.forEach(embedded => {\n embedded.columnsFromTree.forEach(column => column.build(this.connection));\n embedded.relationsFromTree.forEach(relation => relation.build());\n });\n entityMetadata.ownColumns.forEach(column => column.build(this.connection));\n entityMetadata.ownRelations.forEach(relation => relation.build());\n entityMetadata.relations = entityMetadata.embeddeds.reduce((relations, embedded) => relations.concat(embedded.relationsFromTree), entityMetadata.ownRelations);\n entityMetadata.eagerRelations = entityMetadata.relations.filter(relation => relation.isEager);\n entityMetadata.lazyRelations = entityMetadata.relations.filter(relation => relation.isLazy);\n entityMetadata.oneToOneRelations = entityMetadata.relations.filter(relation => relation.isOneToOne);\n entityMetadata.oneToManyRelations = entityMetadata.relations.filter(relation => relation.isOneToMany);\n entityMetadata.manyToOneRelations = entityMetadata.relations.filter(relation => relation.isManyToOne);\n entityMetadata.manyToManyRelations = entityMetadata.relations.filter(relation => relation.isManyToMany);\n entityMetadata.ownerOneToOneRelations = entityMetadata.relations.filter(relation => relation.isOneToOneOwner);\n entityMetadata.ownerManyToManyRelations = entityMetadata.relations.filter(relation => relation.isManyToManyOwner);\n entityMetadata.treeParentRelation = entityMetadata.relations.find(relation => relation.isTreeParent);\n entityMetadata.treeChildrenRelation = entityMetadata.relations.find(relation => relation.isTreeChildren);\n entityMetadata.columns = entityMetadata.embeddeds.reduce((columns, embedded) => columns.concat(embedded.columnsFromTree), entityMetadata.ownColumns);\n entityMetadata.listeners = entityMetadata.embeddeds.reduce((listeners, embedded) => listeners.concat(embedded.listenersFromTree), entityMetadata.ownListeners);\n entityMetadata.afterLoadListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_LOAD);\n entityMetadata.afterInsertListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_INSERT);\n entityMetadata.afterUpdateListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_UPDATE);\n entityMetadata.afterRemoveListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_REMOVE);\n entityMetadata.afterSoftRemoveListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_SOFT_REMOVE);\n entityMetadata.afterRecoverListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_RECOVER);\n entityMetadata.beforeInsertListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_INSERT);\n entityMetadata.beforeUpdateListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_UPDATE);\n entityMetadata.beforeRemoveListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_REMOVE);\n entityMetadata.beforeSoftRemoveListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_SOFT_REMOVE);\n entityMetadata.beforeRecoverListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_RECOVER);\n entityMetadata.indices = entityMetadata.embeddeds.reduce((indices, embedded) => indices.concat(embedded.indicesFromTree), entityMetadata.ownIndices);\n entityMetadata.uniques = entityMetadata.embeddeds.reduce((uniques, embedded) => uniques.concat(embedded.uniquesFromTree), entityMetadata.ownUniques);\n entityMetadata.primaryColumns = entityMetadata.columns.filter(column => column.isPrimary);\n entityMetadata.nonVirtualColumns = entityMetadata.columns.filter(column => !column.isVirtual);\n entityMetadata.ancestorColumns = entityMetadata.columns.filter(column => column.closureType === \"ancestor\");\n entityMetadata.descendantColumns = entityMetadata.columns.filter(column => column.closureType === \"descendant\");\n entityMetadata.hasMultiplePrimaryKeys = entityMetadata.primaryColumns.length > 1;\n entityMetadata.generatedColumns = entityMetadata.columns.filter(column => column.isGenerated || column.isObjectId);\n entityMetadata.hasUUIDGeneratedColumns = entityMetadata.columns.filter(column => column.isGenerated || column.generationStrategy === \"uuid\").length > 0;\n entityMetadata.createDateColumn = entityMetadata.columns.find(column => column.isCreateDate);\n entityMetadata.updateDateColumn = entityMetadata.columns.find(column => column.isUpdateDate);\n entityMetadata.deleteDateColumn = entityMetadata.columns.find(column => column.isDeleteDate);\n entityMetadata.versionColumn = entityMetadata.columns.find(column => column.isVersion);\n entityMetadata.discriminatorColumn = entityMetadata.columns.find(column => column.isDiscriminator);\n entityMetadata.treeLevelColumn = entityMetadata.columns.find(column => column.isTreeLevel);\n entityMetadata.nestedSetLeftColumn = entityMetadata.columns.find(column => column.isNestedSetLeft);\n entityMetadata.nestedSetRightColumn = entityMetadata.columns.find(column => column.isNestedSetRight);\n entityMetadata.materializedPathColumn = entityMetadata.columns.find(column => column.isMaterializedPath);\n entityMetadata.objectIdColumn = entityMetadata.columns.find(column => column.isObjectId);\n entityMetadata.foreignKeys.forEach(foreignKey => foreignKey.build(this.connection.namingStrategy));\n entityMetadata.propertiesMap = entityMetadata.createPropertiesMap();\n entityMetadata.relationIds.forEach(relationId => relationId.build());\n entityMetadata.relationCounts.forEach(relationCount => relationCount.build());\n entityMetadata.embeddeds.forEach(embedded => {\n embedded.relationIdsFromTree.forEach(relationId => relationId.build());\n embedded.relationCountsFromTree.forEach(relationCount => relationCount.build());\n });\n }\n\n /**\n * Computes entity metadata's relations inverse side properties.\n */\n protected computeInverseProperties(entityMetadata: EntityMetadata, entityMetadatas: EntityMetadata[]) {\n entityMetadata.relations.forEach(relation => {\n\n // compute inverse side (related) entity metadatas for all relation metadatas\n const inverseEntityMetadata = entityMetadatas.find(m => m.target === relation.type || (typeof relation.type === \"string\" && (m.targetName === relation.type || m.givenTableName === relation.type)));\n if (!inverseEntityMetadata)\n throw new TypeORMError(\"Entity metadata for \" + entityMetadata.name + \"#\" + relation.propertyPath + \" was not found. Check if you specified a correct entity object and if it's connected in the connection options.\");\n\n relation.inverseEntityMetadata = inverseEntityMetadata;\n relation.inverseSidePropertyPath = relation.buildInverseSidePropertyPath();\n\n // and compute inverse relation and mark if it has such\n relation.inverseRelation = inverseEntityMetadata.relations.find(foundRelation => foundRelation.propertyPath === relation.inverseSidePropertyPath);\n });\n }\n\n /**\n * Creates indices for the table of single table inheritance.\n */\n protected createKeysForTableInheritance(entityMetadata: EntityMetadata) {\n entityMetadata.indices.push(\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: [entityMetadata.discriminatorColumn!],\n args: {\n target: entityMetadata.target,\n unique: false\n }\n }),\n );\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/metadata-builder/EntityMetadataBuilder.ts"],"names":[],"mappings":"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","file":"EntityMetadataBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {SapDriver} from \"../driver/sap/SapDriver\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {ColumnMetadata} from \"../metadata/ColumnMetadata\";\nimport {IndexMetadata} from \"../metadata/IndexMetadata\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\nimport {EmbeddedMetadata} from \"../metadata/EmbeddedMetadata\";\nimport {MetadataArgsStorage} from \"../metadata-args/MetadataArgsStorage\";\nimport {EmbeddedMetadataArgs} from \"../metadata-args/EmbeddedMetadataArgs\";\nimport {RelationIdMetadata} from \"../metadata/RelationIdMetadata\";\nimport {RelationCountMetadata} from \"../metadata/RelationCountMetadata\";\nimport { EventListenerTypes } from \"../metadata/types/EventListenerTypes\";\nimport {MetadataUtils} from \"./MetadataUtils\";\nimport {TableMetadataArgs} from \"../metadata-args/TableMetadataArgs\";\nimport {JunctionEntityMetadataBuilder} from \"./JunctionEntityMetadataBuilder\";\nimport {ClosureJunctionEntityMetadataBuilder} from \"./ClosureJunctionEntityMetadataBuilder\";\nimport {RelationJoinColumnBuilder} from \"./RelationJoinColumnBuilder\";\nimport {Connection} from \"../connection/Connection\";\nimport {EntityListenerMetadata} from \"../metadata/EntityListenerMetadata\";\nimport {UniqueMetadata} from \"../metadata/UniqueMetadata\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {CheckMetadata} from \"../metadata/CheckMetadata\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {ExclusionMetadata} from \"../metadata/ExclusionMetadata\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport { TypeORMError } from \"../error\";\n\n/**\n * Builds EntityMetadata objects and all its sub-metadatas.\n */\nexport class EntityMetadataBuilder {\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Used to build entity metadatas of the junction entities.\n */\n protected junctionEntityMetadataBuilder: JunctionEntityMetadataBuilder;\n\n /**\n * Used to build entity metadatas of the closure junction entities.\n */\n protected closureJunctionEntityMetadataBuilder: ClosureJunctionEntityMetadataBuilder;\n\n /**\n * Used to build join columns of the relations.\n */\n protected relationJoinColumnBuilder: RelationJoinColumnBuilder;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: Connection,\n private metadataArgsStorage: MetadataArgsStorage) {\n\n this.junctionEntityMetadataBuilder = new JunctionEntityMetadataBuilder(connection);\n this.closureJunctionEntityMetadataBuilder = new ClosureJunctionEntityMetadataBuilder(connection);\n this.relationJoinColumnBuilder = new RelationJoinColumnBuilder(connection);\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Builds a complete entity metadatas for the given entity classes.\n */\n build(entityClasses?: Function[]): EntityMetadata[] {\n\n // if entity classes to filter entities by are given then do filtering, otherwise use all\n const allTables = entityClasses ? this.metadataArgsStorage.filterTables(entityClasses) : this.metadataArgsStorage.tables;\n\n // filter out table metadata args for those we really create entity metadatas and tables in the db\n const realTables = allTables.filter(table => table.type === \"regular\" || table.type === \"closure\" || table.type === \"entity-child\" || table.type === \"view\");\n\n // create entity metadatas for a user defined entities (marked with @Entity decorator or loaded from entity schemas)\n const entityMetadatas = realTables.map(tableArgs => this.createEntityMetadata(tableArgs));\n\n // compute parent entity metadatas for table inheritance\n entityMetadatas.forEach(entityMetadata => this.computeParentEntityMetadata(entityMetadatas, entityMetadata));\n\n // after all metadatas created we set child entity metadatas for table inheritance\n entityMetadatas.forEach(metadata => {\n metadata.childEntityMetadatas = entityMetadatas.filter(childMetadata => {\n return metadata.target instanceof Function\n && childMetadata.target instanceof Function\n && MetadataUtils.isInherited(childMetadata.target, metadata.target);\n });\n });\n\n // build entity metadata (step0), first for non-single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType !== \"entity-child\")\n .forEach(entityMetadata => entityMetadata.build());\n\n // build entity metadata (step0), now for single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType === \"entity-child\")\n .forEach(entityMetadata => entityMetadata.build());\n\n // compute entity metadata columns, relations, etc. first for the regular, non-single-table-inherited entity metadatas\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType !== \"entity-child\")\n .forEach(entityMetadata => this.computeEntityMetadataStep1(entityMetadatas, entityMetadata));\n\n // then do it for single table inheritance children (since they are depend on their parents to be built)\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType === \"entity-child\")\n .forEach(entityMetadata => this.computeEntityMetadataStep1(entityMetadatas, entityMetadata));\n\n // calculate entity metadata computed properties and all its sub-metadatas\n entityMetadatas.forEach(entityMetadata => this.computeEntityMetadataStep2(entityMetadata));\n\n // calculate entity metadata's inverse properties\n entityMetadatas.forEach(entityMetadata => this.computeInverseProperties(entityMetadata, entityMetadatas));\n\n // go through all entity metadatas and create foreign keys / junction entity metadatas for their relations\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType !== \"entity-child\")\n .forEach(entityMetadata => {\n\n // create entity's relations join columns (for many-to-one and one-to-one owner)\n entityMetadata.relations.filter(relation => relation.isOneToOne || relation.isManyToOne).forEach(relation => {\n const joinColumns = this.metadataArgsStorage.filterJoinColumns(relation.target, relation.propertyName);\n const { foreignKey, columns, uniqueConstraint } = this.relationJoinColumnBuilder.build(joinColumns, relation); // create a foreign key based on its metadata args\n if (foreignKey) {\n relation.registerForeignKeys(foreignKey); // push it to the relation and thus register there a join column\n entityMetadata.foreignKeys.push(foreignKey);\n }\n if (columns) {\n relation.registerJoinColumns(columns);\n }\n if (uniqueConstraint) {\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver\n || this.connection.driver instanceof SqlServerDriver || this.connection.driver instanceof SapDriver) {\n const index = new IndexMetadata({\n entityMetadata: uniqueConstraint.entityMetadata,\n columns: uniqueConstraint.columns,\n args: {\n target: uniqueConstraint.target!,\n name: uniqueConstraint.name,\n unique: true,\n synchronize: true\n }\n });\n\n if (this.connection.driver instanceof SqlServerDriver) {\n index.where = index.columns.map(column => {\n return `${this.connection.driver.escape(column.databaseName)} IS NOT NULL`;\n }).join(\" AND \");\n }\n\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.indices.push(index);\n } else {\n relation.entityMetadata.ownIndices.push(index);\n }\n this.computeEntityMetadataStep2(entityMetadata);\n\n } else {\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.uniques.push(uniqueConstraint);\n } else {\n relation.entityMetadata.ownUniques.push(uniqueConstraint);\n }\n this.computeEntityMetadataStep2(entityMetadata);\n }\n }\n\n if (foreignKey && this.connection.driver instanceof CockroachDriver) {\n const index = new IndexMetadata({\n entityMetadata: relation.entityMetadata,\n columns: foreignKey.columns,\n args: {\n target: relation.entityMetadata.target!,\n synchronize: true\n }\n });\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.indices.push(index);\n } else {\n relation.entityMetadata.ownIndices.push(index);\n }\n this.computeEntityMetadataStep2(entityMetadata);\n }\n });\n\n // create junction entity metadatas for entity many-to-many relations\n entityMetadata.relations.filter(relation => relation.isManyToMany).forEach(relation => {\n const joinTable = this.metadataArgsStorage.findJoinTable(relation.target, relation.propertyName)!;\n if (!joinTable) return; // no join table set - no need to do anything (it means this is many-to-many inverse side)\n\n // here we create a junction entity metadata for a new junction table of many-to-many relation\n const junctionEntityMetadata = this.junctionEntityMetadataBuilder.build(relation, joinTable);\n relation.registerForeignKeys(...junctionEntityMetadata.foreignKeys);\n relation.registerJoinColumns(\n junctionEntityMetadata.ownIndices[0].columns,\n junctionEntityMetadata.ownIndices[1].columns\n );\n relation.registerJunctionEntityMetadata(junctionEntityMetadata);\n\n // compute new entity metadata properties and push it to entity metadatas pool\n this.computeEntityMetadataStep2(junctionEntityMetadata);\n this.computeInverseProperties(junctionEntityMetadata, entityMetadatas);\n entityMetadatas.push(junctionEntityMetadata);\n });\n\n });\n\n // update entity metadata depend properties\n entityMetadatas\n .forEach(entityMetadata => {\n entityMetadata.relationsWithJoinColumns = entityMetadata.relations.filter(relation => relation.isWithJoinColumn);\n entityMetadata.hasNonNullableRelations = entityMetadata.relationsWithJoinColumns.some(relation => !relation.isNullable || relation.isPrimary);\n });\n\n // generate closure junction tables for all closure tables\n entityMetadatas\n .filter(metadata => metadata.treeType === \"closure-table\")\n .forEach(entityMetadata => {\n const closureJunctionEntityMetadata = this.closureJunctionEntityMetadataBuilder.build(entityMetadata);\n entityMetadata.closureJunctionTable = closureJunctionEntityMetadata;\n this.computeEntityMetadataStep2(closureJunctionEntityMetadata);\n this.computeInverseProperties(closureJunctionEntityMetadata, entityMetadatas);\n entityMetadatas.push(closureJunctionEntityMetadata);\n });\n\n // generate keys for tables with single-table inheritance\n entityMetadatas\n .filter(metadata => metadata.inheritancePattern === \"STI\" && metadata.discriminatorColumn)\n .forEach(entityMetadata => this.createKeysForTableInheritance(entityMetadata));\n\n // build all indices (need to do it after relations and their join columns are built)\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.indices.forEach(index => index.build(this.connection.namingStrategy));\n });\n\n // build all unique constraints (need to do it after relations and their join columns are built)\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.uniques.forEach(unique => unique.build(this.connection.namingStrategy));\n });\n\n // build all check constraints\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.checks.forEach(check => check.build(this.connection.namingStrategy));\n });\n\n // build all exclusion constraints\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.exclusions.forEach(exclusion => exclusion.build(this.connection.namingStrategy));\n });\n\n // add lazy initializer for entity relations\n entityMetadatas\n .filter(metadata => metadata.target instanceof Function)\n .forEach(entityMetadata => {\n entityMetadata.relations\n .filter(relation => relation.isLazy)\n .forEach(relation => {\n this.connection.relationLoader.enableLazyLoad(relation, (entityMetadata.target as Function).prototype);\n });\n });\n\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.columns.forEach(column => {\n // const target = column.embeddedMetadata ? column.embeddedMetadata.type : column.target;\n const generated = this.metadataArgsStorage.findGenerated(column.target, column.propertyName);\n if (generated) {\n column.isGenerated = true;\n column.generationStrategy = generated.strategy;\n if (generated.strategy === \"uuid\") {\n column.type = \"uuid\";\n } else if (generated.strategy === \"rowid\") {\n column.type = \"int\";\n } else {\n column.type = column.type || Number;\n }\n column.build(this.connection);\n this.computeEntityMetadataStep2(entityMetadata);\n }\n });\n\n });\n\n return entityMetadatas;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates entity metadata from the given table args.\n * Creates column, relation, etc. metadatas for everything this entity metadata owns.\n */\n protected createEntityMetadata(tableArgs: TableMetadataArgs): EntityMetadata {\n\n // we take all \"inheritance tree\" from a target entity to collect all stored metadata args\n // (by decorators or inside entity schemas). For example for target Post < ContentModel < Unit\n // it will be an array of [Post, ContentModel, Unit] and we can then get all metadata args of those classes\n const inheritanceTree: any[] = tableArgs.target instanceof Function\n ? MetadataUtils.getInheritanceTree(tableArgs.target)\n : [tableArgs.target]; // todo: implement later here inheritance for string-targets\n\n const tableInheritance = this.metadataArgsStorage.findInheritanceType(tableArgs.target);\n const tableTree = this.metadataArgsStorage.findTree(tableArgs.target);\n\n // if single table inheritance used, we need to copy all children columns in to parent table\n let singleTableChildrenTargets: any[];\n if ((tableInheritance && tableInheritance.pattern === \"STI\") || tableArgs.type === \"entity-child\") {\n singleTableChildrenTargets = this.metadataArgsStorage\n .filterSingleTableChildren(tableArgs.target)\n .map(args => args.target)\n .filter(target => target instanceof Function);\n\n inheritanceTree.push(...singleTableChildrenTargets);\n }\n\n return new EntityMetadata({\n connection: this.connection,\n args: tableArgs,\n inheritanceTree: inheritanceTree,\n tableTree: tableTree,\n inheritancePattern: tableInheritance ? tableInheritance.pattern : undefined\n });\n }\n\n protected computeParentEntityMetadata(allEntityMetadatas: EntityMetadata[], entityMetadata: EntityMetadata) {\n\n // after all metadatas created we set parent entity metadata for table inheritance\n if (entityMetadata.tableType === \"entity-child\") {\n entityMetadata.parentEntityMetadata = allEntityMetadatas.find(allEntityMetadata => {\n return allEntityMetadata.inheritanceTree.indexOf(entityMetadata.target as Function) !== -1 && allEntityMetadata.inheritancePattern === \"STI\";\n })!;\n }\n }\n\n protected computeEntityMetadataStep1(allEntityMetadatas: EntityMetadata[], entityMetadata: EntityMetadata) {\n\n const entityInheritance = this.metadataArgsStorage.findInheritanceType(entityMetadata.target);\n\n const discriminatorValue = this.metadataArgsStorage.findDiscriminatorValue(entityMetadata.target);\n\n if (typeof discriminatorValue !== \"undefined\") {\n entityMetadata.discriminatorValue = discriminatorValue.value;\n } else {\n entityMetadata.discriminatorValue = (entityMetadata.target as any).name;\n }\n\n // if single table inheritance is used, we need to mark all embedded columns as nullable\n entityMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(entityMetadata.inheritanceTree))\n .map((embedded: EmbeddedMetadata): EmbeddedMetadata => {\n if (entityMetadata.inheritancePattern === \"STI\") {\n embedded.columns = embedded.columns.map((column: ColumnMetadata): ColumnMetadata => {\n column.isNullable = true;\n return column;\n });\n }\n return embedded;\n });\n\n entityMetadata.ownColumns = this.metadataArgsStorage\n .filterColumns(entityMetadata.inheritanceTree)\n .map(args => {\n\n // for single table children we reuse columns created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.ownColumns.find(column => column.propertyName === args.propertyName)!;\n\n const column = new ColumnMetadata({ connection: this.connection, entityMetadata, args });\n\n // if single table inheritance used, we need to mark all inherit table columns as nullable\n const columnInSingleTableInheritedChild = allEntityMetadatas.find(otherEntityMetadata => otherEntityMetadata.tableType === \"entity-child\" && otherEntityMetadata.target === args.target);\n if (columnInSingleTableInheritedChild)\n column.isNullable = true;\n return column;\n });\n\n // for table inheritance we need to add a discriminator column\n //\n if (entityInheritance && entityInheritance.column) {\n const discriminatorColumnName = entityInheritance.column && entityInheritance.column.name ? entityInheritance.column.name : \"type\";\n let discriminatorColumn = entityMetadata.ownColumns.find(column => column.propertyName === discriminatorColumnName);\n if (!discriminatorColumn) {\n discriminatorColumn = new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: discriminatorColumnName,\n options: entityInheritance.column || {\n name: discriminatorColumnName,\n type: \"varchar\",\n nullable: false\n }\n }\n });\n discriminatorColumn.isVirtual = true;\n discriminatorColumn.isDiscriminator = true;\n entityMetadata.ownColumns.push(discriminatorColumn);\n } else {\n discriminatorColumn.isDiscriminator = true;\n }\n }\n\n // add discriminator column to the child entity metadatas\n // discriminator column will not be there automatically since we are creating it in the code above\n if (entityMetadata.tableType === \"entity-child\") {\n const discriminatorColumn = entityMetadata.parentEntityMetadata.ownColumns.find(column => column.isDiscriminator);\n if (discriminatorColumn && !entityMetadata.ownColumns.find(column => column === discriminatorColumn)) {\n entityMetadata.ownColumns.push(discriminatorColumn);\n }\n }\n\n const { namingStrategy } = this.connection;\n\n // check if tree is used then we need to add extra columns for specific tree types\n if (entityMetadata.treeType === \"materialized-path\") {\n entityMetadata.ownColumns.push(new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n materializedPath: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: \"mpath\",\n options: /*tree.column || */ {\n name: namingStrategy.materializedPathColumnName,\n type: \"varchar\",\n nullable: true,\n default: \"\"\n }\n }\n }));\n\n } else if (entityMetadata.treeType === \"nested-set\") {\n const { left, right } = namingStrategy.nestedSetColumnNames;\n entityMetadata.ownColumns.push(new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n nestedSetLeft: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: left,\n options: /*tree.column || */ {\n name: left,\n type: \"integer\",\n nullable: false,\n default: 1\n }\n }\n }));\n entityMetadata.ownColumns.push(new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n nestedSetRight: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: right,\n options: /*tree.column || */ {\n name: right,\n type: \"integer\",\n nullable: false,\n default: 2\n }\n }\n }));\n }\n\n entityMetadata.ownRelations = this.metadataArgsStorage.filterRelations(entityMetadata.inheritanceTree).map(args => {\n\n // for single table children we reuse relations created for their parents\n if (entityMetadata.tableType === \"entity-child\") {\n const parentRelation = entityMetadata.parentEntityMetadata.ownRelations.find(relation => relation.propertyName === args.propertyName)!;\n const type = args.type instanceof Function ? (args.type as () => any)() : args.type;\n if (parentRelation.type !== type) {\n const clone = Object.create(parentRelation);\n clone.type = type;\n return clone;\n }\n\n return parentRelation;\n }\n\n return new RelationMetadata({ entityMetadata, args });\n });\n entityMetadata.relationIds = this.metadataArgsStorage.filterRelationIds(entityMetadata.inheritanceTree).map(args => {\n\n // for single table children we reuse relation ids created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.relationIds.find(relationId => relationId.propertyName === args.propertyName)!;\n\n return new RelationIdMetadata({ entityMetadata, args });\n });\n entityMetadata.relationCounts = this.metadataArgsStorage.filterRelationCounts(entityMetadata.inheritanceTree).map(args => {\n\n // for single table children we reuse relation counts created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.relationCounts.find(relationCount => relationCount.propertyName === args.propertyName)!;\n\n return new RelationCountMetadata({ entityMetadata, args });\n });\n entityMetadata.ownListeners = this.metadataArgsStorage.filterListeners(entityMetadata.inheritanceTree).map(args => {\n return new EntityListenerMetadata({ entityMetadata: entityMetadata, args: args });\n });\n entityMetadata.checks = this.metadataArgsStorage.filterChecks(entityMetadata.inheritanceTree).map(args => {\n return new CheckMetadata({ entityMetadata, args });\n });\n\n // Only PostgreSQL supports exclusion constraints.\n if (this.connection.driver instanceof PostgresDriver) {\n entityMetadata.exclusions = this.metadataArgsStorage.filterExclusions(entityMetadata.inheritanceTree).map(args => {\n return new ExclusionMetadata({ entityMetadata, args });\n });\n }\n\n if (this.connection.driver instanceof CockroachDriver) {\n entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree)\n .filter(args => !args.unique)\n .map(args => {\n return new IndexMetadata({entityMetadata, args});\n });\n\n const uniques = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree)\n .filter(args => args.unique)\n .map(args => {\n return new UniqueMetadata({\n entityMetadata: entityMetadata,\n args: {\n target: args.target,\n name: args.name,\n columns: args.columns,\n }\n });\n });\n entityMetadata.ownUniques.push(...uniques);\n\n } else {\n entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree).map(args => {\n return new IndexMetadata({entityMetadata, args});\n });\n }\n\n // Mysql and SAP HANA stores unique constraints as unique indices.\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver || this.connection.driver instanceof SapDriver) {\n const indices = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).map(args => {\n return new IndexMetadata({\n entityMetadata: entityMetadata,\n args: {\n target: args.target,\n name: args.name,\n columns: args.columns,\n unique: true,\n synchronize: true\n }\n });\n });\n entityMetadata.ownIndices.push(...indices);\n\n } else {\n const uniques = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).map(args => {\n return new UniqueMetadata({ entityMetadata, args });\n });\n entityMetadata.ownUniques.push(...uniques);\n }\n }\n\n /**\n * Creates from the given embedded metadata args real embedded metadatas with its columns and relations,\n * and does the same for all its sub-embeddeds (goes recursively).\n */\n protected createEmbeddedsRecursively(entityMetadata: EntityMetadata, embeddedArgs: EmbeddedMetadataArgs[]): EmbeddedMetadata[] {\n return embeddedArgs.map(embeddedArgs => {\n const embeddedMetadata = new EmbeddedMetadata({ entityMetadata: entityMetadata, args: embeddedArgs });\n const targets: any[] = embeddedMetadata.type instanceof Function\n ? MetadataUtils.getInheritanceTree(embeddedMetadata.type)\n : [embeddedMetadata.type]; // todo: implement later here inheritance for string-targets\n\n embeddedMetadata.columns = this.metadataArgsStorage.filterColumns(targets).map(args => {\n return new ColumnMetadata({ connection: this.connection, entityMetadata, embeddedMetadata, args});\n });\n embeddedMetadata.relations = this.metadataArgsStorage.filterRelations(targets).map(args => {\n return new RelationMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.listeners = this.metadataArgsStorage.filterListeners(targets).map(args => {\n return new EntityListenerMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.indices = this.metadataArgsStorage.filterIndices(targets).map(args => {\n return new IndexMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.uniques = this.metadataArgsStorage.filterUniques(targets).map(args => {\n return new UniqueMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.relationIds = this.metadataArgsStorage.filterRelationIds(targets).map(args => {\n return new RelationIdMetadata({ entityMetadata, args });\n });\n embeddedMetadata.relationCounts = this.metadataArgsStorage.filterRelationCounts(targets).map(args => {\n return new RelationCountMetadata({ entityMetadata, args });\n });\n embeddedMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(targets));\n embeddedMetadata.embeddeds.forEach(subEmbedded => subEmbedded.parentEmbeddedMetadata = embeddedMetadata);\n entityMetadata.allEmbeddeds.push(embeddedMetadata);\n return embeddedMetadata;\n });\n }\n\n /**\n * Computes all entity metadata's computed properties, and all its sub-metadatas (relations, columns, embeds, etc).\n */\n protected computeEntityMetadataStep2(entityMetadata: EntityMetadata) {\n entityMetadata.embeddeds.forEach(embedded => embedded.build(this.connection));\n entityMetadata.embeddeds.forEach(embedded => {\n embedded.columnsFromTree.forEach(column => column.build(this.connection));\n embedded.relationsFromTree.forEach(relation => relation.build());\n });\n entityMetadata.ownColumns.forEach(column => column.build(this.connection));\n entityMetadata.ownRelations.forEach(relation => relation.build());\n entityMetadata.relations = entityMetadata.embeddeds.reduce((relations, embedded) => relations.concat(embedded.relationsFromTree), entityMetadata.ownRelations);\n entityMetadata.eagerRelations = entityMetadata.relations.filter(relation => relation.isEager);\n entityMetadata.lazyRelations = entityMetadata.relations.filter(relation => relation.isLazy);\n entityMetadata.oneToOneRelations = entityMetadata.relations.filter(relation => relation.isOneToOne);\n entityMetadata.oneToManyRelations = entityMetadata.relations.filter(relation => relation.isOneToMany);\n entityMetadata.manyToOneRelations = entityMetadata.relations.filter(relation => relation.isManyToOne);\n entityMetadata.manyToManyRelations = entityMetadata.relations.filter(relation => relation.isManyToMany);\n entityMetadata.ownerOneToOneRelations = entityMetadata.relations.filter(relation => relation.isOneToOneOwner);\n entityMetadata.ownerManyToManyRelations = entityMetadata.relations.filter(relation => relation.isManyToManyOwner);\n entityMetadata.treeParentRelation = entityMetadata.relations.find(relation => relation.isTreeParent);\n entityMetadata.treeChildrenRelation = entityMetadata.relations.find(relation => relation.isTreeChildren);\n entityMetadata.columns = entityMetadata.embeddeds.reduce((columns, embedded) => columns.concat(embedded.columnsFromTree), entityMetadata.ownColumns);\n entityMetadata.listeners = entityMetadata.embeddeds.reduce((listeners, embedded) => listeners.concat(embedded.listenersFromTree), entityMetadata.ownListeners);\n entityMetadata.afterLoadListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_LOAD);\n entityMetadata.afterInsertListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_INSERT);\n entityMetadata.afterUpdateListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_UPDATE);\n entityMetadata.afterRemoveListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_REMOVE);\n entityMetadata.afterSoftRemoveListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_SOFT_REMOVE);\n entityMetadata.afterRecoverListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_RECOVER);\n entityMetadata.beforeInsertListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_INSERT);\n entityMetadata.beforeUpdateListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_UPDATE);\n entityMetadata.beforeRemoveListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_REMOVE);\n entityMetadata.beforeSoftRemoveListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_SOFT_REMOVE);\n entityMetadata.beforeRecoverListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_RECOVER);\n entityMetadata.indices = entityMetadata.embeddeds.reduce((indices, embedded) => indices.concat(embedded.indicesFromTree), entityMetadata.ownIndices);\n entityMetadata.uniques = entityMetadata.embeddeds.reduce((uniques, embedded) => uniques.concat(embedded.uniquesFromTree), entityMetadata.ownUniques);\n entityMetadata.primaryColumns = entityMetadata.columns.filter(column => column.isPrimary);\n entityMetadata.nonVirtualColumns = entityMetadata.columns.filter(column => !column.isVirtual);\n entityMetadata.ancestorColumns = entityMetadata.columns.filter(column => column.closureType === \"ancestor\");\n entityMetadata.descendantColumns = entityMetadata.columns.filter(column => column.closureType === \"descendant\");\n entityMetadata.hasMultiplePrimaryKeys = entityMetadata.primaryColumns.length > 1;\n entityMetadata.generatedColumns = entityMetadata.columns.filter(column => column.isGenerated || column.isObjectId);\n entityMetadata.hasUUIDGeneratedColumns = entityMetadata.columns.filter(column => column.isGenerated || column.generationStrategy === \"uuid\").length > 0;\n entityMetadata.createDateColumn = entityMetadata.columns.find(column => column.isCreateDate);\n entityMetadata.updateDateColumn = entityMetadata.columns.find(column => column.isUpdateDate);\n entityMetadata.deleteDateColumn = entityMetadata.columns.find(column => column.isDeleteDate);\n entityMetadata.versionColumn = entityMetadata.columns.find(column => column.isVersion);\n entityMetadata.discriminatorColumn = entityMetadata.columns.find(column => column.isDiscriminator);\n entityMetadata.treeLevelColumn = entityMetadata.columns.find(column => column.isTreeLevel);\n entityMetadata.nestedSetLeftColumn = entityMetadata.columns.find(column => column.isNestedSetLeft);\n entityMetadata.nestedSetRightColumn = entityMetadata.columns.find(column => column.isNestedSetRight);\n entityMetadata.materializedPathColumn = entityMetadata.columns.find(column => column.isMaterializedPath);\n entityMetadata.objectIdColumn = entityMetadata.columns.find(column => column.isObjectId);\n entityMetadata.foreignKeys.forEach(foreignKey => foreignKey.build(this.connection.namingStrategy));\n entityMetadata.propertiesMap = entityMetadata.createPropertiesMap();\n entityMetadata.relationIds.forEach(relationId => relationId.build());\n entityMetadata.relationCounts.forEach(relationCount => relationCount.build());\n entityMetadata.embeddeds.forEach(embedded => {\n embedded.relationIdsFromTree.forEach(relationId => relationId.build());\n embedded.relationCountsFromTree.forEach(relationCount => relationCount.build());\n });\n }\n\n /**\n * Computes entity metadata's relations inverse side properties.\n */\n protected computeInverseProperties(entityMetadata: EntityMetadata, entityMetadatas: EntityMetadata[]) {\n entityMetadata.relations.forEach(relation => {\n\n // compute inverse side (related) entity metadatas for all relation metadatas\n const inverseEntityMetadata = entityMetadatas.find(m => m.target === relation.type || (typeof relation.type === \"string\" && (m.targetName === relation.type || m.givenTableName === relation.type)));\n if (!inverseEntityMetadata)\n throw new TypeORMError(\"Entity metadata for \" + entityMetadata.name + \"#\" + relation.propertyPath + \" was not found. Check if you specified a correct entity object and if it's connected in the connection options.\");\n\n relation.inverseEntityMetadata = inverseEntityMetadata;\n relation.inverseSidePropertyPath = relation.buildInverseSidePropertyPath();\n\n // and compute inverse relation and mark if it has such\n relation.inverseRelation = inverseEntityMetadata.relations.find(foundRelation => foundRelation.propertyPath === relation.inverseSidePropertyPath);\n });\n }\n\n /**\n * Creates indices for the table of single table inheritance.\n */\n protected createKeysForTableInheritance(entityMetadata: EntityMetadata) {\n entityMetadata.indices.push(\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: [entityMetadata.discriminatorColumn!],\n args: {\n target: entityMetadata.target,\n unique: false\n }\n }),\n );\n }\n\n}\n"],"sourceRoot":".."}
package/cli.js CHANGED
File without changes
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/entity-schema/EntitySchemaColumnOptions.ts"],"names":[],"mappings":"","file":"EntitySchemaColumnOptions.js","sourcesContent":["import {ColumnType} from \"../driver/types/ColumnTypes\";\nimport {ValueTransformer} from \"../decorator/options/ValueTransformer\";\nimport {SpatialColumnOptions} from \"../decorator/options/SpatialColumnOptions\";\n\nexport interface EntitySchemaColumnOptions extends SpatialColumnOptions {\n\n /**\n * Indicates if this column is a primary column.\n */\n primary?: boolean;\n\n /**\n * Indicates if this column is of type ObjectID\n */\n objectId?: boolean;\n\n /**\n * Indicates if this column is a created date column.\n */\n createDate?: boolean;\n\n /**\n * Indicates if this column is an update date column.\n */\n updateDate?: boolean;\n\n /**\n * Indicates if this column is a delete date column.\n */\n deleteDate?: boolean;\n\n /**\n * Indicates if this column is a version column.\n */\n version?: boolean;\n\n /**\n * Indicates if this column is a treeChildrenCount column.\n */\n treeChildrenCount?: boolean;\n\n /**\n * Indicates if this column is a treeLevel column.\n */\n treeLevel?: boolean;\n\n /**\n * Column type. Must be one of the value from the ColumnTypes class.\n */\n type: ColumnType;\n\n /**\n * Column name in the database.\n */\n name?: string;\n\n /**\n * Column type's length. For example type = \"string\" and length = 100 means that ORM will create a column with\n * type varchar(100).\n */\n length?: string | number;\n\n /**\n * Column type's display width. Used only on some column types in MySQL.\n * For example, INT(4) specifies an INT with a display width of four digits.\n */\n width?: number;\n\n /**\n * Indicates if column's value can be set to NULL.\n */\n nullable?: boolean;\n\n /**\n * Indicates if column value is not updated by \"save\" operation.\n * It means you'll be able to write this value only when you first time insert the object.\n * Default value is \"false\".\n *\n * @deprecated Please use the `update` option instead. Careful, it takes\n * the opposite value to readonly.\n *\n */\n readonly?: boolean;\n\n /**\n * Indicates if column value is updated by \"save\" operation.\n * If false you'll be able to write this value only when you first time insert the object.\n * Default value is \"true\".\n */\n update?: boolean;\n\n /**\n * Indicates if column is always selected by QueryBuilder and find operations.\n * Default value is \"true\".\n */\n select?: boolean;\n\n /**\n * Indicates if column is inserted by default.\n * Default value is \"true\".\n */\n insert?: boolean;\n\n /**\n * Specifies if this column will use AUTO_INCREMENT or not (e.g. generated number).\n */\n generated?: true|\"increment\"|\"uuid\"|\"rowid\";\n\n /**\n * Specifies if column's value must be unique or not.\n */\n unique?: boolean;\n\n /**\n * Extra column definition. Should be used only in emergency situations. Note that if you'll use this property\n * auto schema generation will not work properly anymore. Avoid using it.\n */\n columnDefinition?: string;\n\n /**\n * Column comment.\n */\n comment?: string;\n\n /**\n * Default database value.\n */\n default?: any;\n\n /**\n * ON UPDATE trigger. Works only for MySQL.\n */\n onUpdate?: string;\n\n /**\n * The precision for a decimal (exact numeric) column (applies only for decimal column), which is the maximum\n * number of digits that are stored for the values.\n */\n precision?: number;\n\n /**\n * The scale for a decimal (exact numeric) column (applies only for decimal column), which represents the number\n * of digits to the right of the decimal point and must not be greater than precision.\n */\n scale?: number;\n\n /**\n * Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\n * If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column\n */\n zerofill?: boolean;\n\n /**\n * Puts UNSIGNED attribute on to numeric column. Works only for MySQL.\n */\n unsigned?: boolean;\n\n /**\n * Defines a column character set.\n * Not supported by all database types.\n */\n charset?: string;\n\n /**\n * Defines a column collation.\n */\n collation?: string;\n\n /**\n * Array of possible enumerated values.\n */\n enum?: any[]|Object;\n\n /**\n * Generated column expression. Supports only in MySQL.\n */\n asExpression?: string;\n\n /**\n * Generated column type. Supports only in MySQL.\n */\n generatedType?: \"VIRTUAL\"|\"STORED\";\n\n /**\n * Return type of HSTORE column.\n * Returns value as string or as object.\n */\n hstoreType?: \"object\"|\"string\";\n\n /**\n * Indicates if this column is an array.\n * Can be simply set to true or array length can be specified.\n * Supported only by postgres.\n */\n array?: boolean;\n\n /**\n * Specifies a value transformer that is to be used to (un)marshal\n * this column when reading or writing to the database.\n */\n transformer?: ValueTransformer|ValueTransformer[];\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/entity-schema/EntitySchemaColumnOptions.ts"],"names":[],"mappings":"","file":"EntitySchemaColumnOptions.js","sourcesContent":["import {ColumnType} from \"../driver/types/ColumnTypes\";\nimport {ValueTransformer} from \"../decorator/options/ValueTransformer\";\nimport {SpatialColumnOptions} from \"../decorator/options/SpatialColumnOptions\";\n\nexport interface EntitySchemaColumnOptions extends SpatialColumnOptions {\n\n /**\n * Indicates if this column is a primary column.\n */\n primary?: boolean;\n\n /**\n * Indicates if this column is of type ObjectID\n */\n objectId?: boolean;\n\n /**\n * Indicates if this column is a created date column.\n */\n createDate?: boolean;\n\n /**\n * Indicates if this column is an update date column.\n */\n updateDate?: boolean;\n\n /**\n * Indicates if this column is a delete date column.\n */\n deleteDate?: boolean;\n\n /**\n * Indicates if this column is a version column.\n */\n version?: boolean;\n\n /**\n * Indicates if this column is a treeChildrenCount column.\n */\n treeChildrenCount?: boolean;\n\n /**\n * Indicates if this column is a treeLevel column.\n */\n treeLevel?: boolean;\n\n /**\n * Column type. Must be one of the value from the ColumnTypes class.\n */\n type: ColumnType;\n\n /**\n * Column name in the database.\n */\n name?: string;\n\n /**\n * Column type's length. For example type = \"string\" and length = 100 means that ORM will create a column with\n * type varchar(100).\n */\n length?: string | number;\n\n /**\n * Column type's display width. Used only on some column types in MySQL.\n * For example, INT(4) specifies an INT with a display width of four digits.\n */\n width?: number;\n\n /**\n * Indicates if column's value can be set to NULL.\n */\n nullable?: boolean;\n\n /**\n * Indicates if column value is not updated by \"save\" operation.\n * It means you'll be able to write this value only when you first time insert the object.\n * Default value is \"false\".\n *\n * @deprecated Please use the `update` option instead. Careful, it takes\n * the opposite value to readonly.\n *\n */\n readonly?: boolean;\n\n /**\n * Indicates if column value is updated by \"save\" operation.\n * If false you'll be able to write this value only when you first time insert the object.\n * Default value is \"true\".\n */\n update?: boolean;\n\n /**\n * Indicates if column is always selected by QueryBuilder and find operations.\n * Default value is \"true\".\n */\n select?: boolean;\n\n /**\n * Indicates if column is inserted by default.\n * Default value is \"true\".\n */\n insert?: boolean;\n\n /**\n * Specifies if this column will use AUTO_INCREMENT or not (e.g. generated number).\n */\n generated?: true|\"increment\"|\"uuid\"|\"rowid\";\n\n /**\n * Specifies if column's value must be unique or not.\n */\n unique?: boolean;\n\n /**\n * Extra column definition. Should be used only in emergency situations. Note that if you'll use this property\n * auto schema generation will not work properly anymore. Avoid using it.\n */\n columnDefinition?: string;\n\n /**\n * Column comment.\n */\n comment?: string;\n\n /**\n * Default database value.\n */\n default?: any;\n\n /**\n * ON UPDATE trigger. Works only for MySQL.\n */\n onUpdate?: string;\n\n /**\n * The precision for a decimal (exact numeric) column (applies only for decimal column), which is the maximum\n * number of digits that are stored for the values.\n */\n precision?: number;\n\n /**\n * The scale for a decimal (exact numeric) column (applies only for decimal column), which represents the number\n * of digits to the right of the decimal point and must not be greater than precision.\n */\n scale?: number;\n\n /**\n * Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\n * If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column\n */\n zerofill?: boolean;\n\n /**\n * Puts UNSIGNED attribute on to numeric column. Works only for MySQL.\n */\n unsigned?: boolean;\n\n /**\n * Defines a column character set.\n * Not supported by all database types.\n */\n charset?: string;\n\n /**\n * Defines a column collation.\n */\n collation?: string;\n\n /**\n * Array of possible enumerated values.\n */\n enum?: any[]|Object;\n\n /**\n * Generated column expression. Supports only in MySQL.\n */\n asExpression?: string;\n\n /**\n * Generated column type. Supports only in MySQL.\n */\n generatedType?: \"VIRTUAL\"|\"STORED\";\n\n /**\n * Return type of HSTORE column.\n * Returns value as string or as object.\n */\n hstoreType?: \"object\"|\"string\";\n\n /**\n * Indicates if this column is an array.\n * Can be simply set to true or array length can be specified.\n * Supported only by postgres.\n */\n array?: boolean;\n\n /**\n * Specifies a value transformer that is to be used to (un)marshal\n * this column when reading or writing to the database.\n */\n transformer?: ValueTransformer|ValueTransformer[];\n}\n"],"sourceRoot":".."}
@@ -0,0 +1,18 @@
1
+ import { EntitySchema } from "./EntitySchema";
2
+ export declare class EntitySchemaEmbeddedColumnOptions {
3
+ /**
4
+ * Schema of embedded entity
5
+ */
6
+ schema: EntitySchema;
7
+ /**
8
+ * Embedded column prefix.
9
+ * If set to empty string or false, then prefix is not set at all.
10
+ */
11
+ prefix?: string | boolean;
12
+ /**
13
+ * Indicates if this embedded is in array mode.
14
+ *
15
+ * This option works only in mongodb.
16
+ */
17
+ array?: boolean;
18
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntitySchemaEmbeddedColumnOptions = void 0;
4
+ var EntitySchemaEmbeddedColumnOptions = /** @class */ (function () {
5
+ function EntitySchemaEmbeddedColumnOptions() {
6
+ }
7
+ return EntitySchemaEmbeddedColumnOptions;
8
+ }());
9
+ exports.EntitySchemaEmbeddedColumnOptions = EntitySchemaEmbeddedColumnOptions;
10
+
11
+ //# sourceMappingURL=EntitySchemaEmbeddedColumnOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/entity-schema/EntitySchemaEmbeddedColumnOptions.ts"],"names":[],"mappings":";;;AAEA;IAAA;IAkBA,CAAC;IAAD,wCAAC;AAAD,CAlBA,AAkBC,IAAA;AAlBY,8EAAiC","file":"EntitySchemaEmbeddedColumnOptions.js","sourcesContent":["import { EntitySchema } from \"./EntitySchema\";\n\nexport class EntitySchemaEmbeddedColumnOptions {\n /**\n * Schema of embedded entity\n */\n schema: EntitySchema;\n\n /**\n * Embedded column prefix.\n * If set to empty string or false, then prefix is not set at all.\n */\n prefix?: string | boolean;\n\n /**\n * Indicates if this embedded is in array mode.\n *\n * This option works only in mongodb.\n */\n array?: boolean;\n}\n"],"sourceRoot":".."}
@@ -0,0 +1,6 @@
1
+ import { TypeORMError } from "../error";
2
+ export declare class EntitySchemaEmbeddedError extends TypeORMError {
3
+ static createEntitySchemaIsRequiredException(field: string): EntitySchemaEmbeddedError;
4
+ static createTargetIsRequired(field: string): EntitySchemaEmbeddedError;
5
+ constructor(message: string);
6
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntitySchemaEmbeddedError = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var error_1 = require("../error");
6
+ var EntitySchemaEmbeddedError = /** @class */ (function (_super) {
7
+ (0, tslib_1.__extends)(EntitySchemaEmbeddedError, _super);
8
+ function EntitySchemaEmbeddedError(message) {
9
+ return _super.call(this, message) || this;
10
+ }
11
+ EntitySchemaEmbeddedError.createEntitySchemaIsRequiredException = function (field) {
12
+ return new EntitySchemaEmbeddedError("EntitySchema is required for " + field + " embedded field");
13
+ };
14
+ EntitySchemaEmbeddedError.createTargetIsRequired = function (field) {
15
+ return new EntitySchemaEmbeddedError("Target field is required for " + field + " embedded EntitySchema");
16
+ };
17
+ return EntitySchemaEmbeddedError;
18
+ }(error_1.TypeORMError));
19
+ exports.EntitySchemaEmbeddedError = EntitySchemaEmbeddedError;
20
+
21
+ //# sourceMappingURL=EntitySchemaEmbeddedError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/entity-schema/EntitySchemaEmbeddedError.ts"],"names":[],"mappings":";;;;AAAA,kCAAwC;AAExC;IAA+C,0DAAY;IASvD,mCAAY,OAAe;eACvB,kBAAM,OAAO,CAAC;IAClB,CAAC;IAVM,+DAAqC,GAA5C,UAA6C,KAAa;QACtD,OAAO,IAAI,yBAAyB,CAAC,kCAAgC,KAAK,oBAAiB,CAAC,CAAC;IACjG,CAAC;IAEM,gDAAsB,GAA7B,UAA8B,KAAa;QACvC,OAAO,IAAI,yBAAyB,CAAC,kCAAgC,KAAK,2BAAwB,CAAC,CAAC;IACxG,CAAC;IAKL,gCAAC;AAAD,CAZA,AAYC,CAZ8C,oBAAY,GAY1D;AAZY,8DAAyB","file":"EntitySchemaEmbeddedError.js","sourcesContent":["import { TypeORMError } from \"../error\";\n\nexport class EntitySchemaEmbeddedError extends TypeORMError {\n static createEntitySchemaIsRequiredException(field: string): EntitySchemaEmbeddedError {\n return new EntitySchemaEmbeddedError(`EntitySchema is required for ${field} embedded field`);\n }\n\n static createTargetIsRequired(field: string): EntitySchemaEmbeddedError {\n return new EntitySchemaEmbeddedError(`Target field is required for ${field} embedded EntitySchema`);\n }\n\n constructor(message: string) {\n super(message);\n }\n}\n"],"sourceRoot":".."}
@@ -1,4 +1,4 @@
1
- import { Connection, SelectQueryBuilder } from "..";
1
+ import { Connection, EntitySchemaEmbeddedColumnOptions, SelectQueryBuilder } from "..";
2
2
  import { EntitySchemaIndexOptions } from "./EntitySchemaIndexOptions";
3
3
  import { EntitySchemaColumnOptions } from "./EntitySchemaColumnOptions";
4
4
  import { EntitySchemaRelationOptions } from "./EntitySchemaRelationOptions";
@@ -71,6 +71,12 @@ export declare class EntitySchemaOptions<T> {
71
71
  * Entity exclusion options.
72
72
  */
73
73
  exclusions?: EntitySchemaExclusionOptions[];
74
+ /**
75
+ * Embedded Entities options
76
+ */
77
+ embeddeds?: {
78
+ [P in keyof Partial<T>]: EntitySchemaEmbeddedColumnOptions;
79
+ };
74
80
  /**
75
81
  * Indicates if schema synchronization is enabled or disabled for this entity.
76
82
  * If it will be set to false then schema sync will and migrations ignore this entity.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/entity-schema/EntitySchemaOptions.ts"],"names":[],"mappings":";;;AAUA;;GAEG;AACH;IAAA;IA+FA,CAAC;IAAD,0BAAC;AAAD,CA/FA,AA+FC,IAAA;AA/FY,kDAAmB","file":"EntitySchemaOptions.js","sourcesContent":["import {Connection, SelectQueryBuilder} from \"..\";\nimport {EntitySchemaIndexOptions} from \"./EntitySchemaIndexOptions\";\nimport {EntitySchemaColumnOptions} from \"./EntitySchemaColumnOptions\";\nimport {EntitySchemaRelationOptions} from \"./EntitySchemaRelationOptions\";\nimport {OrderByCondition} from \"../find-options/OrderByCondition\";\nimport {TableType} from \"../metadata/types/TableTypes\";\nimport {EntitySchemaUniqueOptions} from \"./EntitySchemaUniqueOptions\";\nimport {EntitySchemaCheckOptions} from \"./EntitySchemaCheckOptions\";\nimport {EntitySchemaExclusionOptions} from \"./EntitySchemaExclusionOptions\";\n\n/**\n * Interface for entity metadata mappings stored inside \"schemas\" instead of models decorated by decorators.\n */\nexport class EntitySchemaOptions<T> {\n\n /**\n * Name of the schema it extends.\n */\n extends?: string;\n\n /**\n * Target bind to this entity schema. Optional.\n */\n target?: Function;\n\n /**\n * Entity name.\n */\n name: string;\n\n /**\n * Table name.\n */\n tableName?: string;\n\n /**\n * Database name. Used in MySql and Sql Server.\n */\n database?: string;\n\n /**\n * Schema name. Used in Postgres and Sql Server.\n */\n schema?: string;\n\n /**\n * Table type.\n */\n type?: TableType;\n\n /**\n * Specifies a property name by which queries will perform ordering by default when fetching rows.\n */\n orderBy?: OrderByCondition;\n\n /**\n * Entity column's options.\n */\n columns: {\n [P in keyof T]?: EntitySchemaColumnOptions;\n };\n\n /**\n * Entity relation's options.\n */\n relations?: {\n [P in keyof T]?: EntitySchemaRelationOptions;\n };\n\n /**\n * Entity indices options.\n */\n indices?: EntitySchemaIndexOptions[];\n\n /**\n * Entity uniques options.\n */\n uniques?: EntitySchemaUniqueOptions[];\n\n /**\n * Entity check options.\n */\n checks?: EntitySchemaCheckOptions[];\n\n /**\n * Entity exclusion options.\n */\n exclusions?: EntitySchemaExclusionOptions[];\n\n /**\n * Indicates if schema synchronization is enabled or disabled for this entity.\n * If it will be set to false then schema sync will and migrations ignore this entity.\n * By default schema synchronization is enabled for all entities.\n */\n synchronize?: boolean;\n\n /**\n * If set to 'true' this option disables Sqlite's default behaviour of secretly creating\n * an integer primary key column named 'rowid' on table creation. \n * @see https://www.sqlite.org/withoutrowid.html. \n */\n withoutRowid?: boolean;\n\n /**\n * View expression.\n */\n expression?: string|((connection: Connection) => SelectQueryBuilder<any>);\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/entity-schema/EntitySchemaOptions.ts"],"names":[],"mappings":";;;AAUA;;GAEG;AACH;IAAA;IAsGA,CAAC;IAAD,0BAAC;AAAD,CAtGA,AAsGC,IAAA;AAtGY,kDAAmB","file":"EntitySchemaOptions.js","sourcesContent":["import {Connection, EntitySchemaEmbeddedColumnOptions, SelectQueryBuilder} from \"..\";\nimport {EntitySchemaIndexOptions} from \"./EntitySchemaIndexOptions\";\nimport {EntitySchemaColumnOptions} from \"./EntitySchemaColumnOptions\";\nimport {EntitySchemaRelationOptions} from \"./EntitySchemaRelationOptions\";\nimport {OrderByCondition} from \"../find-options/OrderByCondition\";\nimport {TableType} from \"../metadata/types/TableTypes\";\nimport {EntitySchemaUniqueOptions} from \"./EntitySchemaUniqueOptions\";\nimport {EntitySchemaCheckOptions} from \"./EntitySchemaCheckOptions\";\nimport {EntitySchemaExclusionOptions} from \"./EntitySchemaExclusionOptions\";\n\n/**\n * Interface for entity metadata mappings stored inside \"schemas\" instead of models decorated by decorators.\n */\nexport class EntitySchemaOptions<T> {\n\n /**\n * Name of the schema it extends.\n */\n extends?: string;\n\n /**\n * Target bind to this entity schema. Optional.\n */\n target?: Function;\n\n /**\n * Entity name.\n */\n name: string;\n\n /**\n * Table name.\n */\n tableName?: string;\n\n /**\n * Database name. Used in MySql and Sql Server.\n */\n database?: string;\n\n /**\n * Schema name. Used in Postgres and Sql Server.\n */\n schema?: string;\n\n /**\n * Table type.\n */\n type?: TableType;\n\n /**\n * Specifies a property name by which queries will perform ordering by default when fetching rows.\n */\n orderBy?: OrderByCondition;\n\n /**\n * Entity column's options.\n */\n columns: {\n [P in keyof T]?: EntitySchemaColumnOptions;\n };\n\n /**\n * Entity relation's options.\n */\n relations?: {\n [P in keyof T]?: EntitySchemaRelationOptions;\n };\n\n /**\n * Entity indices options.\n */\n indices?: EntitySchemaIndexOptions[];\n\n /**\n * Entity uniques options.\n */\n uniques?: EntitySchemaUniqueOptions[];\n\n /**\n * Entity check options.\n */\n checks?: EntitySchemaCheckOptions[];\n\n /**\n * Entity exclusion options.\n */\n exclusions?: EntitySchemaExclusionOptions[];\n\n /**\n * Embedded Entities options\n */\n embeddeds?: {\n [P in keyof Partial<T>]: EntitySchemaEmbeddedColumnOptions;\n };\n\n /**\n * Indicates if schema synchronization is enabled or disabled for this entity.\n * If it will be set to false then schema sync will and migrations ignore this entity.\n * By default schema synchronization is enabled for all entities.\n */\n synchronize?: boolean;\n\n /**\n * If set to 'true' this option disables Sqlite's default behaviour of secretly creating\n * an integer primary key column named 'rowid' on table creation.\n * @see https://www.sqlite.org/withoutrowid.html.\n */\n withoutRowid?: boolean;\n\n /**\n * View expression.\n */\n expression?: string|((connection: Connection) => SelectQueryBuilder<any>);\n\n}\n"],"sourceRoot":".."}
@@ -9,4 +9,5 @@ export declare class EntitySchemaTransformer {
9
9
  * Transforms entity schema into new metadata args storage object.
10
10
  */
11
11
  transform(schemas: EntitySchema<any>[]): MetadataArgsStorage;
12
+ private transformColumnsRecursive;
12
13
  }