import { MigrationInterface, QueryRunner } from "typeorm";

export class UpdateTableChildRanksub1710298184697 implements MigrationInterface {
    name = 'UpdateTableChildRanksub1710298184697'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`CREATE TABLE \`profileLeaveHistory\` (\`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', \`isActive\` tinyint NOT NULL COMMENT 'สถานะการใช้งาน' DEFAULT 0, \`dateStartLeave\` datetime NULL COMMENT 'วัน เดือน ปี ที่เริ่มลา', \`dateEndLeave\` datetime NULL COMMENT 'วัน เดือน ปี ที่สิ้นสุดลา', \`numLeave\` double NULL COMMENT 'ลาครั้งที่', \`sumLeave\` double NULL COMMENT 'ลามาแล้ว', \`totalLeave\` double NULL COMMENT 'รวมเป็น', \`status\` text NULL COMMENT 'สถานะ', \`typeLeaveId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง TypeLeave', \`reason\` text NULL COMMENT 'เหตุผล', \`profileLeaveId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง ProfileLeave', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`);
        await queryRunner.query(`CREATE TABLE \`profileLeave\` (\`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', \`profileId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง Profile', \`isActive\` tinyint NOT NULL COMMENT 'สถานะการใช้งาน' DEFAULT 0, \`restCount\` double NULL, \`restDay\` double NULL, \`sickCount\` double NULL COMMENT 'ลาพักผ่อน (วัน)', \`sickDay\` double NULL COMMENT 'ลาป่วย (วัน)', \`otherDay\` double NULL, \`personalCount\` double NULL, \`personalDay\` double NULL COMMENT 'ลากิจส่วนตัว (วัน)', \`studyCount\` double NULL, \`absentCount\` double NULL, \`absentDay\` double NULL COMMENT 'ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล (วัน)', \`agencyCount\` double NULL, \`agencyDay\` double NULL COMMENT 'ลาไปปฏิบัติงานในองค์การระหว่างประเทศ (วัน)', \`coupleCount\` double NULL, \`coupleDay\` double NULL COMMENT 'ลาติดตามคู่สมรส (วัน)', \`lateCount\` double NULL, \`lateDay\` double NULL, \`maternityCount\` double NULL, \`maternityDay\` double NULL COMMENT 'ลาคลอดบุตร (วัน)', \`militaryCount\` double NULL, \`militaryDay\` double NULL, \`ordainCount\` double NULL, \`ordainDay\` double NULL COMMENT 'ลาอุปสมบทหรือการลาประกอบพิธีฮัจย์ฯ (วัน)', \`otherCount\` double NULL, \`dateStartLeave\` datetime NULL COMMENT 'วัน เดือน ปี ที่เริ่มลา', \`dateEndLeave\` datetime NULL COMMENT 'วัน เดือน ปี ที่สิ้นสุดลา', \`numLeave\` double NULL COMMENT 'ลาครั้งที่', \`sumLeave\` double NULL COMMENT 'ลามาแล้ว', \`totalLeave\` double NULL COMMENT 'รวมเป็น', \`status\` text NULL COMMENT 'สถานะ', \`typeLeaveId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง TypeLeave', \`reason\` text NULL COMMENT 'เหตุผล', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`);
        await queryRunner.query(`CREATE TABLE \`profileAbilityHistory\` (\`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', \`isActive\` tinyint NOT NULL COMMENT 'สถานะการใช้งาน' DEFAULT 0, \`remark\` text NULL COMMENT 'หมายเหตุ', \`detail\` text NULL COMMENT 'รายละเอียด', \`reference\` text NULL COMMENT 'เอกสารอ้างอิง', \`dateStart\` datetime NULL COMMENT 'วันที่เริ่มต้น', \`dateEnd\` datetime NULL COMMENT 'วันที่สิ้นสุด', \`field\` text NULL COMMENT 'ด้าน', \`profileAbilityId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง ProfileAbility', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`);
        await queryRunner.query(`CREATE TABLE \`profileAbility\` (\`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', \`profileId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง Profile', \`isActive\` tinyint NOT NULL COMMENT 'สถานะการใช้งาน' DEFAULT 0, \`remark\` text NULL COMMENT 'หมายเหตุ', \`detail\` text NULL COMMENT 'รายละเอียด', \`reference\` text NULL COMMENT 'เอกสารอ้างอิง', \`dateStart\` datetime NULL COMMENT 'วันที่เริ่มต้น', \`dateEnd\` datetime NULL COMMENT 'วันที่สิ้นสุด', \`field\` text NULL COMMENT 'ด้าน', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`);
        await queryRunner.query(`ALTER TABLE \`orgChild4\` ADD \`orgChild4RankSub\` varchar(255) NULL COMMENT 'ระดับส่วนราชการsub'`);
        await queryRunner.query(`ALTER TABLE \`orgChild3\` ADD \`orgChild3RankSub\` varchar(255) NULL COMMENT 'ระดับส่วนราชการsub'`);
        await queryRunner.query(`ALTER TABLE \`orgChild2\` ADD \`orgChild2RankSub\` varchar(255) NULL COMMENT 'ระดับส่วนราชการsub'`);
        await queryRunner.query(`ALTER TABLE \`orgChild1\` ADD \`orgChild1RankSub\` varchar(255) NULL COMMENT 'ระดับส่วนราชการsub'`);
        await queryRunner.query(`ALTER TABLE \`orgRoot\` ADD \`orgRootRankSub\` varchar(255) NULL COMMENT 'ระดับส่วนราชการsub'`);
        await queryRunner.query(`ALTER TABLE \`profileLeaveHistory\` ADD CONSTRAINT \`FK_0fc535910e41657c584a569b8a6\` FOREIGN KEY (\`profileLeaveId\`) REFERENCES \`profileLeave\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`profileLeave\` ADD CONSTRAINT \`FK_ddae7e2a7ac1ac97be4a8b6bcc8\` FOREIGN KEY (\`profileId\`) REFERENCES \`profile\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`profileAbilityHistory\` ADD CONSTRAINT \`FK_1af20fbd56b675ee6777227967d\` FOREIGN KEY (\`profileAbilityId\`) REFERENCES \`profileAbility\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`profileAbility\` ADD CONSTRAINT \`FK_c15373efe7ca78db8b7aab26afb\` FOREIGN KEY (\`profileId\`) REFERENCES \`profile\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE \`profileAbility\` DROP FOREIGN KEY \`FK_c15373efe7ca78db8b7aab26afb\``);
        await queryRunner.query(`ALTER TABLE \`profileAbilityHistory\` DROP FOREIGN KEY \`FK_1af20fbd56b675ee6777227967d\``);
        await queryRunner.query(`ALTER TABLE \`profileLeave\` DROP FOREIGN KEY \`FK_ddae7e2a7ac1ac97be4a8b6bcc8\``);
        await queryRunner.query(`ALTER TABLE \`profileLeaveHistory\` DROP FOREIGN KEY \`FK_0fc535910e41657c584a569b8a6\``);
        await queryRunner.query(`ALTER TABLE \`orgRoot\` DROP COLUMN \`orgRootRankSub\``);
        await queryRunner.query(`ALTER TABLE \`orgChild1\` DROP COLUMN \`orgChild1RankSub\``);
        await queryRunner.query(`ALTER TABLE \`orgChild2\` DROP COLUMN \`orgChild2RankSub\``);
        await queryRunner.query(`ALTER TABLE \`orgChild3\` DROP COLUMN \`orgChild3RankSub\``);
        await queryRunner.query(`ALTER TABLE \`orgChild4\` DROP COLUMN \`orgChild4RankSub\``);
        await queryRunner.query(`DROP TABLE \`profileAbility\``);
        await queryRunner.query(`DROP TABLE \`profileAbilityHistory\``);
        await queryRunner.query(`DROP TABLE \`profileLeave\``);
        await queryRunner.query(`DROP TABLE \`profileLeaveHistory\``);
    }

}
