import { MigrationInterface, QueryRunner } from "typeorm";

export class Migrations1774956733359 implements MigrationInterface {
    name = 'Migrations1774956733359'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE \`agencies\` DROP FOREIGN KEY \`FK_0168b82dc89c1101c66d0e984d8\``);
        await queryRunner.query(`ALTER TABLE \`teams\` DROP FOREIGN KEY \`FK_9a06e17b915db57b2d9192672a5\``);
        await queryRunner.query(`ALTER TABLE \`teams\` DROP FOREIGN KEY \`FK_b028103a23f81072861ca4366c8\``);
        await queryRunner.query(`ALTER TABLE \`users\` DROP FOREIGN KEY \`FK_1208ee1db5ddb64b48a86b46a61\``);
        await queryRunner.query(`ALTER TABLE \`users\` DROP FOREIGN KEY \`FK_6fdb3282cea9ba5877ab476aa76\``);
        await queryRunner.query(`ALTER TABLE \`career_history\` DROP FOREIGN KEY \`FK_5181dddca8094ba68c8c6a9a307\``);
        await queryRunner.query(`ALTER TABLE \`career_history\` DROP FOREIGN KEY \`FK_92f52aaac4c3887d389c0325a93\``);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` DROP FOREIGN KEY \`FK_986e309c16f09ce6cc47d674cfe\``);
        await queryRunner.query(`ALTER TABLE \`notifications\` DROP FOREIGN KEY \`FK_9a8a82462cab47c73d25f49261f\``);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` DROP FOREIGN KEY \`FK_104b1b3bc98a6f7273f101ab550\``);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` DROP FOREIGN KEY \`FK_54a57db316598806786c2b95323\``);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` DROP FOREIGN KEY \`FK_5d3ed8cefa7827d0347b968d4aa\``);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` DROP FOREIGN KEY \`FK_6d320737541c7c4d2a6f0f9d911\``);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` DROP FOREIGN KEY \`FK_757f6cf287ee0bf1f94f7c49668\``);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` DROP FOREIGN KEY \`FK_89ffc3253557b60d4d979ffe50c\``);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` DROP FOREIGN KEY \`FK_d64da0a991d2f4d23d86031530c\``);
        await queryRunner.query(`ALTER TABLE \`public_holidays\` DROP FOREIGN KEY \`FK_93212bbdfddbf0b70c7ca522eb3\``);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` DROP FOREIGN KEY \`FK_bd2726fd31b35443f2245b93ba0\``);
        await queryRunner.query(`ALTER TABLE \`announcements\` DROP FOREIGN KEY \`FK_0a13cf0aa1f1a2666699ff473f0\``);
        await queryRunner.query(`ALTER TABLE \`users\` ADD \`reset_token\` varchar(255) NULL`);
        await queryRunner.query(`ALTER TABLE \`users\` ADD \`reset_token_expires_at\` timestamp NULL`);
        await queryRunner.query(`ALTER TABLE \`agencies\` CHANGE \`manager_id\` \`manager_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`teams\` CHANGE \`agency_id\` \`agency_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`teams\` CHANGE \`manager_id\` \`manager_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`users\` CHANGE \`avatar_url\` \`avatar_url\` varchar(255) NULL`);
        await queryRunner.query(`ALTER TABLE \`users\` CHANGE \`team_id\` \`team_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`users\` CHANGE \`agency_id\` \`agency_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`career_history\` CHANGE \`user_id\` \`user_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`career_history\` CHANGE \`created_by\` \`created_by\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`birth_date\` \`birth_date\` date NULL`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`address\` \`address\` text NULL`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`phone\` \`phone\` varchar(30) NULL`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`emergency_contact_name\` \`emergency_contact_name\` varchar(100) NULL`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`emergency_contact_phone\` \`emergency_contact_phone\` varchar(30) NULL`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`contract_type\` \`contract_type\` varchar(50) NULL`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` DROP COLUMN \`skills\``);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` ADD \`skills\` json NULL`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`user_id\` \`user_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`notifications\` CHANGE \`link\` \`link\` varchar(255) NULL`);
        await queryRunner.query(`ALTER TABLE \`notifications\` CHANGE \`user_id\` \`user_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`reason\` \`reason\` text NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`attachment_url\` \`attachment_url\` varchar(255) NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n1_validated_at\` \`n1_validated_at\` timestamp NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n1_comment\` \`n1_comment\` text NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n2_validated_at\` \`n2_validated_at\` timestamp NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n2_comment\` \`n2_comment\` text NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n3_validated_at\` \`n3_validated_at\` timestamp NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n3_comment\` \`n3_comment\` text NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`user_id\` \`user_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`leave_type_id\` \`leave_type_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n1_validator_id\` \`n1_validator_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n2_validator_id\` \`n2_validator_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n3_validator_id\` \`n3_validator_id\` int UNSIGNED NULL`);
        await queryRunner.query(`DROP INDEX \`IDX_c96727e7b6f0420af2593ca754\` ON \`leave_balances\``);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` CHANGE \`adjustment_reason\` \`adjustment_reason\` text NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` CHANGE \`user_id\` \`user_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` CHANGE \`leave_type_id\` \`leave_type_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`public_holidays\` CHANGE \`created_by\` \`created_by\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` DROP COLUMN \`old_value\``);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` ADD \`old_value\` json NULL`);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` DROP COLUMN \`new_value\``);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` ADD \`new_value\` json NULL`);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` CHANGE \`ip_address\` \`ip_address\` varchar(45) NULL`);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` CHANGE \`user_id\` \`user_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`announcements\` CHANGE \`target_id\` \`target_id\` int UNSIGNED NULL`);
        await queryRunner.query(`ALTER TABLE \`announcements\` CHANGE \`published_at\` \`published_at\` timestamp NULL`);
        await queryRunner.query(`ALTER TABLE \`announcements\` CHANGE \`author_id\` \`author_id\` int UNSIGNED NULL`);
        await queryRunner.query(`CREATE UNIQUE INDEX \`IDX_c96727e7b6f0420af2593ca754\` ON \`leave_balances\` (\`user_id\`, \`leave_type_id\`, \`year\`)`);
        await queryRunner.query(`ALTER TABLE \`agencies\` ADD CONSTRAINT \`FK_0168b82dc89c1101c66d0e984d8\` FOREIGN KEY (\`manager_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`teams\` ADD CONSTRAINT \`FK_b028103a23f81072861ca4366c8\` FOREIGN KEY (\`agency_id\`) REFERENCES \`agencies\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`teams\` ADD CONSTRAINT \`FK_9a06e17b915db57b2d9192672a5\` FOREIGN KEY (\`manager_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`users\` ADD CONSTRAINT \`FK_1208ee1db5ddb64b48a86b46a61\` FOREIGN KEY (\`team_id\`) REFERENCES \`teams\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`users\` ADD CONSTRAINT \`FK_6fdb3282cea9ba5877ab476aa76\` FOREIGN KEY (\`agency_id\`) REFERENCES \`agencies\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`career_history\` ADD CONSTRAINT \`FK_92f52aaac4c3887d389c0325a93\` FOREIGN KEY (\`user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`career_history\` ADD CONSTRAINT \`FK_5181dddca8094ba68c8c6a9a307\` FOREIGN KEY (\`created_by\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` ADD CONSTRAINT \`FK_986e309c16f09ce6cc47d674cfe\` FOREIGN KEY (\`user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`notifications\` ADD CONSTRAINT \`FK_9a8a82462cab47c73d25f49261f\` FOREIGN KEY (\`user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` ADD CONSTRAINT \`FK_6d320737541c7c4d2a6f0f9d911\` FOREIGN KEY (\`user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` ADD CONSTRAINT \`FK_54a57db316598806786c2b95323\` FOREIGN KEY (\`leave_type_id\`) REFERENCES \`leave_types\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` ADD CONSTRAINT \`FK_5d3ed8cefa7827d0347b968d4aa\` FOREIGN KEY (\`n1_validator_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` ADD CONSTRAINT \`FK_104b1b3bc98a6f7273f101ab550\` FOREIGN KEY (\`n2_validator_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` ADD CONSTRAINT \`FK_757f6cf287ee0bf1f94f7c49668\` FOREIGN KEY (\`n3_validator_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` ADD CONSTRAINT \`FK_89ffc3253557b60d4d979ffe50c\` FOREIGN KEY (\`user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` ADD CONSTRAINT \`FK_d64da0a991d2f4d23d86031530c\` FOREIGN KEY (\`leave_type_id\`) REFERENCES \`leave_types\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`public_holidays\` ADD CONSTRAINT \`FK_93212bbdfddbf0b70c7ca522eb3\` FOREIGN KEY (\`created_by\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` ADD CONSTRAINT \`FK_bd2726fd31b35443f2245b93ba0\` FOREIGN KEY (\`user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
        await queryRunner.query(`ALTER TABLE \`announcements\` ADD CONSTRAINT \`FK_0a13cf0aa1f1a2666699ff473f0\` FOREIGN KEY (\`author_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE \`announcements\` DROP FOREIGN KEY \`FK_0a13cf0aa1f1a2666699ff473f0\``);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` DROP FOREIGN KEY \`FK_bd2726fd31b35443f2245b93ba0\``);
        await queryRunner.query(`ALTER TABLE \`public_holidays\` DROP FOREIGN KEY \`FK_93212bbdfddbf0b70c7ca522eb3\``);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` DROP FOREIGN KEY \`FK_d64da0a991d2f4d23d86031530c\``);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` DROP FOREIGN KEY \`FK_89ffc3253557b60d4d979ffe50c\``);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` DROP FOREIGN KEY \`FK_757f6cf287ee0bf1f94f7c49668\``);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` DROP FOREIGN KEY \`FK_104b1b3bc98a6f7273f101ab550\``);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` DROP FOREIGN KEY \`FK_5d3ed8cefa7827d0347b968d4aa\``);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` DROP FOREIGN KEY \`FK_54a57db316598806786c2b95323\``);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` DROP FOREIGN KEY \`FK_6d320737541c7c4d2a6f0f9d911\``);
        await queryRunner.query(`ALTER TABLE \`notifications\` DROP FOREIGN KEY \`FK_9a8a82462cab47c73d25f49261f\``);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` DROP FOREIGN KEY \`FK_986e309c16f09ce6cc47d674cfe\``);
        await queryRunner.query(`ALTER TABLE \`career_history\` DROP FOREIGN KEY \`FK_5181dddca8094ba68c8c6a9a307\``);
        await queryRunner.query(`ALTER TABLE \`career_history\` DROP FOREIGN KEY \`FK_92f52aaac4c3887d389c0325a93\``);
        await queryRunner.query(`ALTER TABLE \`users\` DROP FOREIGN KEY \`FK_6fdb3282cea9ba5877ab476aa76\``);
        await queryRunner.query(`ALTER TABLE \`users\` DROP FOREIGN KEY \`FK_1208ee1db5ddb64b48a86b46a61\``);
        await queryRunner.query(`ALTER TABLE \`teams\` DROP FOREIGN KEY \`FK_9a06e17b915db57b2d9192672a5\``);
        await queryRunner.query(`ALTER TABLE \`teams\` DROP FOREIGN KEY \`FK_b028103a23f81072861ca4366c8\``);
        await queryRunner.query(`ALTER TABLE \`agencies\` DROP FOREIGN KEY \`FK_0168b82dc89c1101c66d0e984d8\``);
        await queryRunner.query(`DROP INDEX \`IDX_c96727e7b6f0420af2593ca754\` ON \`leave_balances\``);
        await queryRunner.query(`ALTER TABLE \`announcements\` CHANGE \`author_id\` \`author_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`announcements\` CHANGE \`published_at\` \`published_at\` timestamp NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`announcements\` CHANGE \`target_id\` \`target_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` CHANGE \`user_id\` \`user_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` CHANGE \`ip_address\` \`ip_address\` varchar(45) CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` DROP COLUMN \`new_value\``);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` ADD \`new_value\` longtext CHARACTER SET "utf8mb4" COLLATE "utf8mb4_bin" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` DROP COLUMN \`old_value\``);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` ADD \`old_value\` longtext CHARACTER SET "utf8mb4" COLLATE "utf8mb4_bin" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`public_holidays\` CHANGE \`created_by\` \`created_by\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` CHANGE \`leave_type_id\` \`leave_type_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` CHANGE \`user_id\` \`user_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` CHANGE \`adjustment_reason\` \`adjustment_reason\` text CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`CREATE UNIQUE INDEX \`IDX_c96727e7b6f0420af2593ca754\` ON \`leave_balances\` (\`user_id\`, \`leave_type_id\`, \`year\`)`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n3_validator_id\` \`n3_validator_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n2_validator_id\` \`n2_validator_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n1_validator_id\` \`n1_validator_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`leave_type_id\` \`leave_type_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`user_id\` \`user_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n3_comment\` \`n3_comment\` text CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n3_validated_at\` \`n3_validated_at\` timestamp NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n2_comment\` \`n2_comment\` text CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n2_validated_at\` \`n2_validated_at\` timestamp NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n1_comment\` \`n1_comment\` text CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`n1_validated_at\` \`n1_validated_at\` timestamp NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`attachment_url\` \`attachment_url\` varchar(255) CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` CHANGE \`reason\` \`reason\` text CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`notifications\` CHANGE \`user_id\` \`user_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`notifications\` CHANGE \`link\` \`link\` varchar(255) CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`user_id\` \`user_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` DROP COLUMN \`skills\``);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` ADD \`skills\` longtext CHARACTER SET "utf8mb4" COLLATE "utf8mb4_bin" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`contract_type\` \`contract_type\` varchar(50) CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`emergency_contact_phone\` \`emergency_contact_phone\` varchar(30) CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`emergency_contact_name\` \`emergency_contact_name\` varchar(100) CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`phone\` \`phone\` varchar(30) CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`address\` \`address\` text CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` CHANGE \`birth_date\` \`birth_date\` date NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`career_history\` CHANGE \`created_by\` \`created_by\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`career_history\` CHANGE \`user_id\` \`user_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`users\` CHANGE \`agency_id\` \`agency_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`users\` CHANGE \`team_id\` \`team_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`users\` CHANGE \`avatar_url\` \`avatar_url\` varchar(255) CHARACTER SET "utf8mb3" COLLATE "utf8mb3_general_ci" NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`teams\` CHANGE \`manager_id\` \`manager_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`teams\` CHANGE \`agency_id\` \`agency_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`agencies\` CHANGE \`manager_id\` \`manager_id\` int UNSIGNED NULL DEFAULT 'NULL'`);
        await queryRunner.query(`ALTER TABLE \`users\` DROP COLUMN \`reset_token_expires_at\``);
        await queryRunner.query(`ALTER TABLE \`users\` DROP COLUMN \`reset_token\``);
        await queryRunner.query(`ALTER TABLE \`announcements\` ADD CONSTRAINT \`FK_0a13cf0aa1f1a2666699ff473f0\` FOREIGN KEY (\`author_id\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`audit_logs\` ADD CONSTRAINT \`FK_bd2726fd31b35443f2245b93ba0\` FOREIGN KEY (\`user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`public_holidays\` ADD CONSTRAINT \`FK_93212bbdfddbf0b70c7ca522eb3\` FOREIGN KEY (\`created_by\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` ADD CONSTRAINT \`FK_d64da0a991d2f4d23d86031530c\` FOREIGN KEY (\`leave_type_id\`) REFERENCES \`leave_types\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`leave_balances\` ADD CONSTRAINT \`FK_89ffc3253557b60d4d979ffe50c\` FOREIGN KEY (\`user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` ADD CONSTRAINT \`FK_757f6cf287ee0bf1f94f7c49668\` FOREIGN KEY (\`n3_validator_id\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` ADD CONSTRAINT \`FK_6d320737541c7c4d2a6f0f9d911\` FOREIGN KEY (\`user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` ADD CONSTRAINT \`FK_5d3ed8cefa7827d0347b968d4aa\` FOREIGN KEY (\`n1_validator_id\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` ADD CONSTRAINT \`FK_54a57db316598806786c2b95323\` FOREIGN KEY (\`leave_type_id\`) REFERENCES \`leave_types\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`leave_requests\` ADD CONSTRAINT \`FK_104b1b3bc98a6f7273f101ab550\` FOREIGN KEY (\`n2_validator_id\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`notifications\` ADD CONSTRAINT \`FK_9a8a82462cab47c73d25f49261f\` FOREIGN KEY (\`user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`employee_profiles\` ADD CONSTRAINT \`FK_986e309c16f09ce6cc47d674cfe\` FOREIGN KEY (\`user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`career_history\` ADD CONSTRAINT \`FK_92f52aaac4c3887d389c0325a93\` FOREIGN KEY (\`user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`career_history\` ADD CONSTRAINT \`FK_5181dddca8094ba68c8c6a9a307\` FOREIGN KEY (\`created_by\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`users\` ADD CONSTRAINT \`FK_6fdb3282cea9ba5877ab476aa76\` FOREIGN KEY (\`agency_id\`) REFERENCES \`agencies\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`users\` ADD CONSTRAINT \`FK_1208ee1db5ddb64b48a86b46a61\` FOREIGN KEY (\`team_id\`) REFERENCES \`teams\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`teams\` ADD CONSTRAINT \`FK_b028103a23f81072861ca4366c8\` FOREIGN KEY (\`agency_id\`) REFERENCES \`agencies\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`teams\` ADD CONSTRAINT \`FK_9a06e17b915db57b2d9192672a5\` FOREIGN KEY (\`manager_id\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
        await queryRunner.query(`ALTER TABLE \`agencies\` ADD CONSTRAINT \`FK_0168b82dc89c1101c66d0e984d8\` FOREIGN KEY (\`manager_id\`) REFERENCES \`users\`(\`id\`) ON DELETE RESTRICT ON UPDATE RESTRICT`);
    }

}
