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- старый объект TableColumnnewColumn- новый объект 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
Создает новое проверочное ограничение.