Files
satusehat-worker/pkg/utils/validator/translator.go
T
2026-04-14 01:21:54 +00:00

41 lines
1.4 KiB
Go

package validator
import (
"errors"
"fmt"
"strings"
"github.com/go-playground/validator/v10"
)
// TranslateError menerjemahkan error dari go-playground/validator menjadi pesan bahasa Indonesia.
func TranslateError(err error) string {
var ve validator.ValidationErrors
// Cek apakah error merupakan tipe ValidationErrors dari go-playground
if errors.As(err, &ve) {
var errMsgs []string
for _, fe := range ve {
// fe.Field() mengambil nama field struct (atau bisa pakai fe.Param() untuk parameter)
switch fe.Tag() {
case "required":
errMsgs = append(errMsgs, fmt.Sprintf("Kolom '%s' wajib diisi", fe.Field()))
case "oneof":
errMsgs = append(errMsgs, fmt.Sprintf("Kolom '%s' harus bernilai salah satu dari: %s", fe.Field(), fe.Param()))
case "min":
errMsgs = append(errMsgs, fmt.Sprintf("Kolom '%s' minimal harus %s karakter", fe.Field(), fe.Param()))
case "max":
errMsgs = append(errMsgs, fmt.Sprintf("Kolom '%s' maksimal harus %s karakter", fe.Field(), fe.Param()))
case "email":
errMsgs = append(errMsgs, fmt.Sprintf("Kolom '%s' harus berupa format email yang valid", fe.Field()))
default:
errMsgs = append(errMsgs, fmt.Sprintf("Kolom '%s' tidak valid pada validasi '%s'", fe.Field(), fe.Tag()))
}
}
return strings.Join(errMsgs, ", ")
}
// Kembalikan error asli jika bukan error validasi
return err.Error()
}