Better tags query.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4339 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
parent
a4acee4939
commit
5decdf3afa
@ -256,13 +256,22 @@ class TfElement extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async load_recent_tags() {
|
async load_recent_tags() {
|
||||||
|
let start = new Date();
|
||||||
this.tags = await tfrpc.rpc.query(`
|
this.tags = await tfrpc.rpc.query(`
|
||||||
WITH recent AS (SELECT '#' || json_extract(content, '$.channel') AS tag
|
WITH
|
||||||
FROM messages
|
recent AS (SELECT content FROM messages
|
||||||
WHERE json_extract(content, '$.channel') IS NOT NULL
|
WHERE messages.timestamp > ? AND json_extract(content, '$.type') = 'post'
|
||||||
ORDER BY timestamp DESC LIMIT 100)
|
ORDER BY timestamp DESC LIMIT 1024),
|
||||||
SELECT tag, COUNT(*) AS count FROM recent GROUP BY tag ORDER BY count DESC LIMIT 10
|
recent_channels AS (SELECT '#' || json_extract(content, '$.channel') AS tag
|
||||||
`, []);
|
FROM recent
|
||||||
|
WHERE json_extract(content, '$.channel') IS NOT NULL),
|
||||||
|
recent_mentions AS (SELECT json_extract(mention.value, '$.link') AS tag
|
||||||
|
FROM recent, json_each(recent.content, '$.mentions') AS mention
|
||||||
|
WHERE json_valid(mention.value) AND tag LIKE '#%'),
|
||||||
|
combined AS (SELECT tag FROM recent_channels UNION ALL SELECT tag FROM recent_mentions)
|
||||||
|
SELECT tag, COUNT(*) AS count FROM combined GROUP BY tag ORDER BY count DESC LIMIT 10
|
||||||
|
`, [new Date() - 7 * 24 * 60 * 60 * 1000]);
|
||||||
|
console.log('tags took', (new Date() - start) / 1000.0, 'seconds');
|
||||||
}
|
}
|
||||||
|
|
||||||
async load() {
|
async load() {
|
||||||
|
Loading…
Reference in New Issue
Block a user