есть файл "repository" в котором объявлены интерфейсы и их реализация для прямой работы с БД и так же интерфейсы и реализация для сервисов которые могут использовать несколько репозиториев для какого то действия. Думал на каждую транзацию создавать новые экземпляры сервисов и туда подкидывать трнзакцию, но мне так не очень понравилось, хочу узнать как можно это по нормальному сделать в go.
Создай для репозитория метод Tx(*sql.Tx) YourRepository, а реализуй его так: func (repo *myRepo) Tx(tx *sql.Tx) YourRepository { r := *repo r.db = tx return &r }
Обсуждают сегодня