333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../../src/driver/sqlite-abstract/AbstractSqliteQueryRunner.ts"],"names":[],"mappings":"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","file":"AbstractSqliteQueryRunner.js","sourcesContent":["import {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {TransactionAlreadyStartedError} from \"../../error/TransactionAlreadyStartedError\";\nimport {TransactionNotStartedError} from \"../../error/TransactionNotStartedError\";\nimport {TableColumn} from \"../../schema-builder/table/TableColumn\";\nimport {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {Table} from \"../../schema-builder/table/Table\";\nimport {TableIndex} from \"../../schema-builder/table/TableIndex\";\nimport {TableForeignKey} from \"../../schema-builder/table/TableForeignKey\";\nimport {View} from \"../../schema-builder/view/View\";\nimport {Query} from \"../Query\";\nimport {AbstractSqliteDriver} from \"./AbstractSqliteDriver\";\nimport {ReadStream} from \"../../platform/PlatformTools\";\nimport {TableIndexOptions} from \"../../schema-builder/options/TableIndexOptions\";\nimport {TableUnique} from \"../../schema-builder/table/TableUnique\";\nimport {BaseQueryRunner} from \"../../query-runner/BaseQueryRunner\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {TableCheck} from \"../../schema-builder/table/TableCheck\";\nimport {IsolationLevel} from \"../types/IsolationLevel\";\nimport {TableExclusion} from \"../../schema-builder/table/TableExclusion\";\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nexport abstract class AbstractSqliteQueryRunner extends BaseQueryRunner implements QueryRunner {\n\n    // -------------------------------------------------------------------------\n    // Public Implemented Properties\n    // -------------------------------------------------------------------------\n\n    /**\n     * Database driver used by connection.\n     */\n    driver: AbstractSqliteDriver;\n\n    // -------------------------------------------------------------------------\n    // Constructor\n    // -------------------------------------------------------------------------\n\n    constructor() {\n        super();\n    }\n\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Creates/uses database connection from the connection pool to perform further operations.\n     * Returns obtained database connection.\n     */\n    connect(): Promise<any> {\n        return Promise.resolve(this.driver.databaseConnection);\n    }\n\n    /**\n     * Releases used database connection.\n     * We just clear loaded tables and sql in memory, because sqlite do not support multiple connections thus query runners.\n     */\n    release(): Promise<void> {\n        this.loadedTables = [];\n        this.clearSqlMemory();\n        return Promise.resolve();\n    }\n\n    /**\n     * Starts transaction.\n     */\n    async startTransaction(isolationLevel?: IsolationLevel): Promise<void> {\n        if (this.isTransactionActive)\n            throw new TransactionAlreadyStartedError();\n\n        this.isTransactionActive = true;\n\n        if (isolationLevel) {\n            if (isolationLevel !== \"READ UNCOMMITTED\" && isolationLevel !== \"SERIALIZABLE\") {\n                throw new Error(`SQLite only supports SERIALIZABLE and READ UNCOMMITTED isolation`);\n            }\n\n            if (isolationLevel === \"READ UNCOMMITTED\") {\n                await this.query(\"PRAGMA read_uncommitted = true\");\n            } else {\n                await this.query(\"PRAGMA read_uncommitted = false\");\n            }\n        }\n\n        await this.query(\"BEGIN TRANSACTION\");\n    }\n\n    /**\n     * Commits transaction.\n     * Error will be thrown if transaction was not started.\n     */\n    async commitTransaction(): Promise<void> {\n        if (!this.isTransactionActive)\n            throw new TransactionNotStartedError();\n\n        await this.query(\"COMMIT\");\n        this.isTransactionActive = false;\n    }\n\n    /**\n     * Rollbacks transaction.\n     * Error will be thrown if transaction was not started.\n     */\n    async rollbackTransaction(): Promise<void> {\n        if (!this.isTransactionActive)\n            throw new TransactionNotStartedError();\n\n        await this.query(\"ROLLBACK\");\n        this.isTransactionActive = false;\n    }\n\n    /**\n     * Returns raw data stream.\n     */\n    stream(query: string, parameters?: any[], onEnd?: Function, onError?: Function): Promise<ReadStream> {\n        throw new Error(`Stream is not supported by sqlite driver.`);\n    }\n\n    /**\n     * Returns all available database names including system databases.\n     */\n    async getDatabases(): Promise<string[]> {\n        return Promise.resolve([]);\n    }\n\n    /**\n     * Returns all available schema names including system schemas.\n     * If database parameter specified, returns schemas of that database.\n     */\n    async getSchemas(database?: string): Promise<string[]> {\n        return Promise.resolve([]);\n    }\n\n    /**\n     * Checks if database with the given name exist.\n     */\n    async hasDatabase(database: string): Promise<boolean> {\n        return Promise.resolve(false);\n    }\n\n    /**\n     * Checks if schema with the given name exist.\n     */\n    async hasSchema(schema: string): Promise<boolean> {\n        throw new Error(`This driver does not support table schemas`);\n    }\n\n    /**\n     * Checks if table with the given name exist in the database.\n     */\n    async hasTable(tableOrName: Table|string): Promise<boolean> {\n        const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n        const sql = `SELECT * FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" = '${tableName}'`;\n        const result = await this.query(sql);\n        return result.length ? true : false;\n    }\n\n    /**\n     * Checks if column with the given name exist in the given table.\n     */\n    async hasColumn(tableOrName: Table|string, columnName: string): Promise<boolean> {\n        const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n        const sql = `PRAGMA table_info(\"${tableName}\")`;\n        const columns: ObjectLiteral[] = await this.query(sql);\n        return !!columns.find(column => column[\"name\"] === columnName);\n    }\n\n    /**\n     * Creates a new database.\n     */\n    async createDatabase(database: string, ifNotExist?: boolean): Promise<void> {\n        return Promise.resolve();\n    }\n\n    /**\n     * Drops database.\n     */\n    async dropDatabase(database: string, ifExist?: boolean): Promise<void> {\n        return Promise.resolve();\n    }\n\n    /**\n     * Creates a new table schema.\n     */\n    async createSchema(schema: string, ifNotExist?: boolean): Promise<void> {\n        return Promise.resolve();\n    }\n\n    /**\n     * Drops table schema.\n     */\n    async dropSchema(schemaPath: string, ifExist?: boolean): Promise<void> {\n        return Promise.resolve();\n    }\n\n    /**\n     * Creates a new table.\n     */\n    async createTable(table: Table, ifNotExist: boolean = false, createForeignKeys: boolean = true, createIndices: boolean = true): Promise<void> {\n        const upQueries: Query[] = [];\n        const downQueries: Query[] = [];\n\n        if (ifNotExist) {\n            const isTableExist = await this.hasTable(table);\n            if (isTableExist) return Promise.resolve();\n        }\n\n        upQueries.push(this.createTableSql(table, createForeignKeys));\n        downQueries.push(this.dropTableSql(table));\n\n        if (createIndices) {\n            table.indices.forEach(index => {\n\n                // new index may be passed without name. In this case we generate index name manually.\n                if (!index.name)\n                    index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n                upQueries.push(this.createIndexSql(table, index));\n                downQueries.push(this.dropIndexSql(index));\n            });\n        }\n\n        await this.executeQueries(upQueries, downQueries);\n    }\n\n    /**\n     * Drops the table.\n     */\n    async dropTable(tableOrName: Table|string, ifExist?: boolean, dropForeignKeys: boolean = true, dropIndices: boolean = true): Promise<void> {\n        if (ifExist) {\n            const isTableExist = await this.hasTable(tableOrName);\n            if (!isTableExist) return Promise.resolve();\n        }\n\n        // if dropTable called with dropForeignKeys = true, we must create foreign keys in down query.\n        const createForeignKeys: boolean = dropForeignKeys;\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        const upQueries: Query[] = [];\n        const downQueries: Query[] = [];\n\n        if (dropIndices) {\n            table.indices.forEach(index => {\n                upQueries.push(this.dropIndexSql(index));\n                downQueries.push(this.createIndexSql(table, index));\n            });\n        }\n\n        upQueries.push(this.dropTableSql(table, ifExist));\n        downQueries.push(this.createTableSql(table, createForeignKeys));\n\n        await this.executeQueries(upQueries, downQueries);\n    }\n\n    /**\n     * Creates a new view.\n     */\n    async createView(view: View): Promise<void> {\n        const upQueries: Query[] = [];\n        const downQueries: Query[] = [];\n        upQueries.push(this.createViewSql(view));\n        upQueries.push(this.insertViewDefinitionSql(view));\n        downQueries.push(this.dropViewSql(view));\n        downQueries.push(this.deleteViewDefinitionSql(view));\n        await this.executeQueries(upQueries, downQueries);\n    }\n\n    /**\n     * Drops the view.\n     */\n    async dropView(target: View|string): Promise<void> {\n        const viewName = target instanceof View ? target.name : target;\n        const view = await this.getCachedView(viewName);\n\n        const upQueries: Query[] = [];\n        const downQueries: Query[] = [];\n        upQueries.push(this.deleteViewDefinitionSql(view));\n        upQueries.push(this.dropViewSql(view));\n        downQueries.push(this.insertViewDefinitionSql(view));\n        downQueries.push(this.createViewSql(view));\n        await this.executeQueries(upQueries, downQueries);\n    }\n\n    /**\n     * Renames the given table.\n     */\n    async renameTable(oldTableOrName: Table|string, newTableName: string): Promise<void> {\n        const oldTable = oldTableOrName instanceof Table ? oldTableOrName : await this.getCachedTable(oldTableOrName);\n        const newTable = oldTable.clone();\n        newTable.name = newTableName;\n\n        // rename table\n        const up = new Query(`ALTER TABLE \"${oldTable.name}\" RENAME TO \"${newTableName}\"`);\n        const down = new Query(`ALTER TABLE \"${newTableName}\" RENAME TO \"${oldTable.name}\"`);\n        await this.executeQueries(up, down);\n\n        // rename old table;\n        oldTable.name = newTable.name;\n\n        // rename unique constraints\n        newTable.uniques.forEach(unique => {\n            unique.name = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);\n        });\n\n        // rename foreign key constraints\n        newTable.foreignKeys.forEach(foreignKey => {\n            foreignKey.name = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames);\n        });\n\n        // rename indices\n        newTable.indices.forEach(index => {\n            index.name = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);\n        });\n\n        // recreate table with new constraint names\n        await this.recreateTable(newTable, oldTable);\n    }\n\n    /**\n     * Creates a new column from the column in the table.\n     */\n    async addColumn(tableOrName: Table|string, column: TableColumn): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        return this.addColumns(table!, [column]);\n    }\n\n    /**\n     * Creates a new columns from the column in the table.\n     */\n    async addColumns(tableOrName: Table|string, columns: TableColumn[]): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        const changedTable = table.clone();\n        columns.forEach(column => changedTable.addColumn(column));\n        await this.recreateTable(changedTable, table);\n    }\n\n    /**\n     * Renames column in the given table.\n     */\n    async renameColumn(tableOrName: Table|string, oldTableColumnOrName: TableColumn|string, newTableColumnOrName: TableColumn|string): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        const oldColumn = oldTableColumnOrName instanceof TableColumn ? oldTableColumnOrName : table.columns.find(c => c.name === oldTableColumnOrName);\n        if (!oldColumn)\n            throw new Error(`Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`);\n\n        let newColumn: TableColumn|undefined = undefined;\n        if (newTableColumnOrName instanceof TableColumn) {\n            newColumn = newTableColumnOrName;\n        } else {\n            newColumn = oldColumn.clone();\n            newColumn.name = newTableColumnOrName;\n        }\n\n        return this.changeColumn(table, oldColumn, newColumn);\n    }\n\n    /**\n     * Changes a column in the table.\n     */\n    async changeColumn(tableOrName: Table|string, oldTableColumnOrName: TableColumn|string, newColumn: TableColumn): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        const oldColumn = oldTableColumnOrName instanceof TableColumn ? oldTableColumnOrName : table.columns.find(c => c.name === oldTableColumnOrName);\n        if (!oldColumn)\n            throw new Error(`Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`);\n\n        await this.changeColumns(table, [{oldColumn, newColumn}]);\n    }\n\n    /**\n     * Changes a column in the table.\n     * Changed column looses all its keys in the db.\n     */\n    async changeColumns(tableOrName: Table|string, changedColumns: { oldColumn: TableColumn, newColumn: TableColumn }[]): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        const changedTable = table.clone();\n        changedColumns.forEach(changedColumnSet => {\n            if (changedColumnSet.newColumn.name !== changedColumnSet.oldColumn.name) {\n                changedTable.findColumnUniques(changedColumnSet.oldColumn).forEach(unique => {\n                    unique.columnNames.splice(unique.columnNames.indexOf(changedColumnSet.oldColumn.name), 1);\n                    unique.columnNames.push(changedColumnSet.newColumn.name);\n                    unique.name = this.connection.namingStrategy.uniqueConstraintName(changedTable, unique.columnNames);\n                });\n\n                changedTable.findColumnForeignKeys(changedColumnSet.oldColumn).forEach(fk => {\n                    fk.columnNames.splice(fk.columnNames.indexOf(changedColumnSet.oldColumn.name), 1);\n                    fk.columnNames.push(changedColumnSet.newColumn.name);\n                    fk.name = this.connection.namingStrategy.foreignKeyName(changedTable, fk.columnNames);\n                });\n\n                changedTable.findColumnIndices(changedColumnSet.oldColumn).forEach(index => {\n                    index.columnNames.splice(index.columnNames.indexOf(changedColumnSet.oldColumn.name), 1);\n                    index.columnNames.push(changedColumnSet.newColumn.name);\n                    index.name = this.connection.namingStrategy.indexName(changedTable, index.columnNames, index.where);\n                });\n            }\n            const originalColumn = changedTable.columns.find(column => column.name === changedColumnSet.oldColumn.name);\n            if (originalColumn)\n                changedTable.columns[changedTable.columns.indexOf(originalColumn)] = changedColumnSet.newColumn;\n        });\n\n        await this.recreateTable(changedTable, table);\n    }\n\n    /**\n     * Drops column in the table.\n     */\n    async dropColumn(tableOrName: Table|string, columnOrName: TableColumn|string): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        const column = columnOrName instanceof TableColumn ? columnOrName : table.findColumnByName(columnOrName);\n        if (!column)\n            throw new Error(`Column \"${columnOrName}\" was not found in table \"${table.name}\"`);\n\n        await this.dropColumns(table, [column]);\n    }\n\n    /**\n     * Drops the columns in the table.\n     */\n    async dropColumns(tableOrName: Table|string, columns: TableColumn[]): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n        // clone original table and remove column and its constraints from cloned table\n        const changedTable = table.clone();\n        columns.forEach(column => {\n            changedTable.removeColumn(column);\n            changedTable.findColumnUniques(column).forEach(unique => changedTable.removeUniqueConstraint(unique));\n            changedTable.findColumnIndices(column).forEach(index => changedTable.removeIndex(index));\n            changedTable.findColumnForeignKeys(column).forEach(fk => changedTable.removeForeignKey(fk));\n        });\n\n        await this.recreateTable(changedTable, table);\n\n        // remove column and its constraints from original table.\n        columns.forEach(column => {\n            table.removeColumn(column);\n            table.findColumnUniques(column).forEach(unique => table.removeUniqueConstraint(unique));\n            table.findColumnIndices(column).forEach(index => table.removeIndex(index));\n            table.findColumnForeignKeys(column).forEach(fk => table.removeForeignKey(fk));\n        });\n    }\n\n    /**\n     * Creates a new primary key.\n     */\n    async createPrimaryKey(tableOrName: Table|string, columnNames: string[]): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        // clone original table and mark columns as primary\n        const changedTable = table.clone();\n        changedTable.columns.forEach(column => {\n            if (columnNames.find(columnName => columnName === column.name))\n                column.isPrimary = true;\n        });\n\n        await this.recreateTable(changedTable, table);\n        // mark columns as primary in original table\n        table.columns.forEach(column => {\n            if (columnNames.find(columnName => columnName === column.name))\n                column.isPrimary = true;\n        });\n    }\n\n    /**\n     * Updates composite primary keys.\n     */\n    async updatePrimaryKeys(tableOrName: Table|string, columns: TableColumn[]): Promise<void> {\n        await Promise.resolve();\n    }\n\n    /**\n     * Drops a primary key.\n     */\n    async dropPrimaryKey(tableOrName: Table|string): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        // clone original table and mark primary columns as non-primary\n        const changedTable = table.clone();\n        changedTable.primaryColumns.forEach(column => {\n            column.isPrimary = false;\n        });\n\n        await this.recreateTable(changedTable, table);\n        // mark primary columns as non-primary in original table\n        table.primaryColumns.forEach(column => {\n            column.isPrimary = false;\n        });\n    }\n\n    /**\n     * Creates a new unique constraint.\n     */\n    async createUniqueConstraint(tableOrName: Table|string, uniqueConstraint: TableUnique): Promise<void> {\n        await this.createUniqueConstraints(tableOrName, [uniqueConstraint]);\n    }\n\n    /**\n     * Creates a new unique constraints.\n     */\n    async createUniqueConstraints(tableOrName: Table|string, uniqueConstraints: TableUnique[]): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n        // clone original table and add unique constraints in to cloned table\n        const changedTable = table.clone();\n        uniqueConstraints.forEach(uniqueConstraint => changedTable.addUniqueConstraint(uniqueConstraint));\n        await this.recreateTable(changedTable, table);\n    }\n\n    /**\n     * Drops an unique constraint.\n     */\n    async dropUniqueConstraint(tableOrName: Table|string, uniqueOrName: TableUnique|string): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        const uniqueConstraint = uniqueOrName instanceof TableUnique ? uniqueOrName : table.uniques.find(u => u.name === uniqueOrName);\n        if (!uniqueConstraint)\n            throw new Error(`Supplied unique constraint was not found in table ${table.name}`);\n\n        await this.dropUniqueConstraints(table, [uniqueConstraint]);\n    }\n\n    /**\n     * Creates an unique constraints.\n     */\n    async dropUniqueConstraints(tableOrName: Table|string, uniqueConstraints: TableUnique[]): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n        // clone original table and remove unique constraints from cloned table\n        const changedTable = table.clone();\n        uniqueConstraints.forEach(uniqueConstraint => changedTable.removeUniqueConstraint(uniqueConstraint));\n\n        await this.recreateTable(changedTable, table);\n    }\n\n    /**\n     * Creates new check constraint.\n     */\n    async createCheckConstraint(tableOrName: Table|string, checkConstraint: TableCheck): Promise<void> {\n        await this.createCheckConstraints(tableOrName, [checkConstraint]);\n    }\n\n    /**\n     * Creates new check constraints.\n     */\n    async createCheckConstraints(tableOrName: Table|string, checkConstraints: TableCheck[]): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n        // clone original table and add check constraints in to cloned table\n        const changedTable = table.clone();\n        checkConstraints.forEach(checkConstraint => changedTable.addCheckConstraint(checkConstraint));\n        await this.recreateTable(changedTable, table);\n    }\n\n    /**\n     * Drops check constraint.\n     */\n    async dropCheckConstraint(tableOrName: Table|string, checkOrName: TableCheck|string): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        const checkConstraint = checkOrName instanceof TableCheck ? checkOrName : table.checks.find(c => c.name === checkOrName);\n        if (!checkConstraint)\n            throw new Error(`Supplied check constraint was not found in table ${table.name}`);\n\n        await this.dropCheckConstraints(table, [checkConstraint]);\n    }\n\n    /**\n     * Drops check constraints.\n     */\n    async dropCheckConstraints(tableOrName: Table|string, checkConstraints: TableCheck[]): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n        // clone original table and remove check constraints from cloned table\n        const changedTable = table.clone();\n        checkConstraints.forEach(checkConstraint => changedTable.removeCheckConstraint(checkConstraint));\n\n        await this.recreateTable(changedTable, table);\n    }\n\n    /**\n     * Creates a new exclusion constraint.\n     */\n    async createExclusionConstraint(tableOrName: Table|string, exclusionConstraint: TableExclusion): Promise<void> {\n        throw new Error(`Sqlite does not support exclusion constraints.`);\n    }\n\n    /**\n     * Creates a new exclusion constraints.\n     */\n    async createExclusionConstraints(tableOrName: Table|string, exclusionConstraints: TableExclusion[]): Promise<void> {\n        throw new Error(`Sqlite does not support exclusion constraints.`);\n    }\n\n    /**\n     * Drops exclusion constraint.\n     */\n    async dropExclusionConstraint(tableOrName: Table|string, exclusionOrName: TableExclusion|string): Promise<void> {\n        throw new Error(`Sqlite does not support exclusion constraints.`);\n    }\n\n    /**\n     * Drops exclusion constraints.\n     */\n    async dropExclusionConstraints(tableOrName: Table|string, exclusionConstraints: TableExclusion[]): Promise<void> {\n        throw new Error(`Sqlite does not support exclusion constraints.`);\n    }\n\n    /**\n     * Creates a new foreign key.\n     */\n    async createForeignKey(tableOrName: Table|string, foreignKey: TableForeignKey): Promise<void> {\n        await this.createForeignKeys(tableOrName, [foreignKey]);\n    }\n\n    /**\n     * Creates a new foreign keys.\n     */\n    async createForeignKeys(tableOrName: Table|string, foreignKeys: TableForeignKey[]): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        // clone original table and add foreign keys in to cloned table\n        const changedTable = table.clone();\n        foreignKeys.forEach(foreignKey => changedTable.addForeignKey(foreignKey));\n\n        await this.recreateTable(changedTable, table);\n    }\n\n    /**\n     * Drops a foreign key from the table.\n     */\n    async dropForeignKey(tableOrName: Table|string, foreignKeyOrName: TableForeignKey|string): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        const foreignKey = foreignKeyOrName instanceof TableForeignKey ? foreignKeyOrName : table.foreignKeys.find(fk => fk.name === foreignKeyOrName);\n        if (!foreignKey)\n            throw new Error(`Supplied foreign key was not found in table ${table.name}`);\n\n        await this.dropForeignKeys(tableOrName, [foreignKey]);\n    }\n\n    /**\n     * Drops a foreign keys from the table.\n     */\n    async dropForeignKeys(tableOrName: Table|string, foreignKeys: TableForeignKey[]): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n        // clone original table and remove foreign keys from cloned table\n        const changedTable = table.clone();\n        foreignKeys.forEach(foreignKey => changedTable.removeForeignKey(foreignKey));\n\n        await this.recreateTable(changedTable, table);\n    }\n\n    /**\n     * Creates a new index.\n     */\n    async createIndex(tableOrName: Table|string, index: TableIndex): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n        // new index may be passed without name. In this case we generate index name manually.\n        if (!index.name)\n            index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n\n        const up = this.createIndexSql(table, index);\n        const down = this.dropIndexSql(index);\n        await this.executeQueries(up, down);\n        table.addIndex(index);\n    }\n\n    /**\n     * Creates a new indices\n     */\n    async createIndices(tableOrName: Table|string, indices: TableIndex[]): Promise<void> {\n        const promises = indices.map(index => this.createIndex(tableOrName, index));\n        await Promise.all(promises);\n    }\n\n    /**\n     * Drops an index from the table.\n     */\n    async dropIndex(tableOrName: Table|string, indexOrName: TableIndex|string): Promise<void> {\n        const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n        const index = indexOrName instanceof TableIndex ? indexOrName : table.indices.find(i => i.name === indexOrName);\n        if (!index)\n            throw new Error(`Supplied index was not found in table ${table.name}`);\n\n        const up = this.dropIndexSql(index);\n        const down = this.createIndexSql(table, index);\n        await this.executeQueries(up, down);\n        table.removeIndex(index);\n    }\n\n    /**\n     * Drops an indices from the table.\n     */\n    async dropIndices(tableOrName: Table|string, indices: TableIndex[]): Promise<void> {\n        const promises = indices.map(index => this.dropIndex(tableOrName, index));\n        await Promise.all(promises);\n    }\n\n    /**\n     * Clears all table contents.\n     * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n     */\n    async clearTable(tableName: string): Promise<void> {\n        await this.query(`DELETE FROM \"${tableName}\"`);\n    }\n\n    /**\n     * Removes all tables from the currently connected database.\n     */\n    async clearDatabase(): Promise<void> {\n        await this.query(`PRAGMA foreign_keys = OFF;`);\n        await this.startTransaction();\n        try {\n            const selectViewDropsQuery = `SELECT 'DROP VIEW \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'view'`;\n            const dropViewQueries: ObjectLiteral[] = await this.query(selectViewDropsQuery);\n            await Promise.all(dropViewQueries.map(q => this.query(q[\"query\"])));\n\n            const selectTableDropsQuery = `SELECT 'DROP TABLE \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" != 'sqlite_sequence'`;\n            const dropTableQueries: ObjectLiteral[] = await this.query(selectTableDropsQuery);\n            await Promise.all(dropTableQueries.map(q => this.query(q[\"query\"])));\n            await this.commitTransaction();\n\n        } catch (error) {\n            try { // we throw original error even if rollback thrown an error\n                await this.rollbackTransaction();\n            } catch (rollbackError) { }\n            throw error;\n\n        } finally {\n            await this.query(`PRAGMA foreign_keys = ON;`);\n        }\n    }\n\n    // -------------------------------------------------------------------------\n    // Protected Methods\n    // -------------------------------------------------------------------------\n\n    protected async loadViews(viewNames: string[]): Promise<View[]> {\n        const hasTable = await this.hasTable(this.getTypeormMetadataTableName());\n        if (!hasTable)\n            return Promise.resolve([]);\n\n        const viewNamesString = viewNames.map(name => \"'\" + name + \"'\").join(\", \");\n        let query = `SELECT \"t\".* FROM \"${this.getTypeormMetadataTableName()}\" \"t\" INNER JOIN \"sqlite_master\" s ON \"s\".\"name\" = \"t\".\"name\" AND \"s\".\"type\" = 'view' WHERE \"t\".\"type\" = 'VIEW'`;\n        if (viewNamesString.length > 0)\n            query += ` AND \"t\".\"name\" IN (${viewNamesString})`;\n        const dbViews = await this.query(query);\n        return dbViews.map((dbView: any) => {\n            const view = new View();\n            view.name = dbView[\"name\"];\n            view.expression = dbView[\"value\"];\n            return view;\n        });\n    }\n\n    /**\n     * Loads all tables (with given names) from the database and creates a Table from them.\n     */\n    protected async loadTables(tableNames: string[]): Promise<Table[]> {\n        // if no tables given then no need to proceed\n        if (!tableNames || !tableNames.length)\n            return [];\n\n        const tableNamesString = tableNames.map(tableName => `'${tableName}'`).join(\", \");\n\n        // load tables\n        const dbTables: ObjectLiteral[] = await this.query(`SELECT * FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" IN (${tableNamesString})`);\n\n        // load indices\n        const dbIndicesDef: ObjectLiteral[] = await this.query(`SELECT * FROM \"sqlite_master\" WHERE \"type\" = 'index' AND \"tbl_name\" IN (${tableNamesString})`);\n\n        // if tables were not found in the db, no need to proceed\n        if (!dbTables || !dbTables.length)\n            return [];\n\n        // create table schemas for loaded tables\n        return Promise.all(dbTables.map(async dbTable => {\n            const table = new Table({name: dbTable[\"name\"]});\n            const sql = dbTable[\"sql\"];\n\n            // load columns and indices\n            const [dbColumns, dbIndices, dbForeignKeys]: ObjectLiteral[][] = await Promise.all([\n                this.query(`PRAGMA table_info(\"${dbTable[\"name\"]}\")`),\n                this.query(`PRAGMA index_list(\"${dbTable[\"name\"]}\")`),\n                this.query(`PRAGMA foreign_key_list(\"${dbTable[\"name\"]}\")`),\n            ]);\n\n            // find column name with auto increment\n            let autoIncrementColumnName: string|undefined = undefined;\n            const tableSql: string = dbTable[\"sql\"];\n            let autoIncrementIndex = tableSql.toUpperCase().indexOf(\"AUTOINCREMENT\");\n            if (autoIncrementIndex !== -1) {\n                autoIncrementColumnName = tableSql.substr(0, autoIncrementIndex);\n                const comma = autoIncrementColumnName.lastIndexOf(\",\");\n                const bracket = autoIncrementColumnName.lastIndexOf(\"(\");\n                if (comma !== -1) {\n                    autoIncrementColumnName = autoIncrementColumnName.substr(comma);\n                    autoIncrementColumnName = autoIncrementColumnName.substr(0, autoIncrementColumnName.lastIndexOf(\"\\\"\"));\n                    autoIncrementColumnName = autoIncrementColumnName.substr(autoIncrementColumnName.indexOf(\"\\\"\") + 1);\n\n                } else if (bracket !== -1) {\n                    autoIncrementColumnName = autoIncrementColumnName.substr(bracket);\n                    autoIncrementColumnName = autoIncrementColumnName.substr(0, autoIncrementColumnName.lastIndexOf(\"\\\"\"));\n                    autoIncrementColumnName = autoIncrementColumnName.substr(autoIncrementColumnName.indexOf(\"\\\"\") + 1);\n                }\n            }\n\n            // create columns from the loaded columns\n            table.columns = dbColumns.map(dbColumn => {\n                const tableColumn = new TableColumn();\n                tableColumn.name = dbColumn[\"name\"];\n                tableColumn.type = dbColumn[\"type\"].toLowerCase();\n                tableColumn.default = dbColumn[\"dflt_value\"] !== null && dbColumn[\"dflt_value\"] !== undefined ? dbColumn[\"dflt_value\"] : undefined;\n                tableColumn.isNullable = dbColumn[\"notnull\"] === 0;\n                // primary keys are numbered starting with 1, columns that aren't primary keys are marked with 0\n                tableColumn.isPrimary = dbColumn[\"pk\"] > 0;\n                tableColumn.comment = \"\"; // SQLite does not support column comments\n                tableColumn.isGenerated = autoIncrementColumnName === dbColumn[\"name\"];\n                if (tableColumn.isGenerated) {\n                    tableColumn.generationStrategy = \"increment\";\n                }\n\n                if (tableColumn.type === \"varchar\") {\n                    // Check if this is an enum\n                    const enumMatch = sql.match(new RegExp(\"\\\"(\" + tableColumn.name + \")\\\" varchar CHECK\\\\s*\\\\(\\\\s*\\\\1\\\\s+IN\\\\s*\\\\(('[^']+'(?:\\\\s*,\\\\s*'[^']+')+)\\\\s*\\\\)\\\\s*\\\\)\"));\n                    if (enumMatch) {\n                        // This is an enum\n                        tableColumn.type = \"simple-enum\";\n                        tableColumn.enum = enumMatch[2].substr(1, enumMatch[2].length - 2).split(\"','\");\n                    }\n                }\n\n                // parse datatype and attempt to retrieve length\n                let pos = tableColumn.type.indexOf(\"(\");\n                if (pos !== -1) {\n                    let dataType = tableColumn.type.substr(0, pos);\n                    if (!!this.driver.withLengthColumnTypes.find(col => col === dataType)) {\n                        let len = parseInt(tableColumn.type.substring(pos + 1, tableColumn.type.length - 1));\n                        if (len) {\n                            tableColumn.length = len.toString();\n                            tableColumn.type = dataType; // remove the length part from the datatype\n                        }\n                    }\n                }\n\n                return tableColumn;\n            });\n\n            // build foreign keys\n            const tableForeignKeyConstraints = OrmUtils.uniq(dbForeignKeys, dbForeignKey => dbForeignKey[\"id\"]);\n            table.foreignKeys = tableForeignKeyConstraints.map(foreignKey => {\n                const ownForeignKeys = dbForeignKeys.filter(dbForeignKey => dbForeignKey[\"id\"] === foreignKey[\"id\"] && dbForeignKey[\"table\"] === foreignKey[\"table\"]);\n                const columnNames = ownForeignKeys.map(dbForeignKey => dbForeignKey[\"from\"]);\n                const referencedColumnNames = ownForeignKeys.map(dbForeignKey => dbForeignKey[\"to\"]);\n                // build foreign key name, because we can not get it directly.\n                const fkName = this.connection.namingStrategy.foreignKeyName(table, columnNames);\n\n                return new TableForeignKey({\n                    name: fkName,\n                    columnNames: columnNames,\n                    referencedTableName: foreignKey[\"table\"],\n                    referencedColumnNames: referencedColumnNames,\n                    onDelete: foreignKey[\"on_delete\"],\n                    onUpdate: foreignKey[\"on_update\"]\n                });\n            });\n\n            // build unique constraints\n            const tableUniquePromises = dbIndices\n                .filter(dbIndex => dbIndex[\"origin\"] === \"u\")\n                .map(dbIndex => dbIndex[\"name\"])\n                .filter((value, index, self) => self.indexOf(value) === index)\n                .map(async dbIndexName => {\n                    const dbIndex = dbIndices.find(dbIndex => dbIndex[\"name\"] === dbIndexName);\n                    const indexInfos: ObjectLiteral[] = await this.query(`PRAGMA index_info(\"${dbIndex![\"name\"]}\")`);\n                    const indexColumns = indexInfos\n                        .sort((indexInfo1, indexInfo2) => parseInt(indexInfo1[\"seqno\"]) - parseInt(indexInfo2[\"seqno\"]))\n                        .map(indexInfo => indexInfo[\"name\"]);\n\n                    if (indexColumns.length === 1) {\n                        const column = table.columns.find(column => {\n                            return !!indexColumns.find(indexColumn => indexColumn === column.name);\n                        });\n                        if (column)\n                            column.isUnique = true;\n                    }\n\n                    // Sqlite does not store unique constraint name, so we generate its name manually.\n                    return new TableUnique({\n                        name: this.connection.namingStrategy.uniqueConstraintName(table, indexColumns),\n                        columnNames: indexColumns\n                    });\n                });\n            table.uniques = (await Promise.all(tableUniquePromises)) as TableUnique[];\n\n            // build checks\n            let result;\n            const regexp = /CONSTRAINT \"([^\"]*)\" CHECK (\\(.*?\\))([,]|[)]$)/g;\n            while (((result = regexp.exec(sql)) !== null)) {\n                table.checks.push(new TableCheck({ name: result[1], expression: result[2] }));\n            }\n\n            // build indices\n            const indicesPromises = dbIndices\n                .filter(dbIndex => dbIndex[\"origin\"] === \"c\")\n                .map(dbIndex => dbIndex[\"name\"])\n                .filter((value, index, self) => self.indexOf(value) === index) // unqiue\n                .map(async dbIndexName => {\n\n                    const indexDef = dbIndicesDef.find(dbIndexDef => dbIndexDef[\"name\"] === dbIndexName);\n                    const condition = /WHERE (.*)/.exec(indexDef![\"sql\"]);\n                    const dbIndex = dbIndices.find(dbIndex => dbIndex[\"name\"] === dbIndexName);\n                    const indexInfos: ObjectLiteral[] = await this.query(`PRAGMA index_info(\"${dbIndex![\"name\"]}\")`);\n                    const indexColumns = indexInfos\n                        .sort((indexInfo1, indexInfo2) => parseInt(indexInfo1[\"seqno\"]) - parseInt(indexInfo2[\"seqno\"]))\n                        .map(indexInfo => indexInfo[\"name\"]);\n\n                    const isUnique = dbIndex![\"unique\"] === \"1\" || dbIndex![\"unique\"] === 1;\n                    return new TableIndex(<TableIndexOptions>{\n                        table: table,\n                        name: dbIndex![\"name\"],\n                        columnNames: indexColumns,\n                        isUnique: isUnique,\n                        where: condition ? condition[1] : undefined\n                    });\n                });\n            const indices = await Promise.all(indicesPromises);\n            table.indices = indices.filter(index => !!index) as TableIndex[];\n\n            return table;\n        }));\n    }\n\n    /**\n     * Builds create table sql.\n     */\n    protected createTableSql(table: Table, createForeignKeys?: boolean): Query {\n\n        const primaryColumns = table.columns.filter(column => column.isPrimary);\n        const hasAutoIncrement = primaryColumns.find(column => column.isGenerated && column.generationStrategy === \"increment\");\n        const skipPrimary = primaryColumns.length > 1;\n        if (skipPrimary && hasAutoIncrement)\n            throw new Error(`Sqlite does not support AUTOINCREMENT on composite primary key`);\n\n        const columnDefinitions = table.columns.map(column => this.buildCreateColumnSql(column, skipPrimary)).join(\", \");\n        let sql = `CREATE TABLE \"${table.name}\" (${columnDefinitions}`;\n\n        // need for `addColumn()` method, because it recreates table.\n        table.columns\n            .filter(column => column.isUnique)\n            .forEach(column => {\n                const isUniqueExist = table.uniques.some(unique => unique.columnNames.length === 1 && unique.columnNames[0] === column.name);\n                if (!isUniqueExist)\n                    table.uniques.push(new TableUnique({\n                        name: this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]),\n                        columnNames: [column.name]\n                    }));\n            });\n\n        if (table.uniques.length > 0) {\n            const uniquesSql = table.uniques.map(unique => {\n                const uniqueName = unique.name ? unique.name : this.connection.namingStrategy.uniqueConstraintName(table.name, unique.columnNames);\n                const columnNames = unique.columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n                return `CONSTRAINT \"${uniqueName}\" UNIQUE (${columnNames})`;\n            }).join(\", \");\n\n            sql += `, ${uniquesSql}`;\n        }\n\n        if (table.checks.length > 0) {\n            const checksSql = table.checks.map(check => {\n                const checkName = check.name ? check.name : this.connection.namingStrategy.checkConstraintName(table.name, check.expression!);\n                return `CONSTRAINT \"${checkName}\" CHECK (${check.expression})`;\n            }).join(\", \");\n\n            sql += `, ${checksSql}`;\n        }\n\n        if (table.foreignKeys.length > 0 && createForeignKeys) {\n            const foreignKeysSql = table.foreignKeys.map(fk => {\n                const columnNames = fk.columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n                if (!fk.name)\n                    fk.name = this.connection.namingStrategy.foreignKeyName(table.name, fk.columnNames);\n                const referencedColumnNames = fk.referencedColumnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n\n                let constraint = `CONSTRAINT \"${fk.name}\" FOREIGN KEY (${columnNames}) REFERENCES \"${fk.referencedTableName}\" (${referencedColumnNames})`;\n                if (fk.onDelete)\n                    constraint += ` ON DELETE ${fk.onDelete}`;\n                if (fk.onUpdate)\n                    constraint += ` ON UPDATE ${fk.onUpdate}`;\n\n                return constraint;\n            }).join(\", \");\n\n            sql += `, ${foreignKeysSql}`;\n        }\n\n        if (primaryColumns.length > 1) {\n            const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n            sql += `, PRIMARY KEY (${columnNames})`;\n        }\n\n        sql += `)`;\n\n        return new Query(sql);\n    }\n\n    /**\n     * Builds drop table sql.\n     */\n    protected dropTableSql(tableOrName: Table|string, ifExist?: boolean): Query {\n        const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n        const query = ifExist ? `DROP TABLE IF EXISTS \"${tableName}\"` : `DROP TABLE \"${tableName}\"`;\n        return new Query(query);\n    }\n\n    protected createViewSql(view: View): Query {\n        if (typeof view.expression === \"string\") {\n            return new Query(`CREATE VIEW \"${view.name}\" AS ${view.expression}`);\n        } else {\n            return new Query(`CREATE VIEW \"${view.name}\" AS ${view.expression(this.connection).getQuery()}`);\n        }\n    }\n\n    protected insertViewDefinitionSql(view: View): Query {\n        const expression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(this.connection).getQuery();\n        const [query, parameters] = this.connection.createQueryBuilder()\n            .insert()\n            .into(this.getTypeormMetadataTableName())\n            .values({ type: \"VIEW\", name: view.name, value: expression })\n            .getQueryAndParameters();\n\n        return new Query(query, parameters);\n    }\n\n    /**\n     * Builds drop view sql.\n     */\n    protected dropViewSql(viewOrPath: View|string): Query {\n        const viewName = viewOrPath instanceof View ? viewOrPath.name : viewOrPath;\n        return new Query(`DROP VIEW \"${viewName}\"`);\n    }\n\n    /**\n     * Builds remove view sql.\n     */\n    protected deleteViewDefinitionSql(viewOrPath: View|string): Query {\n        const viewName = viewOrPath instanceof View ? viewOrPath.name : viewOrPath;\n        const qb = this.connection.createQueryBuilder();\n        const [query, parameters] = qb.delete()\n            .from(this.getTypeormMetadataTableName())\n            .where(`${qb.escape(\"type\")} = 'VIEW'`)\n            .andWhere(`${qb.escape(\"name\")} = :name`, { name: viewName })\n            .getQueryAndParameters();\n\n        return new Query(query, parameters);\n    }\n\n    /**\n     * Builds create index sql.\n     */\n    protected createIndexSql(table: Table, index: TableIndex): Query {\n        const columns = index.columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n        return new Query(`CREATE ${index.isUnique ? \"UNIQUE \" : \"\"}INDEX \"${index.name}\" ON \"${table.name}\" (${columns}) ${index.where ? \"WHERE \" + index.where : \"\"}`);\n    }\n\n    /**\n     * Builds drop index sql.\n     */\n    protected dropIndexSql(indexOrName: TableIndex|string): Query {\n        let indexName = indexOrName instanceof TableIndex ? indexOrName.name : indexOrName;\n        return new Query(`DROP INDEX \"${indexName}\"`);\n    }\n\n    /**\n     * Builds a query for create column.\n     */\n    protected buildCreateColumnSql(column: TableColumn, skipPrimary?: boolean): string {\n        let c = \"\\\"\" + column.name + \"\\\"\";\n        if (column instanceof ColumnMetadata) {\n            c += \" \" + this.driver.normalizeType(column);\n        } else {\n            c += \" \" + this.connection.driver.createFullType(column);\n        }\n\n        if (column.enum)\n            c += \" CHECK( \" + column.name + \" IN (\" + column.enum.map(val => \"'\" + val + \"'\").join(\",\") + \") )\";\n        if (column.isPrimary && !skipPrimary)\n            c += \" PRIMARY KEY\";\n        if (column.isGenerated === true && column.generationStrategy === \"increment\") // don't use skipPrimary here since updates can update already exist primary without auto inc.\n            c += \" AUTOINCREMENT\";\n        if (column.collation)\n            c += \" COLLATE \" + column.collation;\n        if (column.isNullable !== true)\n            c += \" NOT NULL\";\n        if (column.default !== undefined && column.default !== null)\n            c += \" DEFAULT (\" + column.default + \")\";\n\n        return c;\n    }\n\n    protected async recreateTable(newTable: Table, oldTable: Table, migrateData = true): Promise<void> {\n        const upQueries: Query[] = [];\n        const downQueries: Query[] = [];\n\n        // drop old table indices\n        oldTable.indices.forEach(index => {\n            upQueries.push(this.dropIndexSql(index));\n            downQueries.push(this.createIndexSql(oldTable, index));\n        });\n\n        // change table name into 'temporary_table'\n        newTable.name = \"temporary_\" + newTable.name;\n\n        // create new table\n        upQueries.push(this.createTableSql(newTable, true));\n        downQueries.push(this.dropTableSql(newTable));\n\n        // migrate all data from the old table into new table\n        if (migrateData) {\n            let newColumnNames = newTable.columns.map(column => `\"${column.name}\"`).join(\", \");\n            let oldColumnNames = oldTable.columns.map(column => `\"${column.name}\"`).join(\", \");\n            if (oldTable.columns.length < newTable.columns.length) {\n                newColumnNames = newTable.columns.filter(column => {\n                    return oldTable.columns.find(c => c.name === column.name);\n                }).map(column => `\"${column.name}\"`).join(\", \");\n\n            } else if (oldTable.columns.length > newTable.columns.length) {\n                oldColumnNames = oldTable.columns.filter(column => {\n                    return newTable.columns.find(c => c.name === column.name);\n                }).map(column => `\"${column.name}\"`).join(\", \");\n            }\n\n            upQueries.push(new Query(`INSERT INTO \"${newTable.name}\"(${newColumnNames}) SELECT ${oldColumnNames} FROM \"${oldTable.name}\"`));\n            downQueries.push(new Query(`INSERT INTO \"${oldTable.name}\"(${oldColumnNames}) SELECT ${newColumnNames} FROM \"${newTable.name}\"`));\n        }\n\n        // drop old table\n        upQueries.push(this.dropTableSql(oldTable));\n        downQueries.push(this.createTableSql(oldTable, true));\n\n        // rename old table\n        upQueries.push(new Query(`ALTER TABLE \"${newTable.name}\" RENAME TO \"${oldTable.name}\"`));\n        downQueries.push(new Query(`ALTER TABLE \"${oldTable.name}\" RENAME TO \"${newTable.name}\"`));\n        newTable.name = oldTable.name;\n\n        // recreate table indices\n        newTable.indices.forEach(index => {\n            // new index may be passed without name. In this case we generate index name manually.\n            if (!index.name)\n                index.name = this.connection.namingStrategy.indexName(newTable.name, index.columnNames, index.where);\n            upQueries.push(this.createIndexSql(newTable, index));\n            downQueries.push(this.dropIndexSql(index));\n        });\n\n        await this.executeQueries(upQueries, downQueries);\n        this.replaceCachedTable(oldTable, newTable);\n    }\n\n}\n"],"sourceRoot":"../.."}