package entities import ( "fmt" "github.com/google/uuid" "gorm.io/gorm" ) type TAssignmentEntity struct { ID uuid.UUID `gorm:"primaryKey;type:uuid;default:uuid_generate_v4()" json:"id"` DocumentType string `gorm:"type:varchar(100);" json:"document_type"` DocumentID uuid.UUID `gorm:"type:uuid;index;" json:"document_id"` ClientID uuid.UUID `gorm:"type:uuid;index;" json:"client_id"` AssignmentUsers []TAssignmentUserEntity `gorm:"foreignKey:AssignmentID;references:ID"` Client M_Client `gorm:"foreignKey:ClientID;references:ID"` FullAuditTrail } func (TAssignmentEntity) TableName() string { return "t_assignments" } // Contoh fungsi switch-case untuk ambil dokumen func GetDocumentByAssignment(db *gorm.DB, assignment TAssignmentEntity) (interface{}, error) { switch assignment.DocumentType { // case "SOHeader": // var so SOHeader // if err := db.First(&so, "id = ?", assignment.DocumentID).Error; err != nil { // return nil, err // } // return so, nil // case "GRHeader": // var gr GRHeader // if err := db.First(&gr, "id = ?", assignment.DocumentID).Error; err != nil { // return nil, err // } // return gr, nil // Tambahkan case lain sesuai kebutuhan default: return nil, fmt.Errorf("unknown document type: %s", assignment.DocumentType) } }