From e8a7123f30d9d84fe31551e4da5d25590d2c1c2b Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Tue, 2 Sep 2025 12:24:03 +0700 Subject: [PATCH] add several fields into person --- cmd/migration/migrations/20250902052320.sql | 13 ++++ cmd/migration/migrations/atlas.sum | 5 +- internal/domain/main-entities/language/dto.go | 63 +++++++++++++++++++ .../domain/main-entities/language/entity.go | 11 ++++ .../domain/main-entities/person/entity.go | 5 ++ internal/interface/migration/migration.go | 2 + 6 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 cmd/migration/migrations/20250902052320.sql create mode 100644 internal/domain/main-entities/language/dto.go create mode 100644 internal/domain/main-entities/language/entity.go diff --git a/cmd/migration/migrations/20250902052320.sql b/cmd/migration/migrations/20250902052320.sql new file mode 100644 index 00000000..44605a16 --- /dev/null +++ b/cmd/migration/migrations/20250902052320.sql @@ -0,0 +1,13 @@ +-- Create "Language" table +CREATE TABLE "public"."Language" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "Code" character varying(10) NULL, + "Name" character varying(50) NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "uni_Language_Code" UNIQUE ("Code") +); +-- Modify "Person" table +ALTER TABLE "public"."Person" ADD COLUMN "PassportNumber" character varying(20) NULL, ADD COLUMN "DrivingLicenseNumber" character varying(20) NULL, ADD COLUMN "Language_Code" character varying(10) NULL, ADD CONSTRAINT "fk_Person_Language" FOREIGN KEY ("Language_Code") REFERENCES "public"."Language" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION; diff --git a/cmd/migration/migrations/atlas.sum b/cmd/migration/migrations/atlas.sum index b4d8d0f9..610cf79f 100644 --- a/cmd/migration/migrations/atlas.sum +++ b/cmd/migration/migrations/atlas.sum @@ -1,5 +1,6 @@ -h1:vQwjJ2jG5TRFv8oZyhxcynOFS+H0vyKY/XWsXJyhpuo= +h1:1//2fu4kC38Dh7Uay7V1mN3umZje2BP/P7dxjdyRc4c= 20250829081952.sql h1:YMsYq3uPsx70EjWSGfYnVRR5GV0q1fRGIszYZAWzXNo= 20250901073356.sql h1:jjd5TLs+Pyi0u3SrOM+aNTbHxSJboXgcOz/L4bkYx+c= 20250901080035.sql h1:LWa3X0NWjalVcxNbk5HaHj1Oqu60/AQabi0jBmCeQBI= -20250901105703.sql h1:45mFfTFkLv+1oQXfqNxtCBGXTyzWuqq759I3u1SVxRo= +20250901105703.sql h1:2h2B/wOFM0826sBXQutTtq24C+5duLqi4zEFOdbPsCI= +20250902052320.sql h1:bnTbx2vkZ7jscOdgjL8G1cuKzZ7rMMsR+KawkX8w74g= diff --git a/internal/domain/main-entities/language/dto.go b/internal/domain/main-entities/language/dto.go new file mode 100644 index 00000000..5a7c98c4 --- /dev/null +++ b/internal/domain/main-entities/language/dto.go @@ -0,0 +1,63 @@ +package language + +import ( + ecore "simrs-vx/internal/domain/base-entities/core" +) + +type CreateDto struct { + Code string `json:"code"` + Name string `json:"name"` +} + +type ReadListDto struct { + Code string `json:"code"` + Name string `json:"name"` + + Page int `json:"page"` + PageSize int `json:"page_size"` + NoPagination int `json:"no_pagination"` +} + +type ReadDetailDto struct { + Id uint16 `json:"id"` + Code string `json:"code"` + Name string `json:"name"` +} + +type UpdateDto struct { + Id uint16 `json:"id"` + CreateDto +} + +type DeleteDto struct { + Id uint16 `json:"id"` +} + +type MetaDto struct { + PageNumber int `json:"page_number"` + PageSize int `json:"page_size"` + Count int `json:"count"` +} + +type ResponseDto struct { + ecore.Main + Code string `json:"code"` + Name string `json:"name"` +} + +func (d Language) ToResponse() ResponseDto { + resp := ResponseDto{ + Code: d.Code, + Name: d.Name, + } + resp.Main = d.Main + return resp +} + +func ToResponseList(data []Language) []ResponseDto { + resp := make([]ResponseDto, len(data)) + for i, u := range data { + resp[i] = u.ToResponse() + } + return resp +} diff --git a/internal/domain/main-entities/language/entity.go b/internal/domain/main-entities/language/entity.go new file mode 100644 index 00000000..2fa224f2 --- /dev/null +++ b/internal/domain/main-entities/language/entity.go @@ -0,0 +1,11 @@ +package language + +import ( + ecore "simrs-vx/internal/domain/base-entities/core" +) + +type Language struct { + ecore.Main // adjust this according to the needs + Code string `json:"code" gorm:"unique;size:10"` + Name string `json:"name" gorm:"size:50"` +} diff --git a/internal/domain/main-entities/person/entity.go b/internal/domain/main-entities/person/entity.go index 09f04c7e..7b83ece7 100644 --- a/internal/domain/main-entities/person/entity.go +++ b/internal/domain/main-entities/person/entity.go @@ -3,6 +3,7 @@ package person import ( ecore "simrs-vx/internal/domain/base-entities/core" ee "simrs-vx/internal/domain/main-entities/ethnic" + el "simrs-vx/internal/domain/main-entities/language" epa "simrs-vx/internal/domain/main-entities/person-address" epc "simrs-vx/internal/domain/main-entities/person-contact" erp "simrs-vx/internal/domain/references/person" @@ -19,6 +20,8 @@ type Person struct { BirthRegency_Code *string `json:"birthRegency_code" gorm:"size:4"` Gender_Code *erp.GenderCode `json:"gender_code" gorm:"size:10"` ResidentIdentityNumber *string `json:"residentIdentityNumber" gorm:"size:16"` + PassportNumber *string `json:"passportNumber" gorm:"size:20"` + DrivingLicenseNumber *string `json:"drivingLicenseNumber" gorm:"size:20"` Religion_Code *erp.ReligionCode `json:"religion_code" gorm:"size:10"` Education_Code *erp.EducationCode `json:"education_code" gorm:"size:10"` Ocupation_Code *erp.OcupationCode `json:"occupation_code" gorm:"size:15"` @@ -27,4 +30,6 @@ type Person struct { Ethnic *ee.Ethnic `json:"ethnic,omitempty" gorm:"foreignKey:Ethnic_Code;references:Code"` Addresses *[]epa.PersonAddress `json:"addresses" gorm:"foreignKey:Person_Id"` Contacts *[]epc.PersonContact `json:"contacts" gorm:"foreignKey:Person_Id"` + Language_Code *string `json:"language_code" gorm:"size:10"` + Language *el.Language `json:"language,omitempty" gorm:"foreignKey:Language_Code;references:Code"` } diff --git a/internal/interface/migration/migration.go b/internal/interface/migration/migration.go index 353120d3..1d4e62b5 100644 --- a/internal/interface/migration/migration.go +++ b/internal/interface/migration/migration.go @@ -20,6 +20,7 @@ import ( insurancecompany "simrs-vx/internal/domain/main-entities/insurance-company" item "simrs-vx/internal/domain/main-entities/item" itemprice "simrs-vx/internal/domain/main-entities/item-price" + language "simrs-vx/internal/domain/main-entities/language" material "simrs-vx/internal/domain/main-entities/material" mcusrc "simrs-vx/internal/domain/main-entities/mcu-src" mcusrccategory "simrs-vx/internal/domain/main-entities/mcu-src-category" @@ -119,6 +120,7 @@ func GetEntities() []any { &material.Material{}, &device.Device{}, &doctorfee.DoctorFee{}, + &language.Language{}, } }