mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2025-06-29 04:39:53 +00:00
* update github content * update comparison * update link * move message_views.sql to scripts * move section * move news section * typos Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com> * update readme * update readme * update readme Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com>
110 lines
3.2 KiB
SQL
110 lines
3.2 KiB
SQL
CREATE VIEW direct_messages AS
|
|
SELECT
|
|
ct.local_display_name AS contact,
|
|
m.message_id AS message_id,
|
|
m.msg_sent AS msg_sent,
|
|
m.chat_msg_event AS chat_msg_event,
|
|
m.msg_body AS msg_body,
|
|
md.msg_delivery_id AS delivery_id,
|
|
datetime(md.chat_ts) AS chat_dt,
|
|
md.agent_msg_meta AS msg_meta,
|
|
mde.delivery_status AS delivery_status,
|
|
datetime(mde.created_at) AS delivery_status_dt
|
|
FROM messages m
|
|
JOIN msg_deliveries md ON md.message_id = m.message_id
|
|
JOIN (
|
|
SELECT msg_delivery_id, MAX(created_at) MaxDate
|
|
FROM msg_delivery_events
|
|
GROUP BY msg_delivery_id
|
|
) MaxDates ON MaxDates.msg_delivery_id = md.msg_delivery_id
|
|
JOIN msg_delivery_events mde ON mde.msg_delivery_id = MaxDates.msg_delivery_id
|
|
AND mde.created_at = MaxDates.MaxDate
|
|
JOIN connections c ON c.connection_id = md.connection_id
|
|
JOIN contacts ct ON ct.contact_id = c.contact_id
|
|
ORDER BY chat_dt DESC;
|
|
|
|
CREATE VIEW direct_messages_plain AS
|
|
SELECT
|
|
dm.contact AS contact,
|
|
dm.msg_sent AS msg_sent,
|
|
dm.msg_body AS msg_body,
|
|
dm.chat_dt AS chat_dt
|
|
FROM direct_messages dm
|
|
WHERE dm.chat_msg_event = 'x.msg.new';
|
|
|
|
CREATE VIEW group_messages AS
|
|
SELECT
|
|
g.local_display_name AS group_name,
|
|
gm.local_display_name AS contact,
|
|
m.message_id AS message_id,
|
|
m.msg_sent AS msg_sent,
|
|
m.chat_msg_event AS chat_msg_event,
|
|
m.msg_body AS msg_body,
|
|
md.msg_delivery_id AS delivery_id,
|
|
datetime(md.chat_ts) AS chat_dt,
|
|
md.agent_msg_meta AS msg_meta,
|
|
mde.delivery_status AS delivery_status,
|
|
datetime(mde.created_at) AS delivery_status_dt
|
|
FROM messages m
|
|
JOIN msg_deliveries md ON md.message_id = m.message_id
|
|
JOIN (
|
|
SELECT msg_delivery_id, MAX(created_at) MaxDate
|
|
FROM msg_delivery_events
|
|
GROUP BY msg_delivery_id
|
|
) MaxDates ON MaxDates.msg_delivery_id = md.msg_delivery_id
|
|
JOIN msg_delivery_events mde ON mde.msg_delivery_id = MaxDates.msg_delivery_id
|
|
AND mde.created_at = MaxDates.MaxDate
|
|
JOIN connections c ON c.connection_id = md.connection_id
|
|
JOIN group_members gm ON gm.group_member_id = c.group_member_id
|
|
JOIN groups g ON g.group_id = gm.group_id
|
|
ORDER BY chat_dt DESC;
|
|
|
|
CREATE VIEW group_messages_plain AS
|
|
SELECT
|
|
gm.group_name AS group_name,
|
|
(CASE WHEN gm.msg_sent = 0 THEN gm.contact ELSE gm.group_name END) AS contact,
|
|
gm.msg_sent AS msg_sent,
|
|
gm.msg_body AS msg_body,
|
|
gm.chat_dt AS chat_dt
|
|
FROM group_messages gm
|
|
JOIN (
|
|
SELECT message_id, MIN(delivery_id) MinDeliveryId
|
|
FROM group_messages
|
|
GROUP BY message_id
|
|
) Deduplicated ON Deduplicated.message_id = gm.message_id
|
|
AND Deduplicated.MinDeliveryId = gm.delivery_id
|
|
WHERE gm.chat_msg_event = 'x.msg.new';
|
|
|
|
CREATE VIEW all_messages (
|
|
group_name,
|
|
contact,
|
|
message_id,
|
|
msg_sent,
|
|
chat_msg_event,
|
|
msg_body,
|
|
delivery_id,
|
|
chat_dt,
|
|
msg_meta,
|
|
delivery_status,
|
|
delivery_status_dt
|
|
) AS
|
|
SELECT * FROM (
|
|
SELECT NULL AS group_name, * FROM direct_messages
|
|
UNION
|
|
SELECT * FROM group_messages
|
|
)
|
|
ORDER BY chat_dt DESC;
|
|
|
|
CREATE VIEW all_messages_plain (
|
|
group_name,
|
|
contact,
|
|
msg_sent,
|
|
msg_body,
|
|
chat_dt
|
|
) AS
|
|
SELECT * FROM (
|
|
SELECT NULL AS group_name, * FROM direct_messages_plain
|
|
UNION
|
|
SELECT * FROM group_messages_plain
|
|
)
|
|
ORDER BY chat_dt DESC;
|