From b12d145aba25d50f22ea83d23668e26859e3fa85 Mon Sep 17 00:00:00 2001 From: Kittapath Date: Wed, 13 Mar 2024 13:37:53 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88=E0=B8=A1ta?= =?UTF-8?q?ble=E0=B9=80=E0=B8=84=E0=B8=A3=E0=B8=B7=E0=B9=88=E0=B8=AD?= =?UTF-8?q?=E0=B8=87=E0=B8=A3=E0=B8=B2=E0=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/entities/Insignia.ts | 72 +++++++++++++++++++ src/entities/InsigniaType.ts | 33 +++++++++ .../1710311804080-add_table_insignia.ts | 18 +++++ 3 files changed, 123 insertions(+) create mode 100644 src/entities/Insignia.ts create mode 100644 src/entities/InsigniaType.ts create mode 100644 src/migration/1710311804080-add_table_insignia.ts diff --git a/src/entities/Insignia.ts b/src/entities/Insignia.ts new file mode 100644 index 00000000..40771f37 --- /dev/null +++ b/src/entities/Insignia.ts @@ -0,0 +1,72 @@ +import { Entity, Column, ManyToOne, JoinColumn } from "typeorm"; +import { EntityBase } from "./base/Base"; +import { InsigniaType } from "./InsigniaType"; + +@Entity("insignia") +export class Insignia extends EntityBase { + @Column({ + nullable: true, + comment: "ชื่อเครื่องราช", + length: 255, + default: null, + }) + name: string; + + @Column({ + nullable: true, + comment: "ชื่อย่อเครื่องราช", + length: 255, + default: null, + }) + shortName: string; + + @Column({ + nullable: true, + comment: + "ลำดับชั้นของเครื่องราช เอาไว้ตรวจสอบเวลาขอว่าต้องได้ชั้นที่สูงกว่าที่เคยได้รับแล้วเท่านั้น", + default: null, + }) + level: number; + + @Column({ + comment: "สถานะการใช้งาน", + default: false, + }) + isActive: boolean; + + @Column({ + nullable: true, + comment: "หมายเหตุ", + default: null, + }) + note: string; + + @Column({ + length: 40, + comment: "id ประเภทเครื่องราช", + }) + insigniaTypeId: string; + + @ManyToOne(() => InsigniaType, (insigniaType) => insigniaType.insignias) + @JoinColumn({ name: "insigniaTypeId" }) + insigniaType: InsigniaType; +} + +export class CreateInsignias { + @Column() + name: string; + + @Column() + shortName: string; + + @Column() + isActive: boolean; + + @Column() + note: string; + + @Column("uuid") + insigniaTypeId: string; +} + +export type UpdateInsignias = Partial; diff --git a/src/entities/InsigniaType.ts b/src/entities/InsigniaType.ts new file mode 100644 index 00000000..f342cd93 --- /dev/null +++ b/src/entities/InsigniaType.ts @@ -0,0 +1,33 @@ +import { Entity, Column, OneToMany } from "typeorm"; +import { EntityBase } from "./base/Base"; +import { Insignia } from "./Insignia"; + +@Entity("insigniaType") +export class InsigniaType extends EntityBase { + @Column({ + nullable: true, + comment: "ชื่อประเภทเครื่องราช", + length: 255, + default: null, + }) + name: string; + + @Column({ + comment: "สถานะการใช้งาน", + default: false, + }) + isActive: boolean; + + @OneToMany(() => Insignia, (insignia) => insignia.insigniaType) + insignias: Insignia[]; +} + +export class CreateInsigniaType { + @Column() + name: string; + + @Column() + isActive: boolean; +} + +export type UpdateInsigniaType = Partial; diff --git a/src/migration/1710311804080-add_table_insignia.ts b/src/migration/1710311804080-add_table_insignia.ts new file mode 100644 index 00000000..06cb5256 --- /dev/null +++ b/src/migration/1710311804080-add_table_insignia.ts @@ -0,0 +1,18 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class AddTableInsignia1710311804080 implements MigrationInterface { + name = 'AddTableInsignia1710311804080' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`CREATE TABLE \`insignia\` (\`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', \`name\` varchar(255) NULL COMMENT 'ชื่อเครื่องราช', \`shortName\` varchar(255) NULL COMMENT 'ชื่อย่อเครื่องราช', \`level\` int NULL COMMENT 'ลำดับชั้นของเครื่องราช เอาไว้ตรวจสอบเวลาขอว่าต้องได้ชั้นที่สูงกว่าที่เคยได้รับแล้วเท่านั้น', \`isActive\` tinyint NOT NULL COMMENT 'สถานะการใช้งาน' DEFAULT 0, \`note\` varchar(255) NULL COMMENT 'หมายเหตุ', \`insigniaTypeId\` varchar(40) NOT NULL COMMENT 'id ประเภทเครื่องราช', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + await queryRunner.query(`CREATE TABLE \`insigniaType\` (\`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', \`name\` varchar(255) NULL COMMENT 'ชื่อประเภทเครื่องราช', \`isActive\` tinyint NOT NULL COMMENT 'สถานะการใช้งาน' DEFAULT 0, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + await queryRunner.query(`ALTER TABLE \`insignia\` ADD CONSTRAINT \`FK_bf8cd951a7eb12a0eff9b17f82d\` FOREIGN KEY (\`insigniaTypeId\`) REFERENCES \`insigniaType\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`insignia\` DROP FOREIGN KEY \`FK_bf8cd951a7eb12a0eff9b17f82d\``); + await queryRunner.query(`DROP TABLE \`insigniaType\``); + await queryRunner.query(`DROP TABLE \`insignia\``); + } + +}