Возвращает список групповых чатов, который вы видите в любом приложении чата.
В примере показаны прямые сообщения, но технически более 3 пользователей могут присоединиться к каналу чата.Предположим, что нет пользовательской таблицы.
Я хочу иметь возможность передать some_user и "получить все каналы, в которых участвует some_user, с членами канала, которые не являются some_user (получателями), и последним сообщением, отправленным наканал для предварительного просмотра, упорядоченный по последнему сообщению create_at desc ".
channel
---
id(pk)
channel_user
---
channel_id(fk) | user_id
message
---
id(pk) | channel_id(fk) | sender_id | text | created_at
channel
---
1
2
channel_user
---
1 | "Elon"
1 | "Mark"
2 | "Steve"
2 | "Elon"
message
---
3 | 1 | "Elon" | "AI will destroy us all" | timestamp(late)
4 | 1 | "Mark" | "No it won't" | timestamp(later)
5 | 2 | "Steve"| "Sup Elon" | timestamp(latest)
Перейдите к пользователю" Elon "и получите что-то вроде:
channel_id | recipient(s) | last_message | last_message_sender | last_message_created_at
---
2 | "Steve" or ["Steve",...] | "Sup Elon" | "Steve" | timestamp(latest)
1 | "Mark" or ["Mark",...] | "No it won't" | "Mark" | timestamp(later)