From 188a028becf04822532f4bb6d3a95ae73b04aff1 Mon Sep 17 00:00:00 2001 From: Bright Date: Mon, 17 Feb 2025 12:07:22 +0700 Subject: [PATCH] migrate --- src/entities/OFFICER.ts | 12 +++--- ...503699-addViewProfileEmployeeEvaluation.ts | 41 +++++++++++++++++++ 2 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 src/migration/1739768503699-addViewProfileEmployeeEvaluation.ts diff --git a/src/entities/OFFICER.ts b/src/entities/OFFICER.ts index 17632f72..58edfd64 100644 --- a/src/entities/OFFICER.ts +++ b/src/entities/OFFICER.ts @@ -12,12 +12,12 @@ export class OFFICER { // }) // RET_YEAR: string; - @Column({ - nullable: true, - type: "text", - default: null, - }) - ID: string; + // @Column({ + // nullable: true, + // type: "text", + // default: null, + // }) + // ID: string; @Column({ nullable: true, diff --git a/src/migration/1739768503699-addViewProfileEmployeeEvaluation.ts b/src/migration/1739768503699-addViewProfileEmployeeEvaluation.ts new file mode 100644 index 00000000..e42452f8 --- /dev/null +++ b/src/migration/1739768503699-addViewProfileEmployeeEvaluation.ts @@ -0,0 +1,41 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class AddViewProfileEmployeeEvaluation1739768503699 implements MigrationInterface { + name = 'AddViewProfileEmployeeEvaluation1739768503699' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`CREATE VIEW \`view_profile_employee_evaluation\` AS SELECT + \`profileEmployeeId\`, + \`period\`, + \`year\`, + \`employeePosMaster\`.\`orgRootId\`, + \`employeePosMaster\`.\`orgChild1Id\`, + \`employeePosMaster\`.\`orgChild2Id\`, + \`employeePosMaster\`.\`orgChild3Id\`, + \`employeePosMaster\`.\`orgChild4Id\`, + COUNT(*) AS recordCount, + SUM(pointSum) AS totalPointSum, + SUM(pointSum) / COUNT(*) AS result + FROM \`profileAssessment\` + LEFT JOIN \`profileEmployee\` ON \`profileAssessment\`.\`profileEmployeeId\` = \`profileEmployee\`.\`id\` + LEFT JOIN \`employeePosMaster\` ON \`profileEmployee\`.\`id\` = \`employeePosMaster\`.\`current_holderId\` + LEFT JOIN \`orgRevision\` ON \`employeePosMaster\`.\`orgRevisionId\` = \`orgRevision\`.\`id\` + WHERE \`period\` IS NOT NULL + AND \`orgRevision\`.\`orgRevisionIsCurrent\` = TRUE + GROUP BY \`profileEmployeeId\`, \`period\`, \`year\`, + \`employeePosMaster\`.\`orgRootId\`, + \`employeePosMaster\`.\`orgChild1Id\`, + \`employeePosMaster\`.\`orgChild2Id\`, + \`employeePosMaster\`.\`orgChild3Id\`, + \`employeePosMaster\`.\`orgChild4Id\` + ORDER BY \`year\` DESC, \`period\` ASC; + `); + await queryRunner.query(`INSERT INTO \`bma_ehr_organization_demo\`.\`typeorm_metadata\`(\`database\`, \`schema\`, \`table\`, \`type\`, \`name\`, \`value\`) VALUES (DEFAULT, ?, DEFAULT, ?, ?, ?)`, ["bma_ehr_organization_demo","VIEW","view_profile_employee_evaluation","SELECT \n `profileEmployeeId`,\n `period`,\n `year`,\n `employeePosMaster`.`orgRootId`,\n `employeePosMaster`.`orgChild1Id`,\n `employeePosMaster`.`orgChild2Id`,\n `employeePosMaster`.`orgChild3Id`,\n `employeePosMaster`.`orgChild4Id`, \n COUNT(*) AS recordCount, \n SUM(pointSum) AS totalPointSum, \n SUM(pointSum) / COUNT(*) AS result\n FROM `profileAssessment` \n LEFT JOIN `profileEmployee` ON `profileAssessment`.`profileEmployeeId` = `profileEmployee`.`id`\n LEFT JOIN `employeePosMaster` ON `profileEmployee`.`id` = `employeePosMaster`.`current_holderId`\n LEFT JOIN `orgRevision` ON `employeePosMaster`.`orgRevisionId` = `orgRevision`.`id`\n WHERE `period` IS NOT NULL\n AND `orgRevision`.`orgRevisionIsCurrent` = TRUE\n GROUP BY `profileEmployeeId`, `period`, `year`, \n `employeePosMaster`.`orgRootId`, \n `employeePosMaster`.`orgChild1Id`, \n `employeePosMaster`.`orgChild2Id`, \n `employeePosMaster`.`orgChild3Id`, \n `employeePosMaster`.`orgChild4Id`\n ORDER BY `year` DESC, `period` ASC;"]); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DELETE FROM \`bma_ehr_organization_demo\`.\`typeorm_metadata\` WHERE \`type\` = ? AND \`name\` = ? AND \`schema\` = ?`, ["VIEW","view_profile_employee_evaluation","bma_ehr_organization_demo"]); + await queryRunner.query(`DROP VIEW \`view_profile_employee_evaluation\``); + } + +}