{"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":"../.."}
|