ssb: Faster *and* correct. I think.

This commit is contained in:
2025-03-30 13:18:16 -04:00
parent ea60b165da
commit 8a66e74074
2 changed files with 13 additions and 10 deletions

View File

@ -165,20 +165,21 @@ class TfTabNewsFeedElement extends LitElement {
all_news AS (
SELECT messages.rowid, messages.id, messages.previous, messages.author, messages.sequence, messages.timestamp, messages.hash, json(messages.content) AS content, messages.signature
FROM messages
JOIN json_each(?) AS following ON messages.author = following.value
WHERE timestamp >= 0 AND timestamp < ?3),
JOIN json_each(?) AS following ON messages.author = following.value),
news AS (
SELECT * FROM all_news
WHERE (?2 IS NULL OR all_news.timestamp >= ?2) AND all_news.timestamp < ?3
WHERE all_news.timestamp < ?3 AND (?2 IS NULL OR all_news.timestamp >= ?2)
ORDER BY timestamp DESC LIMIT 20
),
refs AS (
SELECT refs_out.ref AS ref FROM messages_refs refs_out JOIN news ON refs_out.message = news.id
UNION
SELECT refs_in.message AS ref FROM messages_refs refs_in JOIN news ON refs_in.ref = news.id
)
SELECT TRUE AS is_primary, news.* FROM news
UNION
SELECT FALSE AS is_primary, messages.rowid, messages.id, messages.previous, messages.author, messages.sequence, messages.timestamp, messages.hash, json(messages.content) AS content, messages.signature
FROM news
JOIN messages_refs refs_in ON news.id = refs_in.ref
JOIN messages_refs refs_out ON news.id = refs_out.message
JOIN messages ON (messages.id = refs_out.ref OR messages.id = refs_in.message)
SELECT FALSE AS is_primary, all_news.rowid, all_news.id, all_news.previous, all_news.author, all_news.sequence, all_news.timestamp, all_news.hash, json(all_news.content) AS content, all_news.signature
FROM all_news JOIN refs ON all_news.id = refs.ref
`,
[JSON.stringify(this.following), start_time, end_time]
);