From bb3e8b435b08a9116ed58169cba8594a2a9a510c Mon Sep 17 00:00:00 2001 From: Bright Date: Tue, 12 Mar 2024 12:14:18 +0700 Subject: [PATCH 1/2] add table employee --- src/entities/EmployeePosDict.ts | 57 +++++++++++++++++++ src/entities/EmployeePosLevel.ts | 46 +++++++++++++++ src/entities/EmployeePosType.ts | 49 ++++++++++++++++ .../1710220097101-add_table_employees.ts | 24 ++++++++ 4 files changed, 176 insertions(+) create mode 100644 src/entities/EmployeePosDict.ts create mode 100644 src/entities/EmployeePosLevel.ts create mode 100644 src/entities/EmployeePosType.ts create mode 100644 src/migration/1710220097101-add_table_employees.ts diff --git a/src/entities/EmployeePosDict.ts b/src/entities/EmployeePosDict.ts new file mode 100644 index 00000000..070379fe --- /dev/null +++ b/src/entities/EmployeePosDict.ts @@ -0,0 +1,57 @@ +import { Entity, Column, ManyToOne, JoinColumn, } from "typeorm"; +import { EntityBase } from "./base/Base"; +import { EmployeePosType } from "./EmployeePosType"; +import { EmployeePosLevel } from "./EmployeePosLevel"; + +@Entity("employeePosDict") +export class EmployeePosDict extends EntityBase { + @Column({ + nullable: true, + comment: "ชื่อตำแหน่ง", + length: 255, + default: null, + }) + posDictName: string; + + @Column({ + length: 40, + comment: "คีย์นอก(FK)ของตาราง employeePosType", + }) + employeePosTypeId: string; + + @Column({ + length: 40, + comment: "คีย์นอก(FK)ของตาราง employeePosLevel", + }) + employeePosLevelId: string; + + @ManyToOne(() => EmployeePosType, (employeePosType) => employeePosType) + @JoinColumn({ name: "employeePosTypeId" }) + employeePosType: EmployeePosType; + + @ManyToOne(() => EmployeePosLevel, (employeePosLevel) => employeePosLevel) + @JoinColumn({ name: "employeePosLevelId" }) + employeePosLevel: EmployeePosLevel; +} + +export class CreateEmployeePosDict { + @Column() + posDictName: string | null; + + @Column("uuid") + employeePosTypeId: string | null; + + @Column("uuid") + employeePosLevelId: string | null; +} + +export class UpdateEmployeePosDict { + @Column() + posDictName: string; + + @Column("uuid") + employeePosTypeId: string; + + @Column("uuid") + employeePosLevelId: string; +} \ No newline at end of file diff --git a/src/entities/EmployeePosLevel.ts b/src/entities/EmployeePosLevel.ts new file mode 100644 index 00000000..c0feb9ca --- /dev/null +++ b/src/entities/EmployeePosLevel.ts @@ -0,0 +1,46 @@ +import { Entity, Column, ManyToOne, JoinColumn, OneToMany } from "typeorm"; +import { EntityBase } from "./base/Base"; +import { EmployeePosDict } from "./EmployeePosDict"; +import { EmployeePosType } from "./EmployeePosType"; + +@Entity("employeePosLevel") +export class EmployeePosLevel extends EntityBase { + @Column({ + nullable: true, + comment: "ชื่อระดับชั้นงาน", + length: 255, + default: null, + }) + posLevelName: string; + + @Column({ + comment: "ระดับของระดับชั้นงาน", + type: "int", + }) + posLevelRank: number; + + @Column({ + length: 40, + comment: "คีย์นอก(FK)ของตาราง employeePosType", + }) + employeePosTypeId: string; + + @ManyToOne(() => EmployeePosType, (employeePosType) => employeePosType.employeePosLevels) + @JoinColumn({ name: "employeePosTypeId" }) + employeePosType: EmployeePosType; + + @OneToMany(() => EmployeePosDict, (employeePosDict) => employeePosDict.employeePosLevel) + employeePosDicts: EmployeePosDict[]; + +} + +export class CreateEmployeePosLevel { + @Column() + posLevelName: string; + + @Column() + posLevelRank: number; + +} + +export type UpdateEmployeePosLevel= Partial; \ No newline at end of file diff --git a/src/entities/EmployeePosType.ts b/src/entities/EmployeePosType.ts new file mode 100644 index 00000000..cbb6ef9b --- /dev/null +++ b/src/entities/EmployeePosType.ts @@ -0,0 +1,49 @@ +import { Entity, Column, OneToMany } from "typeorm"; +import { EntityBase } from "./base/Base"; +import { EmployeePosDict } from "./EmployeePosDict"; +import { EmployeePosLevel } from "./EmployeePosLevel"; + +@Entity("employeePosType") +export class EmployeePosType extends EntityBase { + @Column({ + nullable: true, + comment: "ชื่อกลุ่มงาน", + length: 255, + default: null, + }) + posTypeName: string; + + @Column({ + comment: "ระดับของกลุ่มงาน", + }) + posTypeRank: number; + + @Column({ + nullable: true, + comment: "ชื่อย่อกลุ่มงาน", + length: 255, + default: null, + }) + posTypeShortName: string; + + @OneToMany(() => EmployeePosLevel, (employeePosLevel) => employeePosLevel.employeePosType) + employeePosLevels: EmployeePosLevel[]; + + @OneToMany(() => EmployeePosDict, (employeePosDict) => employeePosDict.employeePosType) + employeePosDicts: EmployeePosDict[]; + +} + +export class CreateEmployeePosType { + @Column() + posTypeName: string; + + @Column() + posTypeRank: number; + + @Column() + posTypeShortName: string; + +} + +export type UpdateEmployeePosType = Partial; diff --git a/src/migration/1710220097101-add_table_employees.ts b/src/migration/1710220097101-add_table_employees.ts new file mode 100644 index 00000000..51d207fa --- /dev/null +++ b/src/migration/1710220097101-add_table_employees.ts @@ -0,0 +1,24 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class AddTableEmployees1710220097101 implements MigrationInterface { + name = 'AddTableEmployees1710220097101' + + public async up(queryRunner: QueryRunner): Promise { + 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 \`employeePosDict\` (\`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', \`posDictName\` varchar(255) NULL COMMENT 'ชื่อตำแหน่ง', \`employeePosTypeId\` varchar(40) NOT NULL COMMENT 'คีย์นอก(FK)ของตาราง employeePosType', \`employeePosLevelId\` varchar(40) NOT NULL COMMENT 'คีย์นอก(FK)ของตาราง employeePosLevel', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + 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\` varchar(255) NULL COMMENT 'ชื่อระดับชั้นงาน', \`posLevelRank\` int NOT NULL COMMENT 'ระดับของระดับชั้นงาน', \`employeePosTypeId\` varchar(40) NOT NULL COMMENT 'คีย์นอก(FK)ของตาราง employeePosType', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + await queryRunner.query(`ALTER TABLE \`employeePosDict\` ADD CONSTRAINT \`FK_73ad56ef383399f567d58b213e2\` FOREIGN KEY (\`employeePosTypeId\`) REFERENCES \`employeePosType\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); + await queryRunner.query(`ALTER TABLE \`employeePosDict\` ADD CONSTRAINT \`FK_28d45cec912604b7d6f3dfac39a\` FOREIGN KEY (\`employeePosLevelId\`) REFERENCES \`employeePosLevel\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); + await queryRunner.query(`ALTER TABLE \`employeePosLevel\` ADD CONSTRAINT \`FK_a822851af7b58288be65debfdd5\` FOREIGN KEY (\`employeePosTypeId\`) REFERENCES \`employeePosType\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`employeePosLevel\` DROP FOREIGN KEY \`FK_a822851af7b58288be65debfdd5\``); + await queryRunner.query(`ALTER TABLE \`employeePosDict\` DROP FOREIGN KEY \`FK_28d45cec912604b7d6f3dfac39a\``); + await queryRunner.query(`ALTER TABLE \`employeePosDict\` DROP FOREIGN KEY \`FK_73ad56ef383399f567d58b213e2\``); + await queryRunner.query(`DROP TABLE \`employeePosLevel\``); + await queryRunner.query(`DROP TABLE \`employeePosDict\``); + await queryRunner.query(`DROP TABLE \`employeePosType\``); + } + +} From 0d9d963b6656df57645d4dcac6186b2cc50013d7 Mon Sep 17 00:00:00 2001 From: Bright Date: Tue, 12 Mar 2024 12:18:41 +0700 Subject: [PATCH 2/2] no message --- src/entities/EmployeePosLevel.ts | 8 +++----- .../1710220658926-edit_type_empPosLevel.ts | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 src/migration/1710220658926-edit_type_empPosLevel.ts diff --git a/src/entities/EmployeePosLevel.ts b/src/entities/EmployeePosLevel.ts index c0feb9ca..c2843706 100644 --- a/src/entities/EmployeePosLevel.ts +++ b/src/entities/EmployeePosLevel.ts @@ -6,12 +6,10 @@ import { EmployeePosType } from "./EmployeePosType"; @Entity("employeePosLevel") export class EmployeePosLevel extends EntityBase { @Column({ - nullable: true, comment: "ชื่อระดับชั้นงาน", - length: 255, - default: null, + type: "int", }) - posLevelName: string; + posLevelName: number; @Column({ comment: "ระดับของระดับชั้นงาน", @@ -36,7 +34,7 @@ export class EmployeePosLevel extends EntityBase { export class CreateEmployeePosLevel { @Column() - posLevelName: string; + posLevelName: number; @Column() posLevelRank: number; diff --git a/src/migration/1710220658926-edit_type_empPosLevel.ts b/src/migration/1710220658926-edit_type_empPosLevel.ts new file mode 100644 index 00000000..7a52dc29 --- /dev/null +++ b/src/migration/1710220658926-edit_type_empPosLevel.ts @@ -0,0 +1,16 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class EditTypeEmpPosLevel1710220658926 implements MigrationInterface { + name = 'EditTypeEmpPosLevel1710220658926' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`employeePosLevel\` DROP COLUMN \`posLevelName\``); + await queryRunner.query(`ALTER TABLE \`employeePosLevel\` ADD \`posLevelName\` int NOT NULL COMMENT 'ชื่อระดับชั้นงาน'`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`employeePosLevel\` DROP COLUMN \`posLevelName\``); + await queryRunner.query(`ALTER TABLE \`employeePosLevel\` ADD \`posLevelName\` varchar(255) NULL COMMENT 'ชื่อระดับชั้นงาน'`); + } + +}