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 }