import { MigrationInterface, QueryRunner } from "typeorm";

export class AddTableDevelopmentRequest1727689358961 implements MigrationInterface {
    name = 'AddTableDevelopmentRequest1727689358961'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TABLE \`developmentRequest\` (\`id\` varchar(36) NOT NULL, \`createdAt\` datetime(6) NOT NULL COMMENT 'สร้างข้อมูลเมื่อ' DEFAULT CURRENT_TIMESTAMP(6), \`createdUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่สร้างข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`lastUpdatedAt\` datetime(6) NOT NULL COMMENT 'แก้ไขข้อมูลล่าสุดเมื่อ' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), \`lastUpdateUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่แก้ไขข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`createdFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่สร้างข้อมูล' DEFAULT 'string', \`lastUpdateFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่แก้ไขข้อมูลล่าสุด' DEFAULT 'string', \`status\` varchar(255) NULL COMMENT 'สถานะ', \`reason\` varchar(255) NULL COMMENT 'หมายเหตุ', \`profileId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง Profile', \`profileEmployeeId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง ProfileEmployee', \`name\` varchar(255) NULL COMMENT 'ชื่อเรื่อง', \`isDevelopment70\` tinyint NOT NULL COMMENT 'วิธีพัฒนา70' DEFAULT 0, \`isDevelopment20\` tinyint NOT NULL COMMENT 'วิธีพัฒนา20' DEFAULT 0, \`isDevelopment10\` tinyint NOT NULL COMMENT 'วิธีพัฒนา10' DEFAULT 0, \`reasonDevelopment70\` varchar(255) NULL COMMENT 'รายละเอียดอื่นๆ 70 แผน', \`reasonDevelopment20\` varchar(255) NULL COMMENT 'รายละเอียดอื่นๆ 20 แผน', \`reasonDevelopment10\` varchar(255) NULL COMMENT 'รายละเอียดอื่นๆ 10 แผน', \`developmentTarget\` varchar(255) NULL COMMENT 'เป้าหมายการนำไปพัฒนางาน', \`developmentResults\` varchar(255) NULL COMMENT 'วิธีการวัดผลการพัฒนา', \`developmentReport\` varchar(255) NULL COMMENT 'รายงานผลการพัฒนา', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`);
        await queryRunner.query(`ALTER TABLE \`developmentProject\` ADD \`developmentRequestId\` varchar(255) NULL COMMENT 'โครงการ/หลักสูตรการฝึกอบรม'`);
        await queryRunner.query(`ALTER TABLE \`profileDevelopmentHistory\` ADD \`type\` varchar(255) NULL COMMENT 'ระบบ'`);
        await queryRunner.query(`ALTER TABLE \`profileDevelopmentHistory\` ADD \`developmentTarget\` varchar(255) NULL COMMENT 'เป้าหมายการนำไปพัฒนางาน'`);
        await queryRunner.query(`ALTER TABLE \`profileDevelopmentHistory\` ADD \`developmentResults\` varchar(255) NULL COMMENT 'วิธีการวัดผลการพัฒนา'`);
        await queryRunner.query(`ALTER TABLE \`profileDevelopmentHistory\` ADD \`developmentReport\` varchar(255) NULL COMMENT 'รายงานผลการพัฒนา'`);
        await queryRunner.query(`ALTER TABLE \`profileDevelopment\` ADD \`type\` varchar(255) NULL COMMENT 'ระบบ'`);
        await queryRunner.query(`ALTER TABLE \`profileDevelopment\` ADD \`developmentTarget\` varchar(255) NULL COMMENT 'เป้าหมายการนำไปพัฒนางาน'`);
        await queryRunner.query(`ALTER TABLE \`profileDevelopment\` ADD \`developmentResults\` varchar(255) NULL COMMENT 'วิธีการวัดผลการพัฒนา'`);
        await queryRunner.query(`ALTER TABLE \`profileDevelopment\` ADD \`developmentReport\` varchar(255) NULL COMMENT 'รายงานผลการพัฒนา'`);
        await queryRunner.query(`ALTER TABLE \`developmentRequest\` ADD CONSTRAINT \`FK_0dd78a592b78ee0db5b2c8386d2\` FOREIGN KEY (\`profileId\`) REFERENCES \`profile\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`developmentRequest\` ADD CONSTRAINT \`FK_0c08cab1ebc7e022cad0c6a7556\` FOREIGN KEY (\`profileEmployeeId\`) REFERENCES \`profileEmployee\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`developmentProject\` ADD CONSTRAINT \`FK_4913ef1466f9f35c1429e213d4b\` FOREIGN KEY (\`profileDevelopmentId\`) REFERENCES \`profileDevelopment\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`developmentProject\` ADD CONSTRAINT \`FK_8e3f2e86427befeff4283ae80f0\` FOREIGN KEY (\`profileDevelopmentHistoryId\`) REFERENCES \`profileDevelopmentHistory\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`developmentProject\` ADD CONSTRAINT \`FK_e2819f1edc526aa71ac127418fa\` FOREIGN KEY (\`developmentRequestId\`) REFERENCES \`developmentRequest\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE \`developmentProject\` DROP FOREIGN KEY \`FK_e2819f1edc526aa71ac127418fa\``);
        await queryRunner.query(`ALTER TABLE \`developmentProject\` DROP FOREIGN KEY \`FK_8e3f2e86427befeff4283ae80f0\``);
        await queryRunner.query(`ALTER TABLE \`developmentProject\` DROP FOREIGN KEY \`FK_4913ef1466f9f35c1429e213d4b\``);
        await queryRunner.query(`ALTER TABLE \`developmentRequest\` DROP FOREIGN KEY \`FK_0c08cab1ebc7e022cad0c6a7556\``);
        await queryRunner.query(`ALTER TABLE \`developmentRequest\` DROP FOREIGN KEY \`FK_0dd78a592b78ee0db5b2c8386d2\``);
        await queryRunner.query(`ALTER TABLE \`profileDevelopment\` DROP COLUMN \`developmentReport\``);
        await queryRunner.query(`ALTER TABLE \`profileDevelopment\` DROP COLUMN \`developmentResults\``);
        await queryRunner.query(`ALTER TABLE \`profileDevelopment\` DROP COLUMN \`developmentTarget\``);
        await queryRunner.query(`ALTER TABLE \`profileDevelopment\` DROP COLUMN \`type\``);
        await queryRunner.query(`ALTER TABLE \`profileDevelopmentHistory\` DROP COLUMN \`developmentReport\``);
        await queryRunner.query(`ALTER TABLE \`profileDevelopmentHistory\` DROP COLUMN \`developmentResults\``);
        await queryRunner.query(`ALTER TABLE \`profileDevelopmentHistory\` DROP COLUMN \`developmentTarget\``);
        await queryRunner.query(`ALTER TABLE \`profileDevelopmentHistory\` DROP COLUMN \`type\``);
        await queryRunner.query(`ALTER TABLE \`developmentProject\` DROP COLUMN \`developmentRequestId\``);
        await queryRunner.query(`DROP TABLE \`developmentRequest\``);
    }

}
