Перейти к основному содержанию

API Query Runner

Неофициальный Бета-перевод

Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →

Для программного изменения схемы БД используйте QueryRunner:

import {
MigrationInterface,
QueryRunner,
Table,
TableIndex,
TableColumn,
TableForeignKey,
} from "typeorm"

export class QuestionRefactoringTIMESTAMP implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.createTable(
new Table({
name: "question",
columns: [
{
name: "id",
type: "int",
isPrimary: true,
},
{
name: "name",
type: "varchar",
},
],
}),
true,
)

await queryRunner.createIndex(
"question",
new TableIndex({
name: "IDX_QUESTION_NAME",
columnNames: ["name"],
}),
)

await queryRunner.createTable(
new Table({
name: "answer",
columns: [
{
name: "id",
type: "int",
isPrimary: true,
},
{
name: "name",
type: "varchar",
},
{
name: "created_at",
type: "timestamp",
default: "now()",
},
],
}),
true,
)

await queryRunner.addColumn(
"answer",
new TableColumn({
name: "questionId",
type: "int",
}),
)

await queryRunner.createForeignKey(
"answer",
new TableForeignKey({
columnNames: ["questionId"],
referencedColumnNames: ["id"],
referencedTableName: "question",
onDelete: "CASCADE",
}),
)
}

async down(queryRunner: QueryRunner): Promise<void> {
const table = await queryRunner.getTable("answer")
const foreignKey = table.foreignKeys.find(
(fk) => fk.columnNames.indexOf("questionId") !== -1,
)
await queryRunner.dropForeignKey("answer", foreignKey)
await queryRunner.dropColumn("answer", "questionId")
await queryRunner.dropTable("answer")
await queryRunner.dropIndex("question", "IDX_QUESTION_NAME")
await queryRunner.dropTable("question")
}
}

getDatabases(): Promise<string[]>

queryRunner.getDatabases()
Возвращает все доступные базы данных (включая системные).


getSchemas(database?: string): Promise<string[]>
  • database - Если указан, возвращает схемы для этой базы данных

Возвращает все доступные схемы (включая системные). Актуально для SQLServer и Postgres.


getTable(tableName: string): Promise<Table|undefined>
  • tableName - имя загружаемой таблицы

Загружает метаданные таблицы из базы данных.


getTables(tableNames: string[]): Promise<Table[]>
  • tableNames - имена загружаемых таблиц

Загружает таблицы по заданным именам из базы данных.


hasDatabase(database: string): Promise<boolean>
  • database - имя проверяемой базы данных

Проверяет, существует ли база данных с указанным именем.


hasSchema(schema: string): Promise<boolean>
  • schema - имя проверяемой схемы

Проверяет, существует ли схема с указанным именем. Используется только для SqlServer и Postgres.


hasTable(table: Table|string): Promise<boolean>
  • table - объект таблицы или её название

Проверяет существование таблицы.


hasColumn(table: Table|string, columnName: string): Promise<boolean>
  • table - объект таблицы или её название

  • columnName - имя проверяемого столбца

Проверяет существование столбца в таблице.


createDatabase(database: string, ifNotExist?: boolean): Promise<void>
  • database - имя базы данных

  • ifNotExist - пропускает создание при true, иначе ошибка при существовании БД

Создает новую базу данных.


dropDatabase(database: string, ifExist?: boolean): Promise<void>
  • database - имя базы данных

  • ifExist - пропускает удаление при true, иначе ошибка при отсутствии БД

Удаляет базу данных.


createSchema(schemaPath: string, ifNotExist?: boolean): Promise<void>
  • schemaPath - имя схемы. Для SQLServer принимает путь (напр. 'dbName.schemaName'). При указании пути создаёт схему в указанной БД

  • ifNotExist - пропускает создание при true, иначе ошибка при существовании схемы

Создает новую схему таблиц.


dropSchema(schemaPath: string, ifExist?: boolean, isCascade?: boolean): Promise<void>
  • schemaPath - имя схемы. Для SQLServer принимает путь (напр. 'dbName.schemaName'). При указании пути удаляет схему в указанной БД

  • ifExist - пропускает удаление при true, иначе ошибка при отсутствии схемы

  • isCascade - При true автоматически удаляет объекты схемы (таблицы, функции и т.д.). Только для Postgres.

Удаляет схему таблиц.


createTable(table: Table, ifNotExist?: boolean, createForeignKeys?: boolean, createIndices?: boolean): Promise<void>
  • table - Объект таблицы

  • ifNotExist - пропускает создание при true, иначе ошибка при существовании таблицы. По умолчанию false

  • createForeignKeys - создавать ли внешние ключи. По умолчанию true

  • createIndices - создавать ли индексы. По умолчанию true

Создает новую таблицу.


dropTable(table: Table|string, ifExist?: boolean, dropForeignKeys?: boolean, dropIndices?: boolean): Promise<void>
  • table - Объект или имя удаляемой таблицы

  • ifExist - пропускает удаление при true, иначе ошибка при отсутствии таблицы

  • dropForeignKeys - удалять ли внешние ключи. По умолчанию true

  • dropIndices - удалять ли индексы. По умолчанию true

Удаляет таблицу.


renameTable(oldTableOrName: Table|string, newTableName: string): Promise<void>
  • oldTableOrName - Объект или имя переименовываемой таблицы

  • newTableName - новое имя таблицы

Переименовывает таблицу.


addColumn(table: Table|string, column: TableColumn): Promise<void>
  • table - объект таблицы или её название

  • column - новый столбец

Добавляет новые столбцы.


addColumns(table: Table|string, columns: TableColumn[]): Promise<void>
  • table - объект таблицы или её название

  • columns - новые столбцы

Добавляет новые столбцы.


renameColumn(table: Table|string, oldColumnOrName: TableColumn|string, newColumnOrName: TableColumn|string): Promise<void>
  • table - объект таблицы или её название

  • oldColumnOrName - старый столбец (объект TableColumn или имя)

  • newColumnOrName - новый столбец (объект TableColumn или имя)

Переименовывает столбец.


changeColumn(table: Table|string, oldColumn: TableColumn|string, newColumn: TableColumn): Promise<void>
  • table - объект таблицы или её название

  • oldColumn - старый столбец (объект TableColumn или имя)

  • newColumn - новый столбец. Принимает объект TableColumn

Изменяет столбец в таблице.


changeColumns(table: Table|string, changedColumns: { oldColumn: TableColumn, newColumn: TableColumn }[]): Promise<void>
  • table - объект таблицы или её название

  • changedColumns - массив измененных столбцов:

    • oldColumn - старый объект TableColumn
    • newColumn - новый объект TableColumn

Изменяет столбцы в таблице.


dropColumn(table: Table|string, column: TableColumn|string): Promise<void>
  • table - объект таблицы или её название

  • column - объект TableColumn или имя столбца для удаления

Удаляет столбец в таблице.


dropColumns(table: Table|string, columns: TableColumn[]|string[]): Promise<void>
  • table - объект таблицы или её название

  • columns - массив объектов TableColumn или имён столбцов для удаления

Удаляет столбцы в таблице.


createPrimaryKey(table: Table|string, columnNames: string[]): Promise<void>
  • table - объект таблицы или её название

  • columnNames - массив имён столбцов, которые станут первичным ключом

Создает новый первичный ключ.


updatePrimaryKeys(table: Table|string, columns: TableColumn[]): Promise<void>
  • table - объект таблицы или её название

  • columns - массив объектов TableColumn для обновления

Обновляет составные первичные ключи.


dropPrimaryKey(table: Table|string): Promise<void>
  • table - объект таблицы или её название

Удаляет первичный ключ.


createUniqueConstraint(table: Table|string, uniqueConstraint: TableUnique): Promise<void>
  • table - объект таблицы или её название

  • uniqueConstraint - объект TableUnique для создания

Создает новое ограничение уникальности.

Примечание: не работает в MySQL, так как MySQL хранит ограничения уникальности как уникальные индексы. Вместо этого используйте метод createIndex().


createUniqueConstraints(table: Table|string, uniqueConstraints: TableUnique[]): Promise<void>
  • table - объект таблицы или её название

  • uniqueConstraints - массив объектов TableUnique для создания

Создает новые ограничения уникальности.

Примечание: не работает в MySQL, так как MySQL хранит ограничения уникальности как уникальные индексы. Вместо этого используйте метод createIndices().


dropUniqueConstraint(table: Table|string, uniqueOrName: TableUnique|string): Promise<void>
  • table - объект таблицы или её название

  • uniqueOrName - объект TableUnique или имя ограничения для удаления

Удаляет уникальное ограничение.

Примечание: не работает в MySQL, так как MySQL хранит ограничения уникальности как уникальные индексы. Вместо этого используйте метод dropIndex().


dropUniqueConstraints(table: Table|string, uniqueConstraints: TableUnique[]): Promise<void>
  • table - объект таблицы или её название

  • uniqueConstraints - массив объектов TableUnique для удаления

Удаляет уникальные ограничения.

Примечание: не работает для MySQL, так как MySQL хранит ограничения уникальности как уникальные индексы. Вместо этого используйте метод dropIndices().


createCheckConstraint(table: Table|string, checkConstraint: TableCheck): Promise<void>
  • table - объект таблицы или её название

  • checkConstraint - объект TableCheck

Создает новое проверочное ограничение.

Примечание: MySQL не поддерживает check-ограничения.


createCheckConstraints(table: Table|string, checkConstraints: TableCheck[]): Promise<void>
  • table - объект таблицы или её название

  • checkConstraints - массив объектов TableCheck

Создает новое проверочное ограничение.

Примечание: MySQL не поддерживает check-ограничения.


dropCheckConstraint(table: Table|string, checkOrName: TableCheck|string): Promise<void>
  • table - объект таблицы или её название

  • checkOrName - объект TableCheck или имя ограничения

Удаляет check-ограничение.

Примечание: MySQL не поддерживает check-ограничения.


dropCheckConstraints(table: Table|string, checkConstraints: TableCheck[]): Promise<void>
  • table - объект таблицы или её название

  • checkConstraints - массив объектов TableCheck

Удаляет check-ограничения.

Примечание: MySQL не поддерживает check-ограничения.


createForeignKey(table: Table|string, foreignKey: TableForeignKey): Promise<void>
  • table - объект таблицы или её название

  • foreignKey - объект TableForeignKey

Создает новый внешний ключ.


createForeignKeys(table: Table|string, foreignKeys: TableForeignKey[]): Promise<void>
  • table - объект таблицы или её название

  • foreignKeys - массив объектов TableForeignKey

Создает новые внешние ключи.


dropForeignKey(table: Table|string, foreignKeyOrName: TableForeignKey|string): Promise<void>
  • table - объект таблицы или её название

  • foreignKeyOrName - объект TableForeignKey или имя внешнего ключа

Удаляет внешний ключ.


dropForeignKeys(table: Table|string, foreignKeys: TableForeignKey[]): Promise<void>
  • table - объект таблицы или её название

  • foreignKeys - массив объектов TableForeignKey

Удаляет внешние ключи.


createIndex(table: Table|string, index: TableIndex): Promise<void>
  • table - объект таблицы или её название

  • index - объект TableIndex

Создает новый индекс.


createIndices(table: Table|string, indices: TableIndex[]): Promise<void>
  • table - объект таблицы или её название

  • indices - массив объектов TableIndex

Создает новые индексы.


dropIndex(table: Table|string, index: TableIndex|string): Promise<void>
  • table - объект таблицы или её название

  • index - объект TableIndex или имя индекса

Удаляет индекс.


dropIndices(table: Table|string, indices: TableIndex[]): Promise<void>
  • table - объект таблицы или её название

  • indices - массив объектов TableIndex

Удаляет индексы.


clearTable(tableName: string): Promise<void>
  • tableName - название таблицы

Очищает всё содержимое таблицы.

Примечание: эта операция использует SQL-запрос TRUNCATE, который нельзя отменить в транзакциях.


enableSqlMemory(): void

Включает специальный режим работы query runner, при котором SQL-запросы не выполняются, а сохраняются в специальной переменной внутри query runner. Вы можете получить сохранённые SQL-запросы с помощью метода getMemorySql().


disableSqlMemory(): void

Отключает специальный режим работы query runner, при котором SQL-запросы не выполняются. Ранее сохранённые SQL-запросы будут удалены.


clearSqlMemory(): void

Очищает все сохранённые SQL-запросы.


getMemorySql(): SqlInMemory
  • возвращает объект SqlInMemory с массивами SQL-запросов upQueries и downQueries

Возвращает SQL-запросы, сохранённые в памяти. Параметры в запросах уже заменены.


executeMemoryUpSql(): Promise<void>

Выполняет сохранённые SQL-запросы для операций обновления (up).


executeMemoryDownSql(): Promise<void>

Выполняет сохранённые SQL-запросы для операций отката (down).