В многослойном Go-сервисе легко случайно пропустить наверх ошибки хранения данных (например, sql.ErrNoRows) вплоть до самых обработчика HTTP или gRPC и это приводит к связыванию транспортного уровня с деталями реализации базы данных.
Чтоб такого не случалось нужно определить доменные ошибоки (например user.ErrNotFound и user.ErrConflict) на границе сервиса и их трансляции в репозиториях: специфичные для БД ошибки перехватываются и заменяются доменными sentinel-ошибками. В результате транспортные обработчики работают только с доменными ошибками, преобразуя их в соответствующие HTTP или gRPC статусы (404, 409, 500), не импортируя пакеты БД
23.04.2026
Похожее
22.04.2026
Паттерн репозиторий
Да да, банально, но всегда интересно смотреть кто как реализует разные паттерны ...
21.04.2026
Байтоебство
Статья объясняет, как использовать битовые флаги и битовые маски в Go для эффект...
20.04.2026
Разбудить по сети
В статье подробно объясняется, как работает технология Wake-on-LAN, которая позв...
17.04.2026
Черный ящик
Вдохновившись механизмом trace.FlightRecorder, появившимся в Go 1.25, автор реши...