feat: create RedisNode migration and update Project and RedisNode entities to use JoinTable for many-to-many relationship
This commit is contained in:
55
src/migrations/1760028994511-redisNode.ts
Normal file
55
src/migrations/1760028994511-redisNode.ts
Normal file
@ -0,0 +1,55 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class RedisNode1760028994511 implements MigrationInterface {
|
||||
name = "RedisNode1760028994511";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE \`project_redis_nodes_redis_node\` (\`projectId\` varchar(36) NOT NULL, \`redisNodeId\` varchar(36) NOT NULL, INDEX \`IDX_1b5acdd3dc2843538be4a7589d\` (\`projectId\`), INDEX \`IDX_71d51ca25e0ff1c17926fc1676\` (\`redisNodeId\`), PRIMARY KEY (\`projectId\`, \`redisNodeId\`)) ENGINE=InnoDB`
|
||||
);
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE \`redis_node_projects_project\` (\`redisNodeId\` varchar(36) NOT NULL, \`projectId\` varchar(36) NOT NULL, INDEX \`IDX_ebe30bc9d29b5ce861f487dc95\` (\`redisNodeId\`), INDEX \`IDX_34313ecc91fa7073bd82a86011\` (\`projectId\`), PRIMARY KEY (\`redisNodeId\`, \`projectId\`)) ENGINE=InnoDB`
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE \`project_redis_nodes_redis_node\` ADD CONSTRAINT \`FK_1b5acdd3dc2843538be4a7589d4\` FOREIGN KEY (\`projectId\`) REFERENCES \`project\`(\`id\`) ON DELETE CASCADE ON UPDATE CASCADE`
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE \`project_redis_nodes_redis_node\` ADD CONSTRAINT \`FK_71d51ca25e0ff1c17926fc16762\` FOREIGN KEY (\`redisNodeId\`) REFERENCES \`redisNode\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE \`redis_node_projects_project\` ADD CONSTRAINT \`FK_ebe30bc9d29b5ce861f487dc950\` FOREIGN KEY (\`redisNodeId\`) REFERENCES \`redisNode\`(\`id\`) ON DELETE CASCADE ON UPDATE CASCADE`
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE \`redis_node_projects_project\` ADD CONSTRAINT \`FK_34313ecc91fa7073bd82a86011d\` FOREIGN KEY (\`projectId\`) REFERENCES \`project\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE \`redis_node_projects_project\` DROP FOREIGN KEY \`FK_34313ecc91fa7073bd82a86011d\``
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE \`redis_node_projects_project\` DROP FOREIGN KEY \`FK_ebe30bc9d29b5ce861f487dc950\``
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE \`project_redis_nodes_redis_node\` DROP FOREIGN KEY \`FK_71d51ca25e0ff1c17926fc16762\``
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE \`project_redis_nodes_redis_node\` DROP FOREIGN KEY \`FK_1b5acdd3dc2843538be4a7589d4\``
|
||||
);
|
||||
await queryRunner.query(
|
||||
`DROP INDEX \`IDX_34313ecc91fa7073bd82a86011\` ON \`redis_node_projects_project\``
|
||||
);
|
||||
await queryRunner.query(
|
||||
`DROP INDEX \`IDX_ebe30bc9d29b5ce861f487dc95\` ON \`redis_node_projects_project\``
|
||||
);
|
||||
await queryRunner.query(`DROP TABLE \`redis_node_projects_project\``);
|
||||
await queryRunner.query(
|
||||
`DROP INDEX \`IDX_71d51ca25e0ff1c17926fc1676\` ON \`project_redis_nodes_redis_node\``
|
||||
);
|
||||
await queryRunner.query(
|
||||
`DROP INDEX \`IDX_1b5acdd3dc2843538be4a7589d\` ON \`project_redis_nodes_redis_node\``
|
||||
);
|
||||
await queryRunner.query(`DROP TABLE \`project_redis_nodes_redis_node\``);
|
||||
}
|
||||
}
|
||||
@ -4,6 +4,7 @@ import {
|
||||
Column,
|
||||
Entity,
|
||||
JoinColumn,
|
||||
JoinTable,
|
||||
ManyToMany,
|
||||
OneToMany,
|
||||
OneToOne,
|
||||
@ -35,6 +36,6 @@ export class Project {
|
||||
functions: FunctionEntity[];
|
||||
|
||||
@ManyToMany(() => RedisNode, (redisNode) => redisNode.projects)
|
||||
@JoinColumn()
|
||||
@JoinTable()
|
||||
redisNodes: RedisNode[];
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@ import { Project } from "../../project/entities/project.entity";
|
||||
import {
|
||||
Column,
|
||||
Entity,
|
||||
JoinColumn,
|
||||
JoinTable,
|
||||
ManyToMany,
|
||||
PrimaryGeneratedColumn,
|
||||
} from "typeorm";
|
||||
@ -25,6 +25,6 @@ export class RedisNode {
|
||||
password: string | null;
|
||||
|
||||
@ManyToMany(() => Project, (project) => project.redisNodes)
|
||||
@JoinColumn()
|
||||
@JoinTable()
|
||||
projects: Project[];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user