import { MigrationInterface, QueryRunner } from "typeorm";

export class AddTableProfile31707207718721 implements MigrationInterface {
    name = 'AddTableProfile31707207718721'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE \`posMaster\` DROP FOREIGN KEY \`FK_d15696d0e541ead772db817b36a\``);
        await queryRunner.query(`ALTER TABLE \`posMaster\` DROP FOREIGN KEY \`FK_dca00872043f09a74af1d5172f3\``);
        await queryRunner.query(`DROP INDEX \`FK_1acc4ba5b4af308f0d8a1b7b249\` ON \`posMaster\``);
        await queryRunner.query(`DROP INDEX \`FK_9d29f52dcf499db3a5e8209b6dc\` ON \`posMaster\``);
        await queryRunner.query(`DROP INDEX \`IDX_d15696d0e541ead772db817b36\` ON \`posMaster\``);
        await queryRunner.query(`DROP INDEX \`IDX_dca00872043f09a74af1d5172f\` ON \`posMaster\``);
        await queryRunner.query(`DROP INDEX \`REL_d15696d0e541ead772db817b36\` ON \`posMaster\``);
        await queryRunner.query(`DROP INDEX \`REL_dca00872043f09a74af1d5172f\` ON \`posMaster\``);
        await queryRunner.query(`DROP INDEX \`IDX_49d2dcf6c8bd789ca99df7dc0d\` ON \`profile\``);
        await queryRunner.query(`DROP INDEX \`IDX_b5bfc34771c02a8078b9bf8944\` ON \`profile\``);
        await queryRunner.query(`ALTER TABLE \`posMaster\` DROP COLUMN \`currentHolderId\``);
        await queryRunner.query(`ALTER TABLE \`posMaster\` DROP COLUMN \`nextHolderId\``);
        await queryRunner.query(`ALTER TABLE \`posMaster\` DROP COLUMN \`profileIdCurrentHolder\``);
        await queryRunner.query(`ALTER TABLE \`posMaster\` DROP COLUMN \`profileIdNextHolder\``);
        await queryRunner.query(`ALTER TABLE \`posMaster\` ADD \`current_holderId\` varchar(40) NULL COMMENT 'คนครองปัจจุบัน เมื่อทำสำเนาโครงสร้างและตำแหน่งพร้อมกับคนครองมา คนครองจะอยู่ในฟิลด์นี้'`);
        await queryRunner.query(`ALTER TABLE \`posMaster\` ADD UNIQUE INDEX \`IDX_9f765a0fef405dfafbd1b5f6c0\` (\`current_holderId\`)`);
        await queryRunner.query(`ALTER TABLE \`posMaster\` ADD \`next_holderId\` varchar(40) NULL COMMENT 'คนที่กำลังจะมาครอง ตอนปรับโครงสร้าง ถ้าเลือกให้ใครมาครอง ProfileId ของคนนั้นจะมาอยู่ในช่องนี้ รวมทั้งตอนเลือกตำแหน่งเพื่อบรรจุ แต่งตั้ง เลื่อน ย้าย ในระบบบรรจุแต่งตั้งด้วย'`);
        await queryRunner.query(`ALTER TABLE \`posMaster\` ADD UNIQUE INDEX \`IDX_22499e79738c6873fc7ede3f6d\` (\`next_holderId\`)`);
        await queryRunner.query(`CREATE UNIQUE INDEX \`REL_9f765a0fef405dfafbd1b5f6c0\` ON \`posMaster\` (\`current_holderId\`)`);
        await queryRunner.query(`CREATE UNIQUE INDEX \`REL_22499e79738c6873fc7ede3f6d\` ON \`posMaster\` (\`next_holderId\`)`);
        await queryRunner.query(`ALTER TABLE \`posMaster\` ADD CONSTRAINT \`FK_9f765a0fef405dfafbd1b5f6c0a\` FOREIGN KEY (\`current_holderId\`) REFERENCES \`profile\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`posMaster\` ADD CONSTRAINT \`FK_22499e79738c6873fc7ede3f6dd\` FOREIGN KEY (\`next_holderId\`) REFERENCES \`profile\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE \`posMaster\` DROP FOREIGN KEY \`FK_22499e79738c6873fc7ede3f6dd\``);
        await queryRunner.query(`ALTER TABLE \`posMaster\` DROP FOREIGN KEY \`FK_9f765a0fef405dfafbd1b5f6c0a\``);
        await queryRunner.query(`DROP INDEX \`REL_22499e79738c6873fc7ede3f6d\` ON \`posMaster\``);
        await queryRunner.query(`DROP INDEX \`REL_9f765a0fef405dfafbd1b5f6c0\` ON \`posMaster\``);
        await queryRunner.query(`ALTER TABLE \`posMaster\` DROP INDEX \`IDX_22499e79738c6873fc7ede3f6d\``);
        await queryRunner.query(`ALTER TABLE \`posMaster\` DROP COLUMN \`next_holderId\``);
        await queryRunner.query(`ALTER TABLE \`posMaster\` DROP INDEX \`IDX_9f765a0fef405dfafbd1b5f6c0\``);
        await queryRunner.query(`ALTER TABLE \`posMaster\` DROP COLUMN \`current_holderId\``);
        await queryRunner.query(`ALTER TABLE \`posMaster\` ADD \`profileIdNextHolder\` varchar(40) NULL COMMENT 'คนที่กำลังจะมาครอง ตอนปรับโครงสร้าง ถ้าเลือกให้ใครมาครอง ProfileId ของคนนั้นจะมาอยู่ในช่องนี้ รวมทั้งตอนเลือกตำแหน่งเพื่อบรรจุ แต่งตั้ง เลื่อน ย้าย ในระบบบรรจุแต่งตั้งด้วย'`);
        await queryRunner.query(`ALTER TABLE \`posMaster\` ADD \`profileIdCurrentHolder\` varchar(40) NULL COMMENT 'คนครองปัจจุบัน เมื่อทำสำเนาโครงสร้างและตำแหน่งพร้อมกับคนครองมา คนครองจะอยู่ในฟิลด์นี้'`);
        await queryRunner.query(`ALTER TABLE \`posMaster\` ADD \`nextHolderId\` varchar(36) NULL`);
        await queryRunner.query(`ALTER TABLE \`posMaster\` ADD \`currentHolderId\` varchar(36) NULL`);
        await queryRunner.query(`CREATE UNIQUE INDEX \`IDX_b5bfc34771c02a8078b9bf8944\` ON \`profile\` (\`currentHolderId\`)`);
        await queryRunner.query(`CREATE UNIQUE INDEX \`IDX_49d2dcf6c8bd789ca99df7dc0d\` ON \`profile\` (\`nextHolderId\`)`);
        await queryRunner.query(`CREATE UNIQUE INDEX \`REL_dca00872043f09a74af1d5172f\` ON \`posMaster\` (\`currentHolderId\`)`);
        await queryRunner.query(`CREATE UNIQUE INDEX \`REL_d15696d0e541ead772db817b36\` ON \`posMaster\` (\`nextHolderId\`)`);
        await queryRunner.query(`CREATE UNIQUE INDEX \`IDX_dca00872043f09a74af1d5172f\` ON \`posMaster\` (\`currentHolderId\`)`);
        await queryRunner.query(`CREATE UNIQUE INDEX \`IDX_d15696d0e541ead772db817b36\` ON \`posMaster\` (\`nextHolderId\`)`);
        await queryRunner.query(`CREATE INDEX \`FK_9d29f52dcf499db3a5e8209b6dc\` ON \`posMaster\` (\`profileIdNextHolder\`)`);
        await queryRunner.query(`CREATE INDEX \`FK_1acc4ba5b4af308f0d8a1b7b249\` ON \`posMaster\` (\`profileIdCurrentHolder\`)`);
        await queryRunner.query(`ALTER TABLE \`posMaster\` ADD CONSTRAINT \`FK_dca00872043f09a74af1d5172f3\` FOREIGN KEY (\`currentHolderId\`) REFERENCES \`profile\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`posMaster\` ADD CONSTRAINT \`FK_d15696d0e541ead772db817b36a\` FOREIGN KEY (\`nextHolderId\`) REFERENCES \`profile\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
    }

}
