смешивания логики работы с бд со сторонней логикой в Multi?
Например:
Multi.new()
|> Multi.run(:user, fn -> Users.find_by(id: user_id) end)
|> Multi.run(:update, fn _repo, %{user: user} ->
Users.update(user, changeset)
end)
|> Multi.run(:dispose, fn -> Registry.dispose(token) end)
|> ...
Где Registry не имеет никакого отношения к бд и объекту MyApp.Repo.
Открываем доку и там написано Multi is data structure for grouping multiple Repo operations... А в чем идея была засунуть вызов registry внутрь Multi?
но в той же доке написан пример для run/3, где идет манипуляция с файлом
В моем устаревшем мире Multi для транзакций из нескольких операций. Остальное можно собрать через пайп или через with.
Multi лучше with в одном аспекте - он выдает весь контекст на момент сбоя, не только то, что ты захватишь error value
Как я понял, манипуляция с файлом для того, чтобы синхронизировать данные с двух хранилищ: бд и файловая система
То есть, чтобы отменить действие в бд, если не получиться что-то сделать в бд и наоборот
Обсуждают сегодня