hrms-api-salary/src/migration/1710405546008-add_table_salaryFormulaEmployees.ts

34 lines
8.2 KiB
TypeScript

import { MigrationInterface, QueryRunner } from "typeorm";
export class AddTableSalaryFormulaEmployees1710405546008 implements MigrationInterface {
name = 'AddTableSalaryFormulaEmployees1710405546008'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`CREATE TABLE \`employeePosLevel\` (\`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', \`posLevelName\` int NOT NULL COMMENT 'ชื่อระดับชั้นงาน', \`posLevelRank\` int NOT NULL COMMENT 'ระดับของระดับชั้นงาน', \`posLevelAuthority\` enum ('HEAD', 'DEPUTY', 'GOVERNOR') NULL COMMENT 'ผู้มีอำนาจสั่งบรรจุของระดับนี้ head = หัวหน้าหน่วยงาน , deputy = ปลัด , governor = ผู้ว่าฯ', \`posTypeId\` varchar(40) NOT NULL COMMENT 'คีย์นอก(FK)ของตาราง employeePosType', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`);
await queryRunner.query(`CREATE TABLE \`employeePosType\` (\`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', \`posTypeName\` varchar(255) NULL COMMENT 'ชื่อกลุ่มงาน', \`posTypeRank\` int NOT NULL COMMENT 'ระดับของกลุ่มงาน', \`posTypeShortName\` varchar(255) NULL COMMENT 'ชื่อย่อกลุ่มงาน', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`);
await queryRunner.query(`CREATE TABLE \`salaryFormulaEmployees\` (\`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', \`position\` varchar(255) NULL COMMENT 'ตำแหน่ง', \`salaryMin\` double NULL COMMENT 'ขั้นต่ำสุด', \`salary\` double NULL COMMENT 'ขั้นสูงสุดเดิม', \`salaryMix\` double NULL COMMENT 'อัตราค่าจ้างขั้นสูงใหม่', \`details\` varchar(255) NULL COMMENT 'หมายเหตุ', \`salaryEmployeeId\` varchar(40) NOT NULL COMMENT 'คีย์นอก(FK)ของตาราง salaryEmployee', \`postypeId\` varchar(40) NOT NULL COMMENT 'คีย์นอก(FK)ของตาราง employeePosType', \`posLevelId\` varchar(40) NOT NULL COMMENT 'คีย์นอก(FK)ของตาราง employeePosLevel', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`);
await queryRunner.query(`CREATE TABLE \`salary_formula_employees_salary_employee_mins_salary_employees\` (\`salaryFormulaEmployeesId\` varchar(36) NOT NULL, \`salaryEmployeesId\` varchar(36) NOT NULL, INDEX \`IDX_dcc6e39a2e169fbaf4c477b1f8\` (\`salaryFormulaEmployeesId\`), INDEX \`IDX_b7e8fed20263673e4be15b3ca3\` (\`salaryEmployeesId\`), PRIMARY KEY (\`salaryFormulaEmployeesId\`, \`salaryEmployeesId\`)) ENGINE=InnoDB`);
await queryRunner.query(`ALTER TABLE \`employeePosLevel\` ADD CONSTRAINT \`FK_7fb9ab868f3f46b44f460c984f1\` FOREIGN KEY (\`posTypeId\`) REFERENCES \`employeePosType\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
await queryRunner.query(`ALTER TABLE \`salaryFormulaEmployees\` ADD CONSTRAINT \`FK_57e0a12357e1fe6dba2e34c2325\` FOREIGN KEY (\`salaryEmployeeId\`) REFERENCES \`salaryEmployees\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
await queryRunner.query(`ALTER TABLE \`salaryFormulaEmployees\` ADD CONSTRAINT \`FK_4fc21fb89eb2cc9baa6c7301b14\` FOREIGN KEY (\`postypeId\`) REFERENCES \`employeePosType\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
await queryRunner.query(`ALTER TABLE \`salaryFormulaEmployees\` ADD CONSTRAINT \`FK_239beab5c2ff5a1d9a80f29516b\` FOREIGN KEY (\`posLevelId\`) REFERENCES \`employeePosLevel\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
await queryRunner.query(`ALTER TABLE \`salary_formula_employees_salary_employee_mins_salary_employees\` ADD CONSTRAINT \`FK_dcc6e39a2e169fbaf4c477b1f88\` FOREIGN KEY (\`salaryFormulaEmployeesId\`) REFERENCES \`salaryFormulaEmployees\`(\`id\`) ON DELETE CASCADE ON UPDATE CASCADE`);
await queryRunner.query(`ALTER TABLE \`salary_formula_employees_salary_employee_mins_salary_employees\` ADD CONSTRAINT \`FK_b7e8fed20263673e4be15b3ca30\` FOREIGN KEY (\`salaryEmployeesId\`) REFERENCES \`salaryEmployees\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`salary_formula_employees_salary_employee_mins_salary_employees\` DROP FOREIGN KEY \`FK_b7e8fed20263673e4be15b3ca30\``);
await queryRunner.query(`ALTER TABLE \`salary_formula_employees_salary_employee_mins_salary_employees\` DROP FOREIGN KEY \`FK_dcc6e39a2e169fbaf4c477b1f88\``);
await queryRunner.query(`ALTER TABLE \`salaryFormulaEmployees\` DROP FOREIGN KEY \`FK_239beab5c2ff5a1d9a80f29516b\``);
await queryRunner.query(`ALTER TABLE \`salaryFormulaEmployees\` DROP FOREIGN KEY \`FK_4fc21fb89eb2cc9baa6c7301b14\``);
await queryRunner.query(`ALTER TABLE \`salaryFormulaEmployees\` DROP FOREIGN KEY \`FK_57e0a12357e1fe6dba2e34c2325\``);
await queryRunner.query(`ALTER TABLE \`employeePosLevel\` DROP FOREIGN KEY \`FK_7fb9ab868f3f46b44f460c984f1\``);
await queryRunner.query(`DROP INDEX \`IDX_b7e8fed20263673e4be15b3ca3\` ON \`salary_formula_employees_salary_employee_mins_salary_employees\``);
await queryRunner.query(`DROP INDEX \`IDX_dcc6e39a2e169fbaf4c477b1f8\` ON \`salary_formula_employees_salary_employee_mins_salary_employees\``);
await queryRunner.query(`DROP TABLE \`salary_formula_employees_salary_employee_mins_salary_employees\``);
await queryRunner.query(`DROP TABLE \`salaryFormulaEmployees\``);
await queryRunner.query(`DROP TABLE \`employeePosType\``);
await queryRunner.query(`DROP TABLE \`employeePosLevel\``);
}
}