diff --git a/internal/domain/main-entities/patient/entity.go b/internal/domain/main-entities/patient/entity.go index 83afa6ce..9ad63ce8 100644 --- a/internal/domain/main-entities/patient/entity.go +++ b/internal/domain/main-entities/patient/entity.go @@ -15,7 +15,14 @@ type Patient struct { RegisteredAt *time.Time `json:"registeredAt"` RegisteredBy_User_Name *string `json:"registeredBy_user_name" gorm:"size:100"` Status_Code erc.ActiveStatusCode `json:"status_code" gorm:"not null;size:10"` - Number *string `json:"number" gorm:"unique;size:15"` - Parent_Number *string `json:"parent_number"` - Parent *Patient `json:"parent,omitempty" gorm:"foreignKey:Parent_Number;references:Number"` + + // Normal UNIQUE index — required for the foreign key reference + Number *string `json:"number" gorm:"size:15;unique"` + + // Partial unique index — keeps Number unique only for non–soft-deleted records. + // Allows duplicate Number values when previous records are soft-deleted. + _ struct{} `gorm:"uniqueIndex:idx_number_active,where:\"DeletedAt\" IS NULL"` + + Parent_Number *string `json:"parent_number"` + Parent *Patient `json:"parent,omitempty" gorm:"foreignKey:Parent_Number;references:Number"` }