dana-medical-site/internal/storage/conflict.go
2026-10-14 13:33:13 +00:00

28 lines
763 B
Go

package storage
import (
"errors"
"fmt"
"github.com/jackc/pgx/v5/pgconn"
)
// ErrConflict — нарушена уникальность: например, адрес (slug) уже занят другой записью.
var ErrConflict = errors.New("storage: conflict")
// ErrBadReference — ссылка на несуществующую запись: удалённую услугу, файл и т. п.
var ErrBadReference = errors.New("storage: bad reference")
func wrapConflict(err error) error {
var pg *pgconn.PgError
if errors.As(err, &pg) {
switch pg.Code {
case "23505":
return fmt.Errorf("%w: %s", ErrConflict, pg.ConstraintName)
case "23503":
return fmt.Errorf("%w: %s", ErrBadReference, pg.ConstraintName)
}
}
return err
}