From 8184152ac084b43bcfa5d523e5eee6b054e497ff Mon Sep 17 00:00:00 2001 From: Kittapath Date: Fri, 26 Jan 2024 20:25:18 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=AA=E0=B8=A3=E0=B9=89=E0=B8=B2=E0=B8=87?= =?UTF-8?q?=E0=B9=82=E0=B8=84=E0=B8=A3=E0=B8=87=E0=B8=AA=E0=B8=A3=E0=B9=89?= =?UTF-8?q?=E0=B8=B2=E0=B8=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/OrgChild1Controller.ts | 2 + src/controllers/OrgChild2Controller.ts | 5 +- src/controllers/OrgChild3Controller.ts | 2 + src/controllers/OrgChild4Controller.ts | 9 +- src/controllers/OrgRootController.ts | 24 +-- src/controllers/OrganizationController.ts | 179 +++++++++++++++++- src/database/data-source.ts | 10 +- src/entities/OrgChild1.ts | 9 +- src/entities/OrgChild2.ts | 13 +- src/entities/OrgChild3.ts | 13 +- src/entities/OrgChild4.ts | 13 +- src/entities/OrgRevision.ts | 25 ++- src/entities/OrgRoot.ts | 25 +-- ...e_OrgGroupv3.ts => 1706268166485-start.ts} | 16 +- ...64847-update_table_org_delete_IsNormal1.ts | 20 ++ ..._table_orgRevision_remove_orgRevisionId.ts | 14 ++ 16 files changed, 295 insertions(+), 84 deletions(-) rename src/migration/{1706254488144-create_table_OrgGroupv3.ts => 1706268166485-start.ts} (86%) create mode 100644 src/migration/1706270464847-update_table_org_delete_IsNormal1.ts create mode 100644 src/migration/1706275475806-update_table_orgRevision_remove_orgRevisionId.ts diff --git a/src/controllers/OrgChild1Controller.ts b/src/controllers/OrgChild1Controller.ts index 6e31d04f..bd451d61 100644 --- a/src/controllers/OrgChild1Controller.ts +++ b/src/controllers/OrgChild1Controller.ts @@ -130,6 +130,7 @@ export class OrgChild1Controller { child1.createdFullName = request.user.name; child1.lastUpdateUserId = request.user.sub; child1.lastUpdateFullName = request.user.name; + child1.orgRevisionId = String(rootIdExits?.orgRevisionId); child1.orgRootId = String(rootIdExits?.id); await this.child1Repository.save(child1); return new HttpSuccess(); @@ -184,6 +185,7 @@ export class OrgChild1Controller { child1.lastUpdateUserId = request.user.sub; child1.lastUpdateFullName = request.user.name; child1.lastUpdatedAt = new Date(); + child1.orgRevisionId = String(rootIdExits?.orgRevisionId); child1.orgRootId = String(rootIdExits?.id); this.child1Repository.merge(child1, requestBody); await this.child1Repository.save(child1); diff --git a/src/controllers/OrgChild2Controller.ts b/src/controllers/OrgChild2Controller.ts index 7cac1b45..3a1f181b 100644 --- a/src/controllers/OrgChild2Controller.ts +++ b/src/controllers/OrgChild2Controller.ts @@ -22,8 +22,7 @@ import HttpError from "../interfaces/http-error"; import { CreateOrgChild2, OrgChild2, UpdateOrgChild2 } from "../entities/OrgChild2"; import { OrgChild1 } from "../entities/OrgChild1"; import { OrgChild3 } from "../entities/OrgChild3"; - -@Route("organization") +@Route("api/v1/org/child2") @Tags("OrgChild2") @Security("bearerAuth") @Response( @@ -82,6 +81,7 @@ export class OrgChild2Controller extends Controller { child2.lastUpdateUserId = request.user.sub; child2.lastUpdateFullName = request.user.name; child2.orgRootId = String(child1?.orgRootId); + child2.orgRevisionId = String(child1?.orgRevisionId); child2.orgChild1Id = String(child1?.id); await this.child2Repository.save(child2); return new HttpSuccess(); @@ -142,6 +142,7 @@ export class OrgChild2Controller extends Controller { child2.lastUpdateFullName = request.user.name; child2.lastUpdatedAt = new Date(); child2.orgRootId = String(child1IdExits?.orgRootId); + child2.orgRevisionId = String(child1IdExits?.orgRevisionId); child2.orgChild1Id = String(child1IdExits?.id); this.child2Repository.merge(child2, requestBody); await this.child2Repository.save(child2); diff --git a/src/controllers/OrgChild3Controller.ts b/src/controllers/OrgChild3Controller.ts index 97c66655..5b9a5bee 100644 --- a/src/controllers/OrgChild3Controller.ts +++ b/src/controllers/OrgChild3Controller.ts @@ -66,6 +66,7 @@ export class OrgChild3Controller { child3.lastUpdateFullName = request.user.name; child3.orgRootId = String(child2?.orgRootId); child3.orgChild1Id = String(child2?.orgChild1Id); + child3.orgRevisionId = String(child2?.orgRevisionId); child3.orgChild2Id = String(child2?.id); await this.child3Repository.save(child3); return new HttpSuccess(); @@ -113,6 +114,7 @@ export class OrgChild3Controller { child3.lastUpdatedAt = new Date(); child3.orgRootId = String(child2IdExits?.orgRootId); child3.orgChild1Id = String(child2IdExits?.orgChild1Id); + child3.orgRevisionId = String(child2IdExits?.orgRevisionId); child3.orgChild2Id = String(child2IdExits?.id); this.child3Repository.merge(child3, requestBody); await this.child3Repository.save(child3); diff --git a/src/controllers/OrgChild4Controller.ts b/src/controllers/OrgChild4Controller.ts index e3d8848d..d276f7ff 100644 --- a/src/controllers/OrgChild4Controller.ts +++ b/src/controllers/OrgChild4Controller.ts @@ -41,7 +41,7 @@ export class OrgChild4Controller extends Controller { * @summary ORG_013 - สร้างโครงสร้างระดับ4 (ADMIN) #13 * */ - @Post("child4") + @Post() @Example([ { orgChild4Name: "string", //ชื่อหน่วยงาน @@ -83,6 +83,7 @@ export class OrgChild4Controller extends Controller { child4.orgRootId = String(child3?.orgRootId); child4.orgChild1Id = String(child3?.orgChild1Id); child4.orgChild2Id = String(child3?.orgChild2Id); + child4.orgRevisionId = String(child3?.orgRevisionId); child4.orgChild3Id = String(child3?.id); await this.child4Repository.save(child4); @@ -99,7 +100,7 @@ export class OrgChild4Controller extends Controller { * * @param {string} id Guid, *Id Child4 */ - @Put("child4/{id}") + @Put("{id}") @Example([ { orgChild4Name: "string", //ชื่อหน่วยงาน @@ -145,6 +146,8 @@ export class OrgChild4Controller extends Controller { child4.lastUpdatedAt = new Date(); child4.orgRootId = String(child3IdExits?.orgRootId); child4.orgChild1Id = String(child3IdExits?.orgChild1Id); + child4.orgChild2Id = String(child3IdExits?.orgChild2Id); + child4.orgRevisionId = String(child3IdExits?.orgRevisionId); child4.orgChild3Id = String(child3IdExits?.id); this.child4Repository.merge(child4, requestBody); await this.child4Repository.save(child4); @@ -161,7 +164,7 @@ export class OrgChild4Controller extends Controller { * * @param {string} id Guid, *Id Child4 */ - @Delete("child4/{id}") + @Delete("{id}") async delete(@Path() id: string) { try { const child4 = await this.child4Repository.findOne({ where: { id } }); diff --git a/src/controllers/OrgRootController.ts b/src/controllers/OrgRootController.ts index 9d6d139a..59f86834 100644 --- a/src/controllers/OrgRootController.ts +++ b/src/controllers/OrgRootController.ts @@ -76,12 +76,12 @@ export class OrgRootController extends Controller { }); if (orgRevision) { - orgRoot.createdUserId = request.user.sub; - orgRoot.createdFullName = request.user.name; - orgRoot.lastUpdateUserId = request.user.sub; - orgRoot.lastUpdateFullName = request.user.name; - await this.orgRootRepository.save(orgRoot); - }else{ + orgRoot.createdUserId = request.user.sub; + orgRoot.createdFullName = request.user.name; + orgRoot.lastUpdateUserId = request.user.sub; + orgRoot.lastUpdateFullName = request.user.name; + await this.orgRootRepository.save(orgRoot); + } else { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดี Revision"); } @@ -117,17 +117,18 @@ export class OrgRootController extends Controller { @Request() request: { user: Record }, ) { try { - const validOrgRootRanks = ["DEPARTMENT", "OFFICE", "DIVISION", "SECTION"]; if (!validOrgRootRanks.includes(requestBody.orgRootRank.toUpperCase())) { throw new HttpError(HttpStatusCode.NOT_FOUND, "not found. orgRootRank"); } - const revisionIdExits = await this.orgRevisionRepository.findOne({ where: {id:requestBody.orgRevisionId} }); - if(!revisionIdExits){ + const revisionIdExits = await this.orgRevisionRepository.findOne({ + where: { id: requestBody.orgRevisionId }, + }); + if (!revisionIdExits) { throw new HttpError(HttpStatusCode.NOT_FOUND, "not found. RevisionId"); } - + const chkCode = await this.orgRootRepository.findOne({ where: { orgRootCode: requestBody.orgRootCode }, }); @@ -139,8 +140,7 @@ export class OrgRootController extends Controller { if (!orgRoot) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } - - orgRoot.orgRevisionId = orgRoot.orgRevisionId + orgRoot.lastUpdateUserId = request.user.sub; orgRoot.lastUpdateFullName = request.user.name; orgRoot.lastUpdatedAt = new Date(); diff --git a/src/controllers/OrganizationController.ts b/src/controllers/OrganizationController.ts index ea29d7b1..1c4dbef2 100644 --- a/src/controllers/OrganizationController.ts +++ b/src/controllers/OrganizationController.ts @@ -15,12 +15,17 @@ import { SuccessResponse, Response, } from "tsoa"; -import { OrgRevision } from "../entities/OrgRevision"; +import { CreateOrgRevision, OrgRevision } from "../entities/OrgRevision"; import { AppDataSource } from "../database/data-source"; import HttpSuccess from "../interfaces/http-success"; import { CreateOrgChild1, OrgChild1 } from "../entities/OrgChild1"; import HttpError from "../interfaces/http-error"; import HttpStatusCode from "../interfaces/http-status"; +import { In, Not } from "typeorm"; +import { OrgRoot } from "../entities/OrgRoot"; +import { OrgChild2 } from "../entities/OrgChild2"; +import { OrgChild3 } from "../entities/OrgChild3"; +import { OrgChild4 } from "../entities/OrgChild4"; @Route("api/v1/org") @Tags("Organization") @@ -32,6 +37,11 @@ import HttpStatusCode from "../interfaces/http-status"; @SuccessResponse(HttpStatusCode.OK, "สำเร็จ") export class OrganizationController extends Controller { private orgRevisionRepository = AppDataSource.getRepository(OrgRevision); + private orgRootRepository = AppDataSource.getRepository(OrgRoot); + private child1Repository = AppDataSource.getRepository(OrgChild1); + private child2Repository = AppDataSource.getRepository(OrgChild2); + private child3Repository = AppDataSource.getRepository(OrgChild3); + private child4Repository = AppDataSource.getRepository(OrgChild4); /** * API รายการประวัติโครงสร้าง @@ -104,16 +114,172 @@ export class OrganizationController extends Controller { */ @Post() async CreateOrgRevision( - @Body() requestBody: CreateOrgChild1, + @Body() requestBody: CreateOrgRevision, @Request() request: { user: Record }, ) { try { - return new HttpSuccess(); + const revision = Object.assign(new OrgRevision(), requestBody) as OrgRevision; + revision.orgRevisionIsDraft = true; + revision.orgRevisionIsCurrent = false; + revision.createdUserId = request.user.sub; + revision.createdFullName = request.user.name; + revision.lastUpdateUserId = request.user.sub; + revision.lastUpdateFullName = request.user.name; + await this.orgRevisionRepository.save(revision); + + if (requestBody.typeDraft.toUpperCase() == "ORG") { + if (requestBody.orgRevisionId == null) + throw new HttpError(HttpStatusCode.NOT_FOUND, "not found."); + const _revision = await this.orgRevisionRepository.findOne({ + where: { id: requestBody.orgRevisionId }, + }); + if (!_revision) throw new HttpError(HttpStatusCode.NOT_FOUND, "not found."); + + //clone data + const orgRoot = await this.orgRootRepository.find({ + where: { orgRevisionId: requestBody.orgRevisionId }, + }); + const _orgRoot = orgRoot.map((x) => ({ + ...x, + isAncestorDNA: + x.isAncestorDNA == null || x.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ? x.id + : x.isAncestorDNA, + })); + await this.orgRootRepository.save(_orgRoot); + + _orgRoot.forEach(async (x: any) => { + delete x.id; + const data = Object.assign(new OrgRoot(), x); + data.orgRevisionId = revision.id; + data.createdUserId = request.user.sub; + data.createdFullName = request.user.name; + data.createdAt = new Date(); + data.lastUpdateUserId = request.user.sub; + data.lastUpdateFullName = request.user.name; + data.lastUpdatedAt = new Date(); + await this.orgRootRepository.save(data); + }); + //clone data + const orgChild1 = await this.child1Repository.find({ + where: { orgRevisionId: requestBody.orgRevisionId }, + }); + const _orgChild1 = orgChild1.map((x) => ({ + ...x, + isAncestorDNA: + x.isAncestorDNA == null || x.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ? x.id + : x.isAncestorDNA, + })); + await this.child1Repository.save(_orgChild1); + + _orgChild1.forEach(async (x: any) => { + delete x.id; + const data = Object.assign(new OrgChild1(), x); + data.orgRevisionId = revision.id; + data.createdUserId = request.user.sub; + data.createdFullName = request.user.name; + data.createdAt = new Date(); + data.lastUpdateUserId = request.user.sub; + data.lastUpdateFullName = request.user.name; + data.lastUpdatedAt = new Date(); + await this.child1Repository.save(data); + }); + //clone data + const orgChild2 = await this.child2Repository.find({ + where: { orgRevisionId: requestBody.orgRevisionId }, + }); + const _orgChild2 = orgChild2.map((x) => ({ + ...x, + isAncestorDNA: + x.isAncestorDNA == null || x.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ? x.id + : x.isAncestorDNA, + })); + await this.child2Repository.save(_orgChild2); + + _orgChild2.forEach(async (x: any) => { + delete x.id; + const data = Object.assign(new OrgChild2(), x); + data.orgRevisionId = revision.id; + data.createdUserId = request.user.sub; + data.createdFullName = request.user.name; + data.createdAt = new Date(); + data.lastUpdateUserId = request.user.sub; + data.lastUpdateFullName = request.user.name; + data.lastUpdatedAt = new Date(); + await this.child2Repository.save(data); + }); + //clone data + const orgChild3 = await this.child3Repository.find({ + where: { orgRevisionId: requestBody.orgRevisionId }, + }); + const _orgChild3 = orgChild3.map((x) => ({ + ...x, + isAncestorDNA: + x.isAncestorDNA == null || x.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ? x.id + : x.isAncestorDNA, + })); + await this.child3Repository.save(_orgChild3); + + _orgChild3.forEach(async (x: any) => { + delete x.id; + const data = Object.assign(new OrgChild3(), x); + data.orgRevisionId = revision.id; + data.createdUserId = request.user.sub; + data.createdFullName = request.user.name; + data.createdAt = new Date(); + data.lastUpdateUserId = request.user.sub; + data.lastUpdateFullName = request.user.name; + data.lastUpdatedAt = new Date(); + await this.child3Repository.save(data); + }); + //clone data + const orgChild4 = await this.child4Repository.find({ + where: { orgRevisionId: requestBody.orgRevisionId }, + }); + const _orgChild4 = orgChild4.map((x) => ({ + ...x, + isAncestorDNA: + x.isAncestorDNA == null || x.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ? x.id + : x.isAncestorDNA, + })); + await this.child4Repository.save(_orgChild4); + + _orgChild4.forEach(async (x: any) => { + delete x.id; + const data = Object.assign(new OrgChild4(), x); + data.orgRevisionId = revision.id; + data.createdUserId = request.user.sub; + data.createdFullName = request.user.name; + data.createdAt = new Date(); + data.lastUpdateUserId = request.user.sub; + data.lastUpdateFullName = request.user.name; + data.lastUpdatedAt = new Date(); + await this.child4Repository.save(data); + }); + } else if (requestBody.typeDraft.toUpperCase() == "ORG_POSITION") { + } else if (requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON") { + } + + const orgRevisions = await this.orgRevisionRepository.find({ + where: [{ orgRevisionIsDraft: true, id: Not(revision.id) }], + }); + await this.child4Repository.delete({ orgRevisionId: In(orgRevisions.map((x) => x.id)) }); + await this.child3Repository.delete({ orgRevisionId: In(orgRevisions.map((x) => x.id)) }); + await this.child2Repository.delete({ orgRevisionId: In(orgRevisions.map((x) => x.id)) }); + await this.child1Repository.delete({ orgRevisionId: In(orgRevisions.map((x) => x.id)) }); + await this.orgRootRepository.delete({ orgRevisionId: In(orgRevisions.map((x) => x.id)) }); + await this.orgRevisionRepository.remove(orgRevisions); + + return new HttpSuccess(revision); } catch (error) { return error; } } - + /** * API รายละเอียดโครงสร้าง * @@ -123,10 +289,13 @@ export class OrganizationController extends Controller { // @Get() // async detail(@Path() id: string) { // try { - + // return new HttpSuccess(); // } catch (error) { // return error; // } // } } +function ANY(arg0: OrgRevision[]): string | import("typeorm").FindOperator | undefined { + throw new Error("Function not implemented."); +} diff --git a/src/database/data-source.ts b/src/database/data-source.ts index 470334b0..a695b9b7 100644 --- a/src/database/data-source.ts +++ b/src/database/data-source.ts @@ -11,8 +11,14 @@ export const AppDataSource = new DataSource({ password: process.env.DB_PASSWORD, synchronize: false, logging: true, - entities: ["src/entities/**/*.ts"], - migrations: ["src/migration/**/*.ts"], + entities: + process.env.NODE_ENV !== "production" + ? ["src/entities/**/*.ts"] + : ["dist/entities/**/*{.ts,.js}"], + migrations: + process.env.NODE_ENV !== "production" + ? ["src/migration/**/*.ts"] + : ["dist/migration/**/*{.ts,.js}"], subscribers: [], }); diff --git a/src/entities/OrgChild1.ts b/src/entities/OrgChild1.ts index f107d4f8..a7d8edd4 100644 --- a/src/entities/OrgChild1.ts +++ b/src/entities/OrgChild1.ts @@ -72,17 +72,16 @@ export class OrgChild1 extends EntityBase { orgChild1Fax: string; @Column({ - nullable: true, - comment: "สถานะของหน่วยงาน", - default: true, + length: 40, + default: "00000000-0000-0000-0000-000000000000", }) - orgChild1IsNormal: boolean; + orgRootId: string; @Column({ length: 40, default: "00000000-0000-0000-0000-000000000000", }) - orgRootId: string; + orgRevisionId: string; @Column({ length: 40, diff --git a/src/entities/OrgChild2.ts b/src/entities/OrgChild2.ts index f2372f7d..a9250a37 100644 --- a/src/entities/OrgChild2.ts +++ b/src/entities/OrgChild2.ts @@ -81,13 +81,6 @@ export class OrgChild2 extends EntityBase { }) orgChild2Fax: string; - @Column({ - nullable: true, - comment: "สถานะของหน่วยงาน", //ปกติ = 1 , ยุกเลิก = 0 - default: true, - }) - orgChild2IsNormal: boolean; - @Column({ length: 40, default: "00000000-0000-0000-0000-000000000000", @@ -100,6 +93,12 @@ export class OrgChild2 extends EntityBase { }) orgChild1Id: string; + @Column({ + length: 40, + default: "00000000-0000-0000-0000-000000000000", + }) + orgRevisionId: string; + @Column({ length: 40, default: "00000000-0000-0000-0000-000000000000", diff --git a/src/entities/OrgChild3.ts b/src/entities/OrgChild3.ts index df79f3c3..be5ba6b7 100644 --- a/src/entities/OrgChild3.ts +++ b/src/entities/OrgChild3.ts @@ -71,13 +71,6 @@ export class OrgChild3 extends EntityBase { }) orgChild3Fax: string; - @Column({ - nullable: true, - comment: "สถานะของหน่วยงาน", - default: true, - }) - orgChild3IsNormal: boolean; - @Column({ length: 40, default: "00000000-0000-0000-0000-000000000000", @@ -96,6 +89,12 @@ export class OrgChild3 extends EntityBase { }) orgChild2Id: string; + @Column({ + length: 40, + default: "00000000-0000-0000-0000-000000000000", + }) + orgRevisionId: string; + @Column({ length: 40, default: "00000000-0000-0000-0000-000000000000", diff --git a/src/entities/OrgChild4.ts b/src/entities/OrgChild4.ts index 93630989..30d26a77 100644 --- a/src/entities/OrgChild4.ts +++ b/src/entities/OrgChild4.ts @@ -80,13 +80,6 @@ export class OrgChild4 extends EntityBase { }) orgChild4Fax: string; - @Column({ - nullable: true, - comment: "สถานะของหน่วยงาน", //ปกติ = 1 , ยุกเลิก = 0 - default: true, - }) - orgChild4IsNormal: boolean; - @Column({ length: 40, default: "00000000-0000-0000-0000-000000000000", @@ -111,6 +104,12 @@ export class OrgChild4 extends EntityBase { }) orgChild3Id: string; + @Column({ + length: 40, + default: "00000000-0000-0000-0000-000000000000", + }) + orgRevisionId: string; + @Column({ length: 40, default: "00000000-0000-0000-0000-000000000000", diff --git a/src/entities/OrgRevision.ts b/src/entities/OrgRevision.ts index 7c50498a..8c6e8954 100644 --- a/src/entities/OrgRevision.ts +++ b/src/entities/OrgRevision.ts @@ -4,12 +4,12 @@ import { OrgRoot } from "./OrgRoot"; @Entity("orgRevision") export class OrgRevision extends EntityBase { - @Column({ - comment: "", - length: 40, - default: "00000000-0000-0000-0000-000000000000", - }) - orgRevisionId: string; + // @Column({ + // comment: "", + // length: 40, + // default: "00000000-0000-0000-0000-000000000000", + // }) + // orgRevisionId: string; @Column({ comment: "", @@ -21,7 +21,7 @@ export class OrgRevision extends EntityBase { @Column({ nullable: true, comment: "", - default: false + default: false, }) orgRevisionIsCurrent: boolean; @@ -35,7 +35,7 @@ export class OrgRevision extends EntityBase { @Column({ nullable: true, comment: "", - default: false + default: false, }) orgRevisionIsDraft: boolean; @@ -43,5 +43,14 @@ export class OrgRevision extends EntityBase { orgRoots: OrgRoot[]; } +export class CreateOrgRevision { + @Column() + orgRevisionName: string; + @Column() + typeDraft: string; + + @Column("uuid") + orgRevisionId?: string; +} export type UpdateOrgRevision = Partial; diff --git a/src/entities/OrgRoot.ts b/src/entities/OrgRoot.ts index 21576bab..49c3446e 100644 --- a/src/entities/OrgRoot.ts +++ b/src/entities/OrgRoot.ts @@ -74,11 +74,10 @@ export class OrgRoot extends EntityBase { orgRootFax: string; @Column({ - nullable: true, - comment: "สถานะของหน่วยงาน", //ปกติ = 1 , ยุกเลิก = 0 - default: false, + length: 40, + default: "00000000-0000-0000-0000-000000000000", }) - orgRootIsNormal: boolean; + isAncestorDNA: string; @Column({ length: 40, @@ -86,22 +85,14 @@ export class OrgRoot extends EntityBase { }) orgRevisionId: string; - @Column({ - length: 40, - default: "00000000-0000-0000-0000-000000000000", - }) - isAncestorDNA: string; - - @ManyToOne(() => OrgRevision, orgRevision => orgRevision.orgRoots) + @ManyToOne(() => OrgRevision, (orgRevision) => orgRevision.orgRoots) @JoinColumn({ name: "orgRevisionId" }) orgRevision: OrgRevision; - + @OneToMany(() => OrgChild1, (orgChild1) => orgChild1.orgRoot) orgChild1s: OrgChild1[]; - } - export class CreateOrgRoot { @Column() orgRootName: string; @@ -123,11 +114,9 @@ export class CreateOrgRoot { @Column() orgRootFax?: string; - - @Column('uuid') + + @Column("uuid") orgRevisionId: string; - - } export type UpdateOrgRoot = Partial & { orgRootRank?: OrgRootRank }; diff --git a/src/migration/1706254488144-create_table_OrgGroupv3.ts b/src/migration/1706268166485-start.ts similarity index 86% rename from src/migration/1706254488144-create_table_OrgGroupv3.ts rename to src/migration/1706268166485-start.ts index a732ad39..d19d40f2 100644 --- a/src/migration/1706254488144-create_table_OrgGroupv3.ts +++ b/src/migration/1706268166485-start.ts @@ -1,16 +1,16 @@ import { MigrationInterface, QueryRunner } from "typeorm"; -export class CreateTableOrgGroupv31706254488144 implements MigrationInterface { - name = 'CreateTableOrgGroupv31706254488144' +export class Start1706268166485 implements MigrationInterface { + name = 'Start1706268166485' public async up(queryRunner: QueryRunner): Promise { await queryRunner.query(`CREATE TABLE \`entity_base\` (\`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', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); - await queryRunner.query(`CREATE TABLE \`orgChild4\` (\`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', \`orgChild4Name\` varchar(255) NULL COMMENT 'ชื่อส่วนราชการ' DEFAULT 'string', \`orgChild4ShortName\` varchar(16) NULL COMMENT 'ชื่อย่อส่วนราชการ' DEFAULT 'string', \`orgChild4Code\` varchar(8) NULL COMMENT 'รหัสส่วนราชการ' DEFAULT 'string', \`orgChild4Rank\` enum ('DEPARTMENT', 'OFFICE', 'DIVISION', 'SECTION') NULL COMMENT 'ระดับส่วนราชการ', \`orgChild4Order\` int NULL COMMENT 'ลำดับที่ของส่วนราชการภายใน Child เดียวกัน', \`orgChild4PhoneEx\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายนอก', \`orgChild4PhoneIn\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายใน', \`orgChild4Fax\` varchar(64) NULL COMMENT 'หมายเลขโทรสาร', \`orgChild4IsNormal\` tinyint NULL COMMENT 'สถานะของหน่วยงาน' DEFAULT 1, \`orgRootId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgChild1Id\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgChild2Id\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgChild3Id\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`isAncestorDNA\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); - await queryRunner.query(`CREATE TABLE \`orgChild3\` (\`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', \`orgChild3Name\` varchar(255) NULL COMMENT 'ชื่อส่วนราชการ' DEFAULT 'string', \`orgChild3ShortName\` varchar(16) NULL COMMENT 'ชื่อย่อส่วนราชการ' DEFAULT 'string', \`orgChild3Code\` varchar(8) NULL COMMENT 'รหัสส่วนราชการ' DEFAULT 'string', \`orgChild3Rank\` enum ('DEPARTMENT', 'OFFICE', 'DIVISION', 'SECTION') NULL COMMENT 'ระดับส่วนราชการ', \`orgChild3Order\` int NULL COMMENT 'ลำดับที่ของส่วนราชการภายใน Child เดียวกัน', \`orgChild3PhoneEx\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายนอก', \`orgChild3PhoneIn\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายใน', \`orgChild3Fax\` varchar(64) NULL COMMENT 'หมายเลขโทรสาร', \`orgChild3IsNormal\` tinyint NULL COMMENT 'สถานะของหน่วยงาน' DEFAULT 1, \`orgRootId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgChild1Id\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgChild2Id\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`isAncestorDNA\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); - await queryRunner.query(`CREATE TABLE \`orgChild2\` (\`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', \`orgChild2Name\` varchar(255) NULL COMMENT 'ชื่อส่วนราชการ' DEFAULT 'string', \`orgChild2ShortName\` varchar(16) NULL COMMENT 'ชื่อย่อส่วนราชการ' DEFAULT 'string', \`orgChild2Code\` varchar(8) NULL COMMENT 'รหัสส่วนราชการ' DEFAULT 'string', \`orgChild2Rank\` enum ('DEPARTMENT', 'OFFICE', 'DIVISION', 'SECTION') NULL COMMENT 'ระดับส่วนราชการ', \`orgChild2Order\` int NULL COMMENT 'ลำดับที่ของส่วนราชการภายใน Child เดียวกัน', \`orgChild2PhoneEx\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายนอก', \`orgChild2PhoneIn\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายใน', \`orgChild2Fax\` varchar(64) NULL COMMENT 'หมายเลขโทรสาร', \`orgChild2IsNormal\` tinyint NULL COMMENT 'สถานะของหน่วยงาน' DEFAULT 1, \`orgRootId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgChild1Id\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`isAncestorDNA\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); - await queryRunner.query(`CREATE TABLE \`orgChild1\` (\`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', \`orgChild1Name\` varchar(255) NULL COMMENT 'ชื่อส่วนราชการ' DEFAULT 'string', \`orgChild1ShortName\` varchar(16) NULL COMMENT 'ชื่อย่อส่วนราชการ' DEFAULT 'string', \`orgChild1Code\` varchar(8) NULL COMMENT 'รหัสส่วนราชการ' DEFAULT 'string', \`orgChild1Rank\` enum ('DEPARTMENT', 'OFFICE', 'DIVISION', 'SECTION') NULL COMMENT 'ระดับส่วนราชการ', \`orgChild1Order\` int NULL COMMENT 'ลำดับที่ของส่วนราชการภายใน Child เดียวกัน', \`orgChild1PhoneEx\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายนอก', \`orgChild1PhoneIn\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายใน', \`orgChild1Fax\` varchar(64) NULL COMMENT 'หมายเลขโทรสาร', \`orgChild1IsNormal\` tinyint NULL COMMENT 'สถานะของหน่วยงาน' DEFAULT 1, \`orgRootId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`isAncestorDNA\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); - await queryRunner.query(`CREATE TABLE \`orgRoot\` (\`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', \`orgRootName\` varchar(255) NULL COMMENT 'ชื่อหน่วยงาน' DEFAULT 'string', \`orgRootShortName\` varchar(16) NULL COMMENT 'ชื่อย่อหน่วยงาน' DEFAULT 'string', \`orgRootCode\` varchar(8) NULL COMMENT 'รหัสหน่วยงาน' DEFAULT 'string', \`orgRootRank\` enum ('DEPARTMENT', 'OFFICE', 'DIVISION', 'SECTION') NULL COMMENT 'ระดับของหน่วยงาน' DEFAULT 'DEPARTMENT', \`orgRootOrder\` int NULL COMMENT 'ลำดับที่ของหน่วยงาน', \`orgRootPhoneEx\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายนอก', \`orgRootPhoneIn\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายใน', \`orgRootFax\` varchar(64) NULL COMMENT 'หมายเลขโทรสาร', \`orgRootIsNormal\` tinyint NULL COMMENT 'สถานะของหน่วยงาน' DEFAULT 0, \`orgRevisionId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`isAncestorDNA\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + await queryRunner.query(`CREATE TABLE \`orgChild4\` (\`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', \`orgChild4Name\` varchar(255) NULL COMMENT 'ชื่อส่วนราชการ' DEFAULT 'string', \`orgChild4ShortName\` varchar(16) NULL COMMENT 'ชื่อย่อส่วนราชการ' DEFAULT 'string', \`orgChild4Code\` varchar(8) NULL COMMENT 'รหัสส่วนราชการ' DEFAULT 'string', \`orgChild4Rank\` enum ('DEPARTMENT', 'OFFICE', 'DIVISION', 'SECTION') NULL COMMENT 'ระดับส่วนราชการ', \`orgChild4Order\` int NULL COMMENT 'ลำดับที่ของส่วนราชการภายใน Child เดียวกัน', \`orgChild4PhoneEx\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายนอก', \`orgChild4PhoneIn\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายใน', \`orgChild4Fax\` varchar(64) NULL COMMENT 'หมายเลขโทรสาร', \`orgRootId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgChild1Id\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgChild2Id\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgChild3Id\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgRevisionId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`isAncestorDNA\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + await queryRunner.query(`CREATE TABLE \`orgChild3\` (\`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', \`orgChild3Name\` varchar(255) NULL COMMENT 'ชื่อส่วนราชการ' DEFAULT 'string', \`orgChild3ShortName\` varchar(16) NULL COMMENT 'ชื่อย่อส่วนราชการ' DEFAULT 'string', \`orgChild3Code\` varchar(8) NULL COMMENT 'รหัสส่วนราชการ' DEFAULT 'string', \`orgChild3Rank\` enum ('DEPARTMENT', 'OFFICE', 'DIVISION', 'SECTION') NULL COMMENT 'ระดับส่วนราชการ', \`orgChild3Order\` int NULL COMMENT 'ลำดับที่ของส่วนราชการภายใน Child เดียวกัน', \`orgChild3PhoneEx\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายนอก', \`orgChild3PhoneIn\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายใน', \`orgChild3Fax\` varchar(64) NULL COMMENT 'หมายเลขโทรสาร', \`orgRootId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgChild1Id\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgChild2Id\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgRevisionId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`isAncestorDNA\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + await queryRunner.query(`CREATE TABLE \`orgChild2\` (\`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', \`orgChild2Name\` varchar(255) NULL COMMENT 'ชื่อส่วนราชการ' DEFAULT 'string', \`orgChild2ShortName\` varchar(16) NULL COMMENT 'ชื่อย่อส่วนราชการ' DEFAULT 'string', \`orgChild2Code\` varchar(8) NULL COMMENT 'รหัสส่วนราชการ' DEFAULT 'string', \`orgChild2Rank\` enum ('DEPARTMENT', 'OFFICE', 'DIVISION', 'SECTION') NULL COMMENT 'ระดับส่วนราชการ', \`orgChild2Order\` int NULL COMMENT 'ลำดับที่ของส่วนราชการภายใน Child เดียวกัน', \`orgChild2PhoneEx\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายนอก', \`orgChild2PhoneIn\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายใน', \`orgChild2Fax\` varchar(64) NULL COMMENT 'หมายเลขโทรสาร', \`orgRootId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgChild1Id\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgRevisionId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`isAncestorDNA\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + await queryRunner.query(`CREATE TABLE \`orgChild1\` (\`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', \`orgChild1Name\` varchar(255) NULL COMMENT 'ชื่อส่วนราชการ' DEFAULT 'string', \`orgChild1ShortName\` varchar(16) NULL COMMENT 'ชื่อย่อส่วนราชการ' DEFAULT 'string', \`orgChild1Code\` varchar(8) NULL COMMENT 'รหัสส่วนราชการ' DEFAULT 'string', \`orgChild1Rank\` enum ('DEPARTMENT', 'OFFICE', 'DIVISION', 'SECTION') NULL COMMENT 'ระดับส่วนราชการ', \`orgChild1Order\` int NULL COMMENT 'ลำดับที่ของส่วนราชการภายใน Child เดียวกัน', \`orgChild1PhoneEx\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายนอก', \`orgChild1PhoneIn\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายใน', \`orgChild1Fax\` varchar(64) NULL COMMENT 'หมายเลขโทรสาร', \`orgRootId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgRevisionId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`isAncestorDNA\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); await queryRunner.query(`CREATE TABLE \`orgRevision\` (\`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', \`orgRevisionId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgRevisionName\` varchar(255) NOT NULL DEFAULT 'string', \`orgRevisionIsCurrent\` tinyint NULL DEFAULT 0, \`orgRevisionCreatedAt\` datetime NULL, \`orgRevisionIsDraft\` tinyint NULL DEFAULT 0, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + await queryRunner.query(`CREATE TABLE \`orgRoot\` (\`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', \`orgRootName\` varchar(255) NULL COMMENT 'ชื่อหน่วยงาน' DEFAULT 'string', \`orgRootShortName\` varchar(16) NULL COMMENT 'ชื่อย่อหน่วยงาน' DEFAULT 'string', \`orgRootCode\` varchar(8) NULL COMMENT 'รหัสหน่วยงาน' DEFAULT 'string', \`orgRootRank\` enum ('DEPARTMENT', 'OFFICE', 'DIVISION', 'SECTION') NULL COMMENT 'ระดับของหน่วยงาน' DEFAULT 'DEPARTMENT', \`orgRootOrder\` int NULL COMMENT 'ลำดับที่ของหน่วยงาน', \`orgRootPhoneEx\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายนอก', \`orgRootPhoneIn\` varchar(64) NULL COMMENT 'หมายเลขโทรศัพท์ที่ติดต่อจากภายใน', \`orgRootFax\` varchar(64) NULL COMMENT 'หมายเลขโทรสาร', \`isAncestorDNA\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', \`orgRevisionId\` varchar(36) NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); await queryRunner.query(`ALTER TABLE \`orgChild4\` ADD CONSTRAINT \`FK_36291e45193793ac8730d5b9ff4\` FOREIGN KEY (\`orgChild3Id\`) REFERENCES \`orgChild3\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); await queryRunner.query(`ALTER TABLE \`orgChild3\` ADD CONSTRAINT \`FK_abe35eefd8fb2bf682542c57b5e\` FOREIGN KEY (\`orgChild2Id\`) REFERENCES \`orgChild2\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); await queryRunner.query(`ALTER TABLE \`orgChild2\` ADD CONSTRAINT \`FK_b3e512809e7e8dea0a6a1c0d95f\` FOREIGN KEY (\`orgChild1Id\`) REFERENCES \`orgChild1\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); @@ -24,8 +24,8 @@ export class CreateTableOrgGroupv31706254488144 implements MigrationInterface { await queryRunner.query(`ALTER TABLE \`orgChild2\` DROP FOREIGN KEY \`FK_b3e512809e7e8dea0a6a1c0d95f\``); await queryRunner.query(`ALTER TABLE \`orgChild3\` DROP FOREIGN KEY \`FK_abe35eefd8fb2bf682542c57b5e\``); await queryRunner.query(`ALTER TABLE \`orgChild4\` DROP FOREIGN KEY \`FK_36291e45193793ac8730d5b9ff4\``); - await queryRunner.query(`DROP TABLE \`orgRevision\``); await queryRunner.query(`DROP TABLE \`orgRoot\``); + await queryRunner.query(`DROP TABLE \`orgRevision\``); await queryRunner.query(`DROP TABLE \`orgChild1\``); await queryRunner.query(`DROP TABLE \`orgChild2\``); await queryRunner.query(`DROP TABLE \`orgChild3\``); diff --git a/src/migration/1706270464847-update_table_org_delete_IsNormal1.ts b/src/migration/1706270464847-update_table_org_delete_IsNormal1.ts new file mode 100644 index 00000000..6ee76cc9 --- /dev/null +++ b/src/migration/1706270464847-update_table_org_delete_IsNormal1.ts @@ -0,0 +1,20 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class UpdateTableOrgDeleteIsNormal11706270464847 implements MigrationInterface { + name = 'UpdateTableOrgDeleteIsNormal11706270464847' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`orgRoot\` DROP FOREIGN KEY \`FK_b9d787230c285dcd0ba4c63d33b\``); + await queryRunner.query(`ALTER TABLE \`orgRoot\` DROP COLUMN \`orgRevisionId\``); + await queryRunner.query(`ALTER TABLE \`orgRoot\` ADD \`orgRevisionId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000'`); + await queryRunner.query(`ALTER TABLE \`orgRoot\` ADD CONSTRAINT \`FK_b9d787230c285dcd0ba4c63d33b\` FOREIGN KEY (\`orgRevisionId\`) REFERENCES \`orgRevision\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`orgRoot\` DROP FOREIGN KEY \`FK_b9d787230c285dcd0ba4c63d33b\``); + await queryRunner.query(`ALTER TABLE \`orgRoot\` DROP COLUMN \`orgRevisionId\``); + await queryRunner.query(`ALTER TABLE \`orgRoot\` ADD \`orgRevisionId\` varchar(36) NULL`); + await queryRunner.query(`ALTER TABLE \`orgRoot\` ADD CONSTRAINT \`FK_b9d787230c285dcd0ba4c63d33b\` FOREIGN KEY (\`orgRevisionId\`) REFERENCES \`orgRevision\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); + } + +} diff --git a/src/migration/1706275475806-update_table_orgRevision_remove_orgRevisionId.ts b/src/migration/1706275475806-update_table_orgRevision_remove_orgRevisionId.ts new file mode 100644 index 00000000..2f154bca --- /dev/null +++ b/src/migration/1706275475806-update_table_orgRevision_remove_orgRevisionId.ts @@ -0,0 +1,14 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class UpdateTableOrgRevisionRemoveOrgRevisionId1706275475806 implements MigrationInterface { + name = 'UpdateTableOrgRevisionRemoveOrgRevisionId1706275475806' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`orgRevision\` DROP COLUMN \`orgRevisionId\``); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`orgRevision\` ADD \`orgRevisionId\` varchar(40) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000'`); + } + +}