Post Thumbnail

В многослойном Go-сервисе легко случайно пропустить наверх ошибки хранения данных (например, sql.ErrNoRows) вплоть до самых обработчика HTTP или gRPC и это приводит к связыванию транспортного уровня с деталями реализации базы данных.

Чтоб такого не случалось нужно определить доменные ошибоки (например user.ErrNotFound и user.ErrConflict) на границе сервиса и их трансляции в репозиториях: специфичные для БД ошибки перехватываются и заменяются доменными sentinel-ошибками. В результате транспортные обработчики работают только с доменными ошибками, преобразуя их в соответствующие HTTP или gRPC статусы (404, 409, 500), не импортируя пакеты БД

Похожее

Post Thumbnail

mmap или pread

Автор статьи - инженер из VictoriaMetrics. На примере реального движка хранения ...