И тогда @davydovanton (кажется) советовал на каждый раз написать свою операцию, а не реюзать одну и ту же. Это тоже вариант, но мне он не нравится, потому что много дублирования.
если упростить, то вот что получается прмерно так:
- после записи ребенка на занятие надо сделать что-то через сайдкик (уведомить всех заинтересованных) - запись ребенка может происходить в разных местах: - на бесплатные занятия - сразу по кнопке - на платные - после колбэка - из админки по звонку пользователя
Поэтому запись и отправка уведомлений собраны вместе в один класс-операцию. При этом может так быть, что вызов этой "операции" произойдет из транзакции.
так-с, ну это слишком абстрактный разговор получится. Я же просто привел пример, как может получиться, что в бэкграунд отправляется что-то из открытой транзакции. Такое довольно часто встречалось в проектах, над которыми я работал. Не всегда это были мои решения, поэтому думаю, что это не редкость.
Блин, у меня даже жена жалуестя, что я слишком абстрактно говорю иногда 🙂 Я веду к тому, что описанная проблема возникает когда нет нужного уровня абстракции. Ты напишешь ту транзакцию. Ок. Вопрос для проверки твоей идеи: как это можно тестить? Никак, у тебя получится черный ящик, куча вводных параметров и куча выходных, как-то связанных между собой. https://gist.github.com/alxekb/69659997b5184a35c9042db2268d679a
Блин, у меня даже жена жалуестя, что я слишком абстрактно говорю иногда 🙂 Я веду к тому, что описанная проблема возникает когда нет нужного уровня абстракции. Ты напишешь ту транзакцию. Ок. Вопрос для проверки твоей идеи: как это можно тестить? Никак, у тебя получится черный ящик, куча вводных параметров и куча выходных, как-то связанных между собой. https://gist.github.com/alxekb/69659997b5184a35c9042db2268d679a
И тогда @davydovanton (кажется) советовал на каждый раз написать свою операцию, а не реюзать одну и ту же. Это тоже вариант, но мне он не нравится, потому что много дублирования.
@AlxEkb сорян, реально слишком абстрактный будет разговор. Лучше бы пример по моему "ТЗ" на псевдокоде, если не жалко времени. Так, чтобы и стратегия, и консистентность, и сайдкик
Ну я никогда не прочь разделить код и оставить 2-3 совершенно одинаковых куска, если это нужно. Но в данном случае, я не уверен, что это нужно было делать