Tikhon
Но мне с первым значением никак не нужно работать, тоже ошибку получу
Tikhon
Есть ли варианты исправить эту проблему, кроме искусственного ограничения области видимости с помощью {} ?
Herman
Написать =
Andrey
Просто напиши _,err =
Tikhon
Ой.. Не думал что это будет работать, спасибо
ILIA
скоро на них сидеть будем)
Так там же эмуляция x86 вроде есть
Тимофей
Так круто, когда нативно
ILIA
Ну на го у меня по сути ни одна строчка кода не работает. Хотя синтаксис языка знаю неплохо - решал задачи на степике
Ну на том же степеке задачи очень легко идут. Просто вариант реализации не всегда самый красивый))
Alexander
Так там же эмуляция x86 вроде есть
да не будет их все равно, потому что печатать никто не будет
ILIA
Это возможно, наверное
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? Как зафиксировать ориентацию в мобильной версии приложения?
Tikhon
В смысле ? А как мне тогда из него в handler правильную информацию донести ?
Tikhon
Например берём функцию Login из userservice - она сначала ищет пользователя, потом проверяет его пароль
Tikhon
Статусы у этих ошибок разные - 404 и 400
Tikhon
Вообще не понял что вы имеете ввиду
Herman
Статусы у этих ошибок разные - 404 и 400
сервис вовзращает ошибки
Herman
хендлер маппит ошибки сервиса в статус коды
Herman
наприме ErrNotFound
Herman
замаппится в 404
Tikhon
наприме ErrNotFound
Я это понял, а как мне это реализовать ? Не очень себе представляю как в хендлере ошибки сервиса в статус коды переводить
Herman
если ошибок немного, то через иф
Herman
красивее будет написать фунцкию, которая будет маппить ошибки в статус коды для фронта
Herman
в ней switch
Herman
Фу
errors.Is
Herman
не иф
Tikhon
errors.Is
Спасибо, сейчас погуглю этот метод
Herman
точнее иф будет, чет не о том подумал
Herman
не текста сравнивать, а сами ошибки
Tikhon
не текста сравнивать, а сами ошибки
А им можно какой-то определённый тип задавать ?
Anonymous
я создаю отдельный пакет для ошибок
Anonymous
и описываю все возможные
Anonymous
потом в бизнес логике у модулей возвращаю этот пакет как ошибку
Tikhon
Не очень себе представляю, как именно ошибки из userservice должны выглядеть
Tikhon
Можете исходник скинуть, если есть возможность ?
Tikhon
Вау, какую тему используете ?
Anonymous
гитхаб xd
Herman
а оно Error() реализует?
Herman
мне такой вариант не очень нравится, если хочется обернуть ошибку во что-то еще есть errors.Wrap
Anonymous
да ты говорил когда-то
Herman
а это похоже на просто структуру которая называется ошибка
Anonymous
ну мне кажется это решение для его вопроса
Anonymous
скорее всего есть варианты лучше, но я хз
Herman
у нас маппят ошибки в свиче
Herman
ошибка всегда error интерфейс
Anonymous
у нас маппят ошибки в свиче
повторение кода, не?
Herman
в каком месте?
Herman
в сервисах объявлены ошибки, когда они доходят до хенделера, то там происходит маппинг ошибок приложения в ошибки для фронта(не только статус коды)
Anonymous
понял
Herman
добавляешь ошибку в сервис -> добавляешь ее в свитч если надо и там уже описываешь как это фронт увидит
Tikhon
Я это понимаю, просто как ошибка сама по себе в идеале должна выглядеть, в моём случае? И правильно ли я понимаю, что в свитче мне придётся текст ошибки проверять ?
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 не комментировал события в Украине и не сообщал о блокировке российских аккаунтов.
Рик
Опа