change: make query id to uuid
This commit is contained in:
parent
c0a0365406
commit
df231d6462
12 changed files with 119 additions and 20 deletions
94
src/migrations/1742922178643-queryToUUID.ts
Normal file
94
src/migrations/1742922178643-queryToUUID.ts
Normal file
|
@ -0,0 +1,94 @@
|
|||
import { MigrationInterface, QueryRunner, TableColumn, TableForeignKey } from "typeorm";
|
||||
import { getTypeByORM, isIncrementPrimary, isUUIDPrimary } from "./ormHelper";
|
||||
import { query } from "../entity/configuration/query";
|
||||
|
||||
export class QueryToUUID1742922178643 implements MigrationInterface {
|
||||
name = "QueryToUUID1742922178643";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
const table = await queryRunner.getTable("newsletter");
|
||||
const foreignKey = table.foreignKeys.find((fk) => fk.columnNames.indexOf("recipientsByQueryId") !== -1);
|
||||
await queryRunner.dropForeignKey("newsletter", foreignKey);
|
||||
|
||||
const entries = await queryRunner.manager.getRepository(query).find({ select: { title: true, query: true } });
|
||||
await queryRunner.clearTable("query");
|
||||
|
||||
await queryRunner.dropColumn("newsletter", "recipientsByQueryId");
|
||||
await queryRunner.dropColumn("query", "id");
|
||||
|
||||
await queryRunner.addColumn(
|
||||
"query",
|
||||
new TableColumn({
|
||||
name: "id",
|
||||
...getTypeByORM("uuid"),
|
||||
...isUUIDPrimary,
|
||||
})
|
||||
);
|
||||
await queryRunner.addColumn(
|
||||
"newsletter",
|
||||
new TableColumn({
|
||||
name: "recipientsByQueryId",
|
||||
...getTypeByORM("uuid", true),
|
||||
})
|
||||
);
|
||||
|
||||
await queryRunner.manager.createQueryBuilder().insert().into("query").values(entries).execute();
|
||||
|
||||
await queryRunner.createForeignKey(
|
||||
"newsletter",
|
||||
new TableForeignKey({
|
||||
columnNames: ["recipientsByQueryId"],
|
||||
referencedColumnNames: ["id"],
|
||||
referencedTableName: "query",
|
||||
onDelete: "CASCADE",
|
||||
onUpdate: "RESTRICT",
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
const table = await queryRunner.getTable("newsletter");
|
||||
const foreignKey = table.foreignKeys.find((fk) => fk.columnNames.indexOf("recipientsByQueryId") !== -1);
|
||||
await queryRunner.dropForeignKey("newsletter", foreignKey);
|
||||
|
||||
const entries = await queryRunner.manager.getRepository(query).find({ select: { title: true, query: true } });
|
||||
await queryRunner.clearTable("query");
|
||||
|
||||
await queryRunner.dropColumn("newsletter", "recipientsByQueryId");
|
||||
await queryRunner.dropColumn("query", "id");
|
||||
|
||||
await queryRunner.addColumn(
|
||||
"query",
|
||||
new TableColumn({
|
||||
name: "id",
|
||||
...getTypeByORM("int"),
|
||||
...isIncrementPrimary,
|
||||
})
|
||||
);
|
||||
await queryRunner.addColumn(
|
||||
"newsletter",
|
||||
new TableColumn({
|
||||
name: "recipientsByQueryId",
|
||||
...getTypeByORM("int", true),
|
||||
})
|
||||
);
|
||||
|
||||
await queryRunner.manager
|
||||
.createQueryBuilder()
|
||||
.insert()
|
||||
.into("query")
|
||||
.values(entries.map((e, i) => ({ ...e, id: i + 1 })))
|
||||
.execute();
|
||||
|
||||
await queryRunner.createForeignKey(
|
||||
"newsletter",
|
||||
new TableForeignKey({
|
||||
columnNames: ["recipientsByQueryId"],
|
||||
referencedColumnNames: ["id"],
|
||||
referencedTableName: "query",
|
||||
onDelete: "CASCADE",
|
||||
onUpdate: "RESTRICT",
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue