лучше сделать? Двумя отдельными запросами в бд? Или транзакцией, чтобы сделать операцию атомарной? Насколько это будет удар по производительности?
Представим, что мы рассматриваем кейс социальной сети. Спасибо!
Немного подробнее объясни Зачем тебе создавать сообщение сразу после создания чата?
ну допустим у меня нет чата между пользователем. я пишу ему сообщение у меня на бэке должно произойти создание чата + к этому чату прикрепляется сообщение
В таком случае скорее всего правильнее два отельных запроса сделать 🤔
а почему транзакцией, нет?
Не знаю даже на самом деле
Зачем создавать чат отдельно?
ради баланса вселенной
У тебя предполагается что 2 пользователя могут создавать 10 разных чатов друг с другом?
эндпоинт, который производит две транзакции из разных доменов - анти паттерн, поэтому сделай атомарные
Создаешь чат и дальше все общение идет с чатом а не с пользователями и не надо костыли писать в виде постоянной проверки на чат и долбить сервак
общение с чатом?...
POST /startConversation?user_id=...&message=... -> (ChatService delegate) insert into chat ... -> (MessageService delegate) insert into message values ({ chat_id }, ...)
Какой-нибудь post /order под капотом может проводить транзакции в абсолютно разных доменах, от пользователя до оплаты и рассылки уведомлений Почему ты считаешь, что это антипаттерн?
я придерживаюсь религии атомарных эндпоинтов
Это бессмысленно, а иногда и практически невозможно в случае сложной структуры проекта. Пример с заказом - не очень хорошо, если клиентское приложение будет последовательно слать запросы на создание заказа, потом на его оплату, потом на рассылку уведомлений
А потом приходит заказчик/продукт и говорит что вот эти все изменения надо собрать в большую форму и надо сохранять по одной кнопке
так я это и имел ввиду
Обсуждают сегодня