Commit 3369e03e90e8b441a5c23b79c41b65724a98a39e
load names from mentions or from about messages
Dominic Tarr committed on 8/1/2016, 4:42:59 AMParent: c4b58ba4156a3f65f0661588e6d29049c8aff68c
Files changed
modules/names.js | changed |
modules/names.js | ||
---|---|---|
@@ -1,12 +1,15 @@ | ||
1 | 1 … | var pull = require('pull-stream') |
2 … | +var many = require('pull-many') | |
3 … | +var mfr = require('map-filter-reduce') | |
2 | 4 … | |
3 | 5 … | function all(stream, cb) { |
4 | 6 … | pull(stream, pull.collect(cb)) |
5 | 7 … | } |
6 | 8 … | |
7 | 9 … | var plugs = require('../plugs') |
8 | 10 … | var sbot_links2 = plugs.first(exports.sbot_links2 = []) |
11 … | +var sbot_query = plugs.first(exports.sbot_query = []) | |
9 | 12 … | |
10 | 13 … | /* |
11 | 14 … | filter(rel: ['mentions', prefix('@')]) | reduce(name: rel[1], value: count()) |
12 | 15 … | */ |
@@ -17,20 +20,44 @@ | ||
17 | 20 … | } |
18 | 21 … | } |
19 | 22 … | var map = { |
20 | 23 … | $map: { |
21 | - id: 'dest', name: ['rel', 1], ts: 'ts', | |
24 … | + name: ['rel', 1], | |
25 … | + id: 'dest', | |
26 … | + ts: 'ts', | |
22 | 27 … | } |
23 | 28 … | } |
24 | 29 … | |
25 | 30 … | var reduce = { |
26 | 31 … | $reduce: { |
27 | - id: "dest", | |
28 | - name: ["rel", 1], | |
32 … | + name: 'name', | |
33 … | + id: 'id', | |
29 | 34 … | rank: {$count: true} |
30 | 35 … | } |
31 | 36 … | } |
32 | 37 … | |
38 … | +var filter2 = { | |
39 … | + $filter: { | |
40 … | + value: { | |
41 … | + content: { | |
42 … | + type: "about", | |
43 … | + name: {"$prefix": ""}, | |
44 … | + about: {"$prefix": "@"} //better: match regexp. | |
45 … | + } | |
46 … | + } | |
47 … | + } | |
48 … | +} | |
49 … | + | |
50 … | +var map2 = { | |
51 … | + $map: { | |
52 … | + name: ["value", "content", "name"], | |
53 … | + id: ['value', 'content', 'about'], | |
54 … | + ts: "timestamp" | |
55 … | + } | |
56 … | +} | |
57 … | + | |
58 … | +//union with this query... | |
59 … | + | |
33 | 60 … | var names = [] |
34 | 61 … | function update(name) { |
35 | 62 … | var n = names.find(function (e) { |
36 | 63 … | return e.id == name.id && e.name == e.name |
@@ -45,23 +72,47 @@ | ||
45 | 72 … | } |
46 | 73 … | |
47 | 74 … | var ready = false, waiting = [] |
48 | 75 … | |
76 … | +var merge = { | |
77 … | + $reduce: { | |
78 … | + name: 'name', | |
79 … | + id: 'id', | |
80 … | + rank: {$sum: 'rank'}, | |
81 … | + ts: {$max: 'ts'} | |
82 … | + } | |
83 … | +} | |
84 … | + | |
85 … | +function add_at(stream) { | |
86 … | + return pull(stream, pull.map(function (e) { | |
87 … | + if(!/^@/.test(e.name)) e.name = '@'+e.name | |
88 … | + return e | |
89 … | + }) | |
90 … | + ) | |
91 … | +} | |
92 … | + | |
49 | 93 … | exports.connection_status = function (err) { |
50 | 94 … | if(!err) { |
51 | 95 … | pull( |
52 | - sbot_links2({query: [filter, reduce]}), | |
96 … | + many([ | |
97 … | + sbot_links2({query: [filter, map, reduce]}), | |
98 … | + add_at(sbot_query({query: [filter2, map2, reduce]})) | |
99 … | + ]), | |
100 … | + mfr.reduce(merge), | |
53 | 101 … | pull.collect(function (err, ary) { |
54 | - console.log(err, ary) | |
55 | 102 … | if(!err) { |
56 | 103 … | names = ary |
57 | 104 … | ready = true |
58 | 105 … | while(waiting.length) waiting.shift()() |
59 | 106 … | } |
60 | 107 … | }) |
61 | 108 … | ) |
62 | 109 … | |
63 | - pull(sbot_links2({query: [filter, map], old: false}), pull.drain(update)) | |
110 … | + pull(many([ | |
111 … | + sbot_links2({query: [filter, map], old: false}), | |
112 … | + add_at(sbot_query({query: [filter2, map2], old: false})) | |
113 … | + ]), | |
114 … | + pull.drain(update)) | |
64 | 115 … | } |
65 | 116 … | } |
66 | 117 … | |
67 | 118 … | function async(fn) { |
@@ -84,4 +135,8 @@ | ||
84 | 135 … | var rx = new RegExp('^'+name) |
85 | 136 … | return rank(names.filter(function (e) { return rx.test(e.name) })) |
86 | 137 … | }) |
87 | 138 … | |
139 … | + | |
140 … | + | |
141 … | + | |
142 … | + |
Built with git-ssb-web