27 lines
869 B
Go
27 lines
869 B
Go
// 功能描述:转换配送点写入时的数据库错误,避免向客户端泄露数据库实现细节。
|
||
// 版本:v1.0
|
||
package common
|
||
|
||
import (
|
||
"errors"
|
||
|
||
"github.com/jackc/pgx/v5/pgconn"
|
||
)
|
||
|
||
const deliveryCodeUniqueConstraint = "idx_delivery_basic_delivery_code"
|
||
|
||
var errDeliveryCodeExists = errors.New("配送点编码已存在,请更换后重试")
|
||
|
||
// DeliveryCreateError 将配送点创建错误转换为稳定的业务错误。
|
||
// 参数:err 为数据库创建操作返回的原始错误。
|
||
// 返回值:配送点编码冲突时返回中文业务错误,其他错误保持原样。
|
||
func DeliveryCreateError(err error) error {
|
||
var postgresError *pgconn.PgError
|
||
if errors.As(err, &postgresError) &&
|
||
postgresError.Code == "23505" &&
|
||
postgresError.ConstraintName == deliveryCodeUniqueConstraint {
|
||
return errDeliveryCodeExists
|
||
}
|
||
return err
|
||
}
|