транзакцию"?
Ну, когда flusher сохраняет в базу он должен сделать что-то типа: sql.Tx.ExexContext(query), откуда flusher возьмет sql.Tx?
тут по-разному можно реализовать, также как и репо, так и он (если вы конечно не прямо в репе это все запрятали ахаха)
Ну так об этом и речь, предлагают это все сделать в одном методе репозитория, чтоб не передавать транзакцию в параметрах
но вам же не нравится нарушение SRP
Да, и об этом и спор, мне кажется, что это дичь, но я человек в го неопытный, хочу понять, почему люди хотят делать именно так
потому что отказались от ORM, которая могла бы вести все операции внекотором регистре изменений и потом когда все готово одним разом все флашила бы в БД работают без ORM = воротят вот такой вот компромис при реализации классических архитектур, рожденных в эпоху ORM
А почему передать коннекшен(транзакцию или более абстрактно unit of work) хуже, чем делать вот такую мешанину?
по мне не хуже, но тут чистую архитектуру все срочно полюбили в структурном просто языке с простым кодом, вот размышляют как лучше
outbox.StoreCreateUserEvent(ctx, tx, func(ctx, tx) (domain.User, error) { ... })
Обсуждают сегодня