💡 SQL-транзакции в Go: чисто и эффективно
Работа с транзакциями в Go может быть запутанной: *sql.Tx проникает в бизнес-логику, тестировать сложно, а код теряет чистоту. Наш коллега Go-разработчик предлагает элегантное решение — интерфейс Transactor, который изолирует работу с транзакциями от бизнес-логики.
❓В чём суть
Транзакции обрабатываются через интерфейс:
type Transactor interface {
WithinTransaction(ctx context.Context, func(ctx context.Context) error) error
}
Ваша логика не знает, используется ли транзакция или нет — всё это абстрагировано в Transactor.
📎 Подробнее про решение в статье
🐸Библиотека Go разработчика