feat: improve error handling on create and add search for objects with code and name

This commit is contained in:
dpurbosakti
2025-10-01 16:04:10 +07:00
parent 759b0ef318
commit af090ed7c1
80 changed files with 285 additions and 492 deletions
+50 -1
View File
@@ -1,9 +1,58 @@
package libhelper
import "gorm.io/gorm"
import (
"fmt"
pl "simrs-vx/pkg/logger"
"github.com/jackc/pgx/v5/pgconn"
"gorm.io/gorm"
)
func SearchCodeOrName(search string, tx *gorm.DB) {
if search != "" {
tx.Where("\"Code\" ILIKE ? OR \"Name\" ILIKE ?", "%"+search+"%", "%"+search+"%")
}
}
func HandleCreateError(input any, event *pl.Event, err error) error {
e, ok := err.(*pgconn.PgError)
if !ok {
// fallback if it's not a pg error
event.Status = "failed"
event.ErrInfo = pl.ErrorInfo{
Code: "data-create-fail",
Detail: fmt.Sprintf("Database insert failed: %s", err.Error()),
Raw: err,
}
return pl.SetLogError(event, input)
}
switch e.Code {
case "23505": // unique_violation
event.Status = "failed"
event.ErrInfo = pl.ErrorInfo{
Code: "data-create-duplicate",
Detail: fmt.Sprintf("Duplicate value violates unique constraint: %s", e.ConstraintName),
Raw: err,
}
return pl.SetLogError(event, input)
case "23503": // foreign_key_violation
event.Status = "failed"
event.ErrInfo = pl.ErrorInfo{
Code: "data-create-fkViolation",
Detail: fmt.Sprintf("Foreign key constraint '%s' violated. Please check related record exists.", e.ConstraintName),
Raw: err,
}
return pl.SetLogError(event, input)
default:
event.Status = "failed"
event.ErrInfo = pl.ErrorInfo{
Code: "data-create-fail",
Detail: fmt.Sprintf("Database insert failed: %s", e.Message),
Raw: err,
}
return pl.SetLogError(event, input)
}
}