333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../browser/src/schema-builder/RdbmsSchemaBuilder.ts"],"names":[],"mappings":"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","file":"RdbmsSchemaBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {PostgresConnectionOptions} from \"../driver/postgres/PostgresConnectionOptions\";\nimport {SqlServerConnectionOptions} from \"../driver/sqlserver/SqlServerConnectionOptions\";\nimport {Table} from \"./table/Table\";\nimport {TableColumn} from \"./table/TableColumn\";\nimport {TableForeignKey} from \"./table/TableForeignKey\";\nimport {TableIndex} from \"./table/TableIndex\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {ColumnMetadata} from \"../metadata/ColumnMetadata\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {PromiseUtils} from \"../util/PromiseUtils\";\nimport {Connection} from \"../connection/Connection\";\nimport {SchemaBuilder} from \"./SchemaBuilder\";\nimport {SqlInMemory} from \"../driver/SqlInMemory\";\nimport {TableUtils} from \"./util/TableUtils\";\nimport {TableColumnOptions} from \"./options/TableColumnOptions\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {TableUnique} from \"./table/TableUnique\";\nimport {TableCheck} from \"./table/TableCheck\";\nimport {TableExclusion} from \"./table/TableExclusion\";\nimport {View} from \"./view/View\";\n\n/**\n * Creates complete tables schemas in the database based on the entity metadatas.\n *\n * Steps how schema is being built:\n * 1. load list of all tables with complete column and keys information from the db\n * 2. drop all (old) foreign keys that exist in the table, but does not exist in the metadata\n * 3. create new tables that does not exist in the db, but exist in the metadata\n * 4. drop all columns exist (left old) in the db table, but does not exist in the metadata\n * 5. add columns from metadata which does not exist in the table\n * 6. update all exist columns which metadata has changed\n * 7. update primary keys - update old and create new primary key from changed columns\n * 8. create foreign keys which does not exist in the table yet\n * 9. create indices which are missing in db yet, and drops indices which exist in the db, but does not exist in the metadata anymore\n */\nexport class RdbmsSchemaBuilder implements SchemaBuilder {\n\n    // -------------------------------------------------------------------------\n    // Protected Properties\n    // -------------------------------------------------------------------------\n\n    /**\n     * Used to execute schema creation queries in a single connection.\n     */\n    protected queryRunner: QueryRunner;\n\n    // -------------------------------------------------------------------------\n    // Constructor\n    // -------------------------------------------------------------------------\n\n    constructor(protected connection: Connection) {\n    }\n\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Creates complete schemas for the given entity metadatas.\n     */\n    async build(): Promise<void> {\n        this.queryRunner = this.connection.createQueryRunner(\"master\");\n        // CockroachDB implements asynchronous schema sync operations which can not been executed in transaction.\n        // E.g. if you try to DROP column and ADD it again in the same transaction, crdb throws error.\n        if (!(this.connection.driver instanceof CockroachDriver))\n            await this.queryRunner.startTransaction();\n        try {\n            const tablePaths = this.entityToSyncMetadatas.map(metadata => metadata.tablePath);\n            // TODO: typeorm_metadata table needs only for Views for now.\n            //  Remove condition or add new conditions if necessary (for CHECK constraints for example).\n            if (this.viewEntityToSyncMetadatas.length > 0)\n                await this.createTypeormMetadataTable();\n            await this.queryRunner.getTables(tablePaths);\n            await this.queryRunner.getViews([]);\n            await this.executeSchemaSyncOperationsInProperOrder();\n\n            // if cache is enabled then perform cache-synchronization as well\n            if (this.connection.queryResultCache)\n                await this.connection.queryResultCache.synchronize(this.queryRunner);\n\n            if (!(this.connection.driver instanceof CockroachDriver))\n                await this.queryRunner.commitTransaction();\n\n        } catch (error) {\n\n            try { // we throw original error even if rollback thrown an error\n                if (!(this.connection.driver instanceof CockroachDriver))\n                    await this.queryRunner.rollbackTransaction();\n            } catch (rollbackError) { }\n            throw error;\n\n        } finally {\n            await this.queryRunner.release();\n        }\n    }\n\n    /**\n     * Returns sql queries to be executed by schema builder.\n     */\n    async log(): Promise<SqlInMemory> {\n        this.queryRunner = this.connection.createQueryRunner(\"master\");\n        try {\n            const tablePaths = this.entityToSyncMetadatas.map(metadata => metadata.tablePath);\n            await this.queryRunner.getTables(tablePaths);\n            await this.queryRunner.getViews([]);\n            this.queryRunner.enableSqlMemory();\n            await this.executeSchemaSyncOperationsInProperOrder();\n\n            // if cache is enabled then perform cache-synchronization as well\n            if (this.connection.queryResultCache) // todo: check this functionality\n                await this.connection.queryResultCache.synchronize(this.queryRunner);\n\n            return this.queryRunner.getMemorySql();\n\n        } finally {\n            // its important to disable this mode despite the fact we are release query builder\n            // because there exist drivers which reuse same query runner. Also its important to disable\n            // sql memory after call of getMemorySql() method because last one flushes sql memory.\n            this.queryRunner.disableSqlMemory();\n            await this.queryRunner.release();\n        }\n    }\n\n    // -------------------------------------------------------------------------\n    // Protected Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Returns only entities that should be synced in the database.\n     */\n    protected get entityToSyncMetadatas(): EntityMetadata[] {\n        return this.connection.entityMetadatas.filter(metadata => metadata.synchronize && metadata.tableType !== \"entity-child\" && metadata.tableType !== \"view\");\n    }\n\n    /**\n     * Returns only entities that should be synced in the database.\n     */\n    protected get viewEntityToSyncMetadatas(): EntityMetadata[] {\n        return this.connection.entityMetadatas.filter(metadata => metadata.tableType === \"view\");\n    }\n\n    /**\n     * Executes schema sync operations in a proper order.\n     * Order of operations matter here.\n     */\n    protected async executeSchemaSyncOperationsInProperOrder(): Promise<void> {\n        await this.dropOldViews();\n        await this.dropOldForeignKeys();\n        await this.dropOldIndices();\n        await this.dropOldChecks();\n        await this.dropOldExclusions();\n        await this.dropCompositeUniqueConstraints();\n        // await this.renameTables();\n        await this.renameColumns();\n        await this.createNewTables();\n        await this.dropRemovedColumns();\n        await this.addNewColumns();\n        await this.updatePrimaryKeys();\n        await this.updateExistColumns();\n        await this.createNewIndices();\n        await this.createNewChecks();\n        await this.createNewExclusions();\n        await this.createCompositeUniqueConstraints();\n        await this.createForeignKeys();\n        await this.createViews();\n    }\n\n    /**\n     * Drops all (old) foreign keys that exist in the tables, but do not exist in the entity metadata.\n     */\n    protected async dropOldForeignKeys(): Promise<void> {\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            // find foreign keys that exist in the schemas but does not exist in the entity metadata\n            const tableForeignKeysToDrop = table.foreignKeys.filter(tableForeignKey => {\n                const metadataFK = metadata.foreignKeys.find(metadataForeignKey => metadataForeignKey.name === tableForeignKey.name);\n                return !metadataFK\n                    || (metadataFK.onDelete && metadataFK.onDelete !== tableForeignKey.onDelete)\n                    || (metadataFK.onUpdate && metadataFK.onUpdate !== tableForeignKey.onUpdate);\n            });\n            if (tableForeignKeysToDrop.length === 0)\n                return;\n\n            this.connection.logger.logSchemaBuild(`dropping old foreign keys of ${table.name}: ${tableForeignKeysToDrop.map(dbForeignKey => dbForeignKey.name).join(\", \")}`);\n\n            // drop foreign keys from the database\n            await this.queryRunner.dropForeignKeys(table, tableForeignKeysToDrop);\n        });\n    }\n\n    /**\n     * Rename tables\n     */\n    protected async renameTables(): Promise<void> {\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            // const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n\n        });\n    }\n\n    /**\n     * Renames columns.\n     * Works if only one column per table was changed.\n     * Changes only column name. If something besides name was changed, these changes will be ignored.\n     */\n    protected async renameColumns(): Promise<void> {\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            if (metadata.columns.length !== table.columns.length)\n                return;\n\n            const renamedMetadataColumns = metadata.columns.filter(column => {\n                return !table.columns.find(tableColumn => {\n                    return tableColumn.name === column.databaseName\n                        && tableColumn.type === this.connection.driver.normalizeType(column)\n                        && tableColumn.isNullable === column.isNullable\n                        && tableColumn.isUnique === this.connection.driver.normalizeIsUnique(column);\n                });\n            });\n\n            if (renamedMetadataColumns.length === 0 || renamedMetadataColumns.length > 1)\n                return;\n\n            const renamedTableColumns = table.columns.filter(tableColumn => {\n                return !metadata.columns.find(column => {\n                    return column.databaseName === tableColumn.name\n                        && this.connection.driver.normalizeType(column) === tableColumn.type\n                        && column.isNullable === tableColumn.isNullable\n                        && this.connection.driver.normalizeIsUnique(column) === tableColumn.isUnique;\n                });\n            });\n\n            if (renamedTableColumns.length === 0 || renamedTableColumns.length > 1)\n                return;\n\n            const renamedColumn = renamedTableColumns[0].clone();\n            renamedColumn.name = renamedMetadataColumns[0].databaseName;\n\n            this.connection.logger.logSchemaBuild(`renaming column \"${renamedTableColumns[0].name}\" in to \"${renamedColumn.name}\"`);\n            await this.queryRunner.renameColumn(table, renamedTableColumns[0], renamedColumn);\n        });\n    }\n\n    protected async dropOldIndices(): Promise<void> {\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            const dropQueries = table.indices\n                .filter(tableIndex => {\n                    const indexMetadata = metadata.indices.find(index => index.name === tableIndex.name);\n                    if (indexMetadata) {\n                        if (indexMetadata.synchronize === false)\n                            return false;\n\n                        if (indexMetadata.isUnique !== tableIndex.isUnique)\n                            return true;\n\n                        if (indexMetadata.isSpatial !== tableIndex.isSpatial)\n                            return true;\n\n                        if (indexMetadata.isFulltext !== tableIndex.isFulltext)\n                            return true;\n\n                        if (indexMetadata.columns.length !== tableIndex.columnNames.length)\n                            return true;\n\n                        return !indexMetadata.columns.every(column => tableIndex.columnNames.indexOf(column.databaseName) !== -1);\n                    }\n\n                    return true;\n                })\n                .map(async tableIndex => {\n                    this.connection.logger.logSchemaBuild(`dropping an index: \"${tableIndex.name}\" from table ${table.name}`);\n                    await this.queryRunner.dropIndex(table, tableIndex);\n                });\n\n            await Promise.all(dropQueries);\n        });\n    }\n\n    protected async dropOldChecks(): Promise<void> {\n        // Mysql does not support check constraints\n        if (this.connection.driver instanceof MysqlDriver)\n            return;\n\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            const oldChecks = table.checks.filter(tableCheck => {\n                return !metadata.checks.find(checkMetadata => checkMetadata.name === tableCheck.name);\n            });\n\n            if (oldChecks.length === 0)\n                return;\n\n            this.connection.logger.logSchemaBuild(`dropping old check constraint: ${oldChecks.map(check => `\"${check.name}\"`).join(\", \")} from table \"${table.name}\"`);\n            await this.queryRunner.dropCheckConstraints(table, oldChecks);\n        });\n    }\n\n    protected async dropCompositeUniqueConstraints(): Promise<void> {\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            const compositeUniques = table.uniques.filter(tableUnique => {\n                return tableUnique.columnNames.length > 1 && !metadata.uniques.find(uniqueMetadata => uniqueMetadata.name === tableUnique.name);\n            });\n\n            if (compositeUniques.length === 0)\n                return;\n\n            this.connection.logger.logSchemaBuild(`dropping old unique constraint: ${compositeUniques.map(unique => `\"${unique.name}\"`).join(\", \")} from table \"${table.name}\"`);\n            await this.queryRunner.dropUniqueConstraints(table, compositeUniques);\n        });\n    }\n\n    protected async dropOldExclusions(): Promise<void> {\n        // Only PostgreSQL supports exclusion constraints\n        if (!(this.connection.driver instanceof PostgresDriver))\n            return;\n\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            const oldExclusions = table.exclusions.filter(tableExclusion => {\n                return !metadata.exclusions.find(exclusionMetadata => exclusionMetadata.name === tableExclusion.name);\n            });\n\n            if (oldExclusions.length === 0)\n                return;\n\n            this.connection.logger.logSchemaBuild(`dropping old exclusion constraint: ${oldExclusions.map(exclusion => `\"${exclusion.name}\"`).join(\", \")} from table \"${table.name}\"`);\n            await this.queryRunner.dropExclusionConstraints(table, oldExclusions);\n        });\n    }\n\n    /**\n     * Creates tables that do not exist in the database yet.\n     * New tables are created without foreign and primary keys.\n     * Primary key only can be created in conclusion with auto generated column.\n     */\n    protected async createNewTables(): Promise<void> {\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            // check if table does not exist yet\n            const existTable = this.queryRunner.loadedTables.find(table => {\n                const database = metadata.database && metadata.database !== this.connection.driver.database ? metadata.database : undefined;\n                const schema = metadata.schema || (<SqlServerDriver|PostgresDriver>this.connection.driver).options.schema;\n                const fullTableName = this.connection.driver.buildTableName(metadata.tableName, schema, database);\n\n                return table.name === fullTableName;\n            });\n            if (existTable)\n                return;\n\n            this.connection.logger.logSchemaBuild(`creating a new table: ${metadata.tablePath}`);\n\n            // create a new table and sync it in the database\n            const table = Table.create(metadata, this.connection.driver);\n            await this.queryRunner.createTable(table, false, false);\n            this.queryRunner.loadedTables.push(table);\n        });\n    }\n\n    protected async createViews(): Promise<void> {\n        await PromiseUtils.runInSequence(this.viewEntityToSyncMetadatas, async metadata => {\n            // check if view does not exist yet\n            const existView = this.queryRunner.loadedViews.find(view => {\n                const database = metadata.database && metadata.database !== this.connection.driver.database ? metadata.database : undefined;\n                const schema = metadata.schema || (<SqlServerDriver|PostgresDriver>this.connection.driver).options.schema;\n                const fullViewName = this.connection.driver.buildTableName(metadata.tableName, schema, database);\n                const viewExpression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(this.connection).getQuery();\n                const metadataExpression = typeof metadata.expression === \"string\" ? metadata.expression.trim() : metadata.expression!(this.connection).getQuery();\n                return view.name === fullViewName && viewExpression === metadataExpression;\n            });\n            if (existView)\n                return;\n\n            this.connection.logger.logSchemaBuild(`creating a new view: ${metadata.tablePath}`);\n\n            // create a new view and sync it in the database\n            const view = View.create(metadata, this.connection.driver);\n            await this.queryRunner.createView(view);\n            this.queryRunner.loadedViews.push(view);\n        });\n    }\n\n    protected async dropOldViews(): Promise<void> {\n        await PromiseUtils.runInSequence(this.queryRunner.loadedViews, async view => {\n            const existViewMetadata = this.viewEntityToSyncMetadatas.find(metadata => {\n                const database = metadata.database && metadata.database !== this.connection.driver.database ? metadata.database : undefined;\n                const schema = metadata.schema || (<SqlServerDriver|PostgresDriver>this.connection.driver).options.schema;\n                const fullViewName = this.connection.driver.buildTableName(metadata.tableName, schema, database);\n                const viewExpression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(this.connection).getQuery();\n                const metadataExpression = typeof metadata.expression === \"string\" ? metadata.expression.trim() : metadata.expression!(this.connection).getQuery();\n                return view.name === fullViewName && viewExpression === metadataExpression;\n            });\n\n            if (existViewMetadata)\n                return;\n\n            this.connection.logger.logSchemaBuild(`dropping an old view: ${view.name}`);\n\n            // drop an old view\n            await this.queryRunner.dropView(view);\n            this.queryRunner.loadedViews.splice(this.queryRunner.loadedViews.indexOf(view), 1);\n        });\n    }\n\n    /**\n     * Drops all columns that exist in the table, but does not exist in the metadata (left old).\n     * We drop their keys too, since it should be safe.\n     */\n    protected async dropRemovedColumns(): Promise<void> {\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table) return;\n\n            // find columns that exist in the database but does not exist in the metadata\n            const droppedTableColumns = table.columns.filter(tableColumn => {\n                return !metadata.columns.find(columnMetadata => columnMetadata.databaseName === tableColumn.name);\n            });\n            if (droppedTableColumns.length === 0)\n                return;\n\n            this.connection.logger.logSchemaBuild(`columns dropped in ${table.name}: ` + droppedTableColumns.map(column => column.name).join(\", \"));\n\n            // drop columns from the database\n            await this.queryRunner.dropColumns(table, droppedTableColumns);\n        });\n    }\n\n    /**\n     * Adds columns from metadata which does not exist in the table.\n     * Columns are created without keys.\n     */\n    protected async addNewColumns(): Promise<void> {\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            // find which columns are new\n            const newColumnMetadatas = metadata.columns.filter(columnMetadata => {\n                return !table.columns.find(tableColumn => tableColumn.name === columnMetadata.databaseName);\n            });\n            if (newColumnMetadatas.length === 0)\n                return;\n\n            // create columns in the database\n            const newTableColumnOptions = this.metadataColumnsToTableColumnOptions(newColumnMetadatas);\n            const newTableColumns = newTableColumnOptions.map(option => new TableColumn(option));\n\n            if (newTableColumns.length === 0)\n                return;\n\n            this.connection.logger.logSchemaBuild(`new columns added: ` + newColumnMetadatas.map(column => column.databaseName).join(\", \"));\n            await this.queryRunner.addColumns(table, newTableColumns);\n        });\n    }\n\n    /**\n     * Updates composite primary keys.\n     */\n    protected async updatePrimaryKeys(): Promise<void> {\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            const primaryMetadataColumns = metadata.columns.filter(column => column.isPrimary);\n            const primaryTableColumns = table.columns.filter(column => column.isPrimary);\n            if (primaryTableColumns.length !== primaryMetadataColumns.length && primaryMetadataColumns.length > 1) {\n                const changedPrimaryColumns = primaryMetadataColumns.map(primaryMetadataColumn => {\n                    return new TableColumn(TableUtils.createTableColumnOptions(primaryMetadataColumn, this.connection.driver));\n                });\n                await this.queryRunner.updatePrimaryKeys(table, changedPrimaryColumns);\n            }\n        });\n    }\n\n    /**\n     * Update all exist columns which metadata has changed.\n     * Still don't create keys. Also we don't touch foreign keys of the changed columns.\n     */\n    protected async updateExistColumns(): Promise<void> {\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            const changedColumns = this.connection.driver.findChangedColumns(table.columns, metadata.columns);\n            if (changedColumns.length === 0)\n                return;\n\n            // drop all foreign keys that point to this column\n            await PromiseUtils.runInSequence(changedColumns, changedColumn => this.dropColumnReferencedForeignKeys(metadata.tablePath, changedColumn.databaseName));\n\n            // drop all composite indices related to this column\n            await PromiseUtils.runInSequence(changedColumns, changedColumn => this.dropColumnCompositeIndices(metadata.tablePath, changedColumn.databaseName));\n\n            // drop all composite uniques related to this column\n            // Mysql does not support unique constraints.\n            if (!(this.connection.driver instanceof MysqlDriver)) {\n                await PromiseUtils.runInSequence(changedColumns, changedColumn => this.dropColumnCompositeUniques(metadata.tablePath, changedColumn.databaseName));\n            }\n\n            // generate a map of new/old columns\n            const newAndOldTableColumns = changedColumns.map(changedColumn => {\n                const oldTableColumn = table.columns.find(column => column.name === changedColumn.databaseName)!;\n                const newTableColumnOptions = TableUtils.createTableColumnOptions(changedColumn, this.connection.driver);\n                const newTableColumn = new TableColumn(newTableColumnOptions);\n\n                return {\n                    oldColumn: oldTableColumn,\n                    newColumn: newTableColumn\n                };\n            });\n\n            if (newAndOldTableColumns.length === 0)\n                return;\n\n            this.connection.logger.logSchemaBuild(`columns changed in \"${table.name}\". updating: ` + changedColumns.map(column => column.databaseName).join(\", \"));\n            await this.queryRunner.changeColumns(table, newAndOldTableColumns);\n        });\n    }\n\n    /**\n     * Creates composite indices which are missing in db yet.\n     */\n    protected async createNewIndices(): Promise<void> {\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            const newIndices = metadata.indices\n                .filter(indexMetadata => !table.indices.find(tableIndex => tableIndex.name === indexMetadata.name) && indexMetadata.synchronize === true)\n                .map(indexMetadata => TableIndex.create(indexMetadata));\n\n            if (newIndices.length === 0)\n                return;\n\n            this.connection.logger.logSchemaBuild(`adding new indices ${newIndices.map(index => `\"${index.name}\"`).join(\", \")} in table \"${table.name}\"`);\n            await this.queryRunner.createIndices(table, newIndices);\n        });\n    }\n\n    protected async createNewChecks(): Promise<void> {\n        // Mysql does not support check constraints\n        if (this.connection.driver instanceof MysqlDriver)\n            return;\n\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            const newChecks = metadata.checks\n                .filter(checkMetadata => !table.checks.find(tableCheck => tableCheck.name === checkMetadata.name))\n                .map(checkMetadata => TableCheck.create(checkMetadata));\n\n            if (newChecks.length === 0)\n                return;\n\n            this.connection.logger.logSchemaBuild(`adding new check constraints: ${newChecks.map(index => `\"${index.name}\"`).join(\", \")} in table \"${table.name}\"`);\n            await this.queryRunner.createCheckConstraints(table, newChecks);\n        });\n    }\n\n    /**\n     * Creates composite uniques which are missing in db yet.\n     */\n    protected async createCompositeUniqueConstraints(): Promise<void> {\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            const compositeUniques = metadata.uniques\n                .filter(uniqueMetadata => uniqueMetadata.columns.length > 1 && !table.uniques.find(tableUnique => tableUnique.name === uniqueMetadata.name))\n                .map(uniqueMetadata => TableUnique.create(uniqueMetadata));\n\n            if (compositeUniques.length === 0)\n                return;\n\n            this.connection.logger.logSchemaBuild(`adding new unique constraints: ${compositeUniques.map(unique => `\"${unique.name}\"`).join(\", \")} in table \"${table.name}\"`);\n            await this.queryRunner.createUniqueConstraints(table, compositeUniques);\n        });\n    }\n\n    /**\n     * Creates exclusions which are missing in db yet.\n     */\n    protected async createNewExclusions(): Promise<void> {\n        // Only PostgreSQL supports exclusion constraints\n        if (!(this.connection.driver instanceof PostgresDriver))\n            return;\n\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            const newExclusions = metadata.exclusions\n            .filter(exclusionMetadata => !table.exclusions.find(tableExclusion => tableExclusion.name === exclusionMetadata.name))\n            .map(exclusionMetadata => TableExclusion.create(exclusionMetadata));\n\n            if (newExclusions.length === 0)\n                return;\n\n            this.connection.logger.logSchemaBuild(`adding new exclusion constraints: ${newExclusions.map(exclusion => `\"${exclusion.name}\"`).join(\", \")} in table \"${table.name}\"`);\n            await this.queryRunner.createExclusionConstraints(table, newExclusions);\n        });\n    }\n\n    /**\n     * Creates foreign keys which does not exist in the table yet.\n     */\n    protected async createForeignKeys(): Promise<void> {\n        await PromiseUtils.runInSequence(this.entityToSyncMetadatas, async metadata => {\n            const table = this.queryRunner.loadedTables.find(table => table.name === metadata.tablePath);\n            if (!table)\n                return;\n\n            const newKeys = metadata.foreignKeys.filter(foreignKey => {\n                return !table.foreignKeys.find(dbForeignKey => dbForeignKey.name === foreignKey.name);\n            });\n            if (newKeys.length === 0)\n                return;\n\n            const dbForeignKeys = newKeys.map(foreignKeyMetadata => TableForeignKey.create(foreignKeyMetadata));\n            this.connection.logger.logSchemaBuild(`creating a foreign keys: ${newKeys.map(key => key.name).join(\", \")} on table \"${table.name}\"`);\n            await this.queryRunner.createForeignKeys(table, dbForeignKeys);\n        });\n    }\n\n    /**\n     * Drops all foreign keys where given column of the given table is being used.\n     */\n    protected async dropColumnReferencedForeignKeys(tablePath: string, columnName: string): Promise<void> {\n        const table = this.queryRunner.loadedTables.find(table => table.name === tablePath);\n        if (!table)\n            return;\n\n        const tablesWithFK: Table[] = [];\n        const columnForeignKey = table.foreignKeys.find(foreignKey => foreignKey.columnNames.indexOf(columnName) !== -1);\n        if (columnForeignKey) {\n            const clonedTable = table.clone();\n            clonedTable.foreignKeys = [columnForeignKey];\n            tablesWithFK.push(clonedTable);\n            table.removeForeignKey(columnForeignKey);\n        }\n\n        this.queryRunner.loadedTables.forEach(loadedTable => {\n            const dependForeignKeys = loadedTable.foreignKeys.filter(foreignKey => {\n                return foreignKey.referencedTableName === tablePath && foreignKey.referencedColumnNames.indexOf(columnName) !== -1;\n            });\n\n            if (dependForeignKeys.length > 0) {\n                const clonedTable = loadedTable.clone();\n                clonedTable.foreignKeys = dependForeignKeys;\n                tablesWithFK.push(clonedTable);\n                dependForeignKeys.forEach(dependForeignKey => loadedTable.removeForeignKey(dependForeignKey));\n            }\n        });\n\n        if (tablesWithFK.length > 0) {\n            await PromiseUtils.runInSequence(tablesWithFK, tableWithFK => {\n                this.connection.logger.logSchemaBuild(`dropping related foreign keys of ${tableWithFK.name}: ${tableWithFK.foreignKeys.map(foreignKey => foreignKey.name).join(\", \")}`);\n                return this.queryRunner.dropForeignKeys(tableWithFK, tableWithFK.foreignKeys);\n            });\n        }\n    }\n\n    /**\n     * Drops all composite indices, related to given column.\n     */\n    protected async dropColumnCompositeIndices(tablePath: string, columnName: string): Promise<void> {\n        const table = this.queryRunner.loadedTables.find(table => table.name === tablePath);\n        if (!table)\n            return;\n\n        const relatedIndices = table.indices.filter(index => index.columnNames.length > 1 && index.columnNames.indexOf(columnName) !== -1);\n        if (relatedIndices.length === 0)\n            return;\n\n        this.connection.logger.logSchemaBuild(`dropping related indices of \"${tablePath}\".\"${columnName}\": ${relatedIndices.map(index => index.name).join(\", \")}`);\n        await this.queryRunner.dropIndices(table, relatedIndices);\n    }\n\n    /**\n     * Drops all composite uniques, related to given column.\n     */\n    protected async dropColumnCompositeUniques(tablePath: string, columnName: string): Promise<void> {\n        const table = this.queryRunner.loadedTables.find(table => table.name === tablePath);\n        if (!table)\n            return;\n\n        const relatedUniques = table.uniques.filter(unique => unique.columnNames.length > 1 && unique.columnNames.indexOf(columnName) !== -1);\n        if (relatedUniques.length === 0)\n            return;\n\n        this.connection.logger.logSchemaBuild(`dropping related unique constraints of \"${tablePath}\".\"${columnName}\": ${relatedUniques.map(unique => unique.name).join(\", \")}`);\n        await this.queryRunner.dropUniqueConstraints(table, relatedUniques);\n    }\n\n    /**\n     * Creates new columns from the given column metadatas.\n     */\n    protected metadataColumnsToTableColumnOptions(columns: ColumnMetadata[]): TableColumnOptions[] {\n        return columns.map(columnMetadata => TableUtils.createTableColumnOptions(columnMetadata, this.connection.driver));\n    }\n\n    /**\n     * Creates typeorm service table for storing user defined Views.\n     */\n    protected async createTypeormMetadataTable() {\n        const options = <SqlServerConnectionOptions|PostgresConnectionOptions>this.connection.driver.options;\n        const typeormMetadataTable = this.connection.driver.buildTableName(\"typeorm_metadata\", options.schema, options.database);\n\n        await this.queryRunner.createTable(new Table(\n            {\n                name: typeormMetadataTable,\n                columns: [\n                    {\n                        name: \"type\",\n                        type: this.connection.driver.normalizeType({type: this.connection.driver.mappedDataTypes.metadataType}),\n                        isNullable: false\n                    },\n                    {\n                        name: \"database\",\n                        type: this.connection.driver.normalizeType({type: this.connection.driver.mappedDataTypes.metadataDatabase}),\n                        isNullable: true\n                    },\n                    {\n                        name: \"schema\",\n                        type: this.connection.driver.normalizeType({type: this.connection.driver.mappedDataTypes.metadataSchema}),\n                        isNullable: true\n                    },\n                    {\n                        name: \"table\",\n                        type: this.connection.driver.normalizeType({type: this.connection.driver.mappedDataTypes.metadataTable}),\n                        isNullable: true\n                    },\n                    {\n                        name: \"name\",\n                        type: this.connection.driver.normalizeType({type: this.connection.driver.mappedDataTypes.metadataName}),\n                        isNullable: true\n                    },\n                    {\n                        name: \"value\",\n                        type: this.connection.driver.normalizeType({type: this.connection.driver.mappedDataTypes.metadataValue}),\n                        isNullable: true\n                    },\n                ]\n            },\n        ), true);\n    }\n\n}\n"],"sourceRoot":".."}