package libhelper 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) } }