отдельную модель чатов или достаточно добавить поле в чаты с булевым значением is_direct?
ну у меня есть модель пользователя и чата, две разных таблицы, в модели чата совсем по другому всё, но так как там может быть как и чат, так и личные сообщения, просто внутри таблицы с сайтами храню данные приватный ли это чат
Ну личные сообщения от чатовских по идее отличаются тем что у чатовских есть chat_id, а у личных есть id получателя сообщения. И никаких дополнительных булевых не надо. Можете сразу добавить message_id, типа сообщение в ответ на это сообщение. И все у вас и в чате и в личных сообщениях можно делать ответы на конкретные сообщения
у чатовских и личных есть chat.id и from.id from это пользователь
Если у всех сообщений есть chat.id, тогда признак в модели chat, что он личный
как потом выборки делать из одной кучи по сложному условию?
Можно конкретнее, что за сложное условие?
правильнее было бы сказать "косвенное" условие, как например отсутствие какого-либо значения
Выглядит как пример с потолка. У человека есть чаты и сообщения. Зачем ему искать отсутствие какого либо значения. Нужны поиск по сообщениям конкретного юзера в конкретном чате или с корректным человеком. Индекс по отправителю, получателю и чату
чел спрашивал изначально как лучше сделать. вот по опыту могу сказать, что явные признаки хранить удобнее и проще в долгосрочной перспективе
"Индекс по отправителю, получателю и чату" составной?)
Ну так Я тоже из опыта говорю и выше пример из телеги прислали, где примерно то же самое. Явные признаки нужны, когда нет косвенных и потом будут проблемы когда явные признаки начнут конфликтовать с косвенными
Можно и составной, зависит от конкретной системы
в примере из телеги явно указан тип чата - private
Потому что личные сообщения приходят в личном чате, там этот признак скорее всего для того, чтобы показать что этот чат можно или нельзя найти в поиске и можно ли в него вступить, а не признак того что это чат между 2-мя людьми. Я бы не стал для личных сообщений делать отдельный чат, потому что при каком нибудь сбое заполучив чат ид можно будет в личные переписки других людей заломиться как в паблик. Это не явный признак, что это чат между двумя людьми. Скорее всего так ещё сделано, чтобы можно было в личные переписки добавлять всякие штуки, которые и в обычных общих чатах используются. То есть это особенности именно телеги
в схеме признак как раз того, что это приватный чат, причем изначально не сказано, что там только два человека, и вообще это пример транспортного уровня апи, а не схемы хранения
Так вот именно, приватный чат, а человек выше интересовался личными сообщениями, меду 2 людьми, а не приватными чатами. А раз у него chat.id уже есть у всех сообщений, то вариант с телегой подходит лучше, Я же не знал что у него это поле обязательное, поэтому предложил сделать, как сделал бы сам, добавить поле с получателем. И тогда исчезает ненужная сущность чата из личных сообщений
Обсуждают сегодня