Tikhon
Но мне с первым значением никак не нужно работать, тоже ошибку получу
Tikhon
Есть ли варианты исправить эту проблему, кроме искусственного ограничения области видимости с помощью {} ?
Herman
Написать =
Andrey
Просто напиши _,err =
Tikhon
Ой.. Не думал что это будет работать, спасибо
Тимофей
Так круто, когда нативно
ILIA
ILIA
Это возможно, наверное
Alexander
Tikhon
https://github.com/mzdt/apiserver/blob/master/internal/handlers/accounthandler/accounthandler.go
У меня есть некий accountHandler, в котором происходит парсинг и валидация данных из запроса, далее эти данные отправляются в accountservice, где с ними уже происходит работа.
Вопрос в следующем - как грамотно возвращать http коды из accountservice в accountHandler ?
Вариант с возвратом http кода в качестве результата выполнения функции не очень нравится, так как в некоторых функциях получается по 3 возвращаемых значения(например login - возвращает токен, ошибку, и ещё http код придётся), да и fiber.Ctx в accountservice тоже не особо притягивать хочется. Есть какой-то более красивый вариант возврата кода, кроме тех двух что я озвучил ?
Tikhon
Или тут самое всё таки самое адекватное решение - это возврат http кода в качестве результата выполнения accountservice функции ?
Aртем
Кто нибудь пользуется fyne? Как зафиксировать ориентацию в мобильной версии приложения?
Herman
Tikhon
В смысле ? А как мне тогда из него в handler правильную информацию донести ?
Tikhon
Например берём функцию Login из userservice - она сначала ищет пользователя, потом проверяет его пароль
Tikhon
Статусы у этих ошибок разные - 404 и 400
Tikhon
Вообще не понял что вы имеете ввиду
Herman
Herman
хендлер маппит ошибки сервиса в статус коды
Herman
наприме ErrNotFound
Herman
замаппится в 404
Tikhon
наприме ErrNotFound
Я это понял, а как мне это реализовать ? Не очень себе представляю как в хендлере ошибки сервиса в статус коды переводить
Herman
если ошибок немного, то через иф
Herman
красивее будет написать фунцкию, которая будет маппить ошибки в статус коды для фронта
Herman
в ней switch
Tikhon
Tikhon
Herman
Herman
не иф
Tikhon
errors.Is
Спасибо, сейчас погуглю этот метод
Herman
точнее иф будет, чет не о том подумал
Herman
не текста сравнивать, а сами ошибки
Anonymous
я создаю отдельный пакет для ошибок
Anonymous
и описываю все возможные
Anonymous
потом в бизнес логике у модулей возвращаю этот пакет как ошибку
Tikhon
Не очень себе представляю, как именно ошибки из userservice должны выглядеть
Tikhon
Tikhon
Можете исходник скинуть, если есть возможность ?
Herman
Anonymous
Anonymous
Tikhon
Вау, какую тему используете ?
Anonymous
гитхаб xd
Herman
Herman
мне такой вариант не очень нравится, если хочется обернуть ошибку во что-то еще есть errors.Wrap
Anonymous
да ты говорил когда-то
Herman
а это похоже на просто структуру которая называется ошибка
Anonymous
ну мне кажется это решение для его вопроса
Anonymous
скорее всего есть варианты лучше, но я хз
Herman
у нас маппят ошибки в свиче
Herman
ошибка всегда error интерфейс
Anonymous
Herman
в каком месте?
Herman
в сервисах объявлены ошибки, когда они доходят до хенделера, то там происходит маппинг ошибок приложения в ошибки для фронта(не только статус коды)
Anonymous
понял
Herman
добавляешь ошибку в сервис -> добавляешь ее в свитч если надо и там уже описываешь как это фронт увидит
Tikhon
Я это понимаю, просто как ошибка сама по себе в идеале должна выглядеть, в моём случае? И правильно ли я понимаю, что в свитче мне придётся текст ошибки проверять ?
Herman
Herman
switch err := errors.Cause(err) {
case model.ErrNotFound:
например
Herman
у нас вообще два свича, такой ^^^ на сервисные
Herman
и по типпам ошибок
Herman
switch err := errors.Cause(err).(type) {
case *json.UnmarshalTypeError:
Herman
не очень понял
Herman
если json кинут UnmarshalTypeError и мы над этим еще сделали errors.Wrap()?
Herman
я так вижу fmt.Errorf(%w) делает тип ошибки *fmt.WrapError
Herman
а до внутреннего типа оно не добирается, да
Herman
Herman
в плане логгирования errors.Wrap() делаем
Herman
это не меняет cause как я вижу
Anonymous
Shaplin
Можно ли в пакете database-go/sql в ролью write читать и писать? Мне нужно создать транзакцию, которая будет читать по условию батч записей, а другая будет удалять их.
Alexander
select в транзакции обычно не гарантирует неизменности выбранных данных
Alexander
select for update юзай, а лучше апдейти так, чтобы избежать селектов
Maks
минус слак пацаны
Рик
Maks
Российские пользователи корпоративного мессенджера Slack начали массово жаловаться на удаление рабочих пространств
Часть пользователей магазинов приложений App Store и Play Store написала, что аккаунты удалили без предупреждения и возможности сохранить данные. Другая часть — что предупреждение пришло уже после блокировки. С 12 марта появилось около 60 отзывов с подобными претензиями.
Стоит отметить, что официально Slack не комментировал события в Украине и не сообщал о блокировке российских аккаунтов.
Рик
Опа