git ssb

16+

Dominic / patchbay



Tree: d45e0ad160051c97802cf3566af0ab967fcc0c0e

Files: d45e0ad160051c97802cf3566af0ab967fcc0c0e / modules_basic / relationships.js

1119 bytesRaw
1var pull = require('pull-stream')
2
3function makeQuery (a, b) {
4 return {"$filter": {
5 value: {
6 author: a,
7 content: {
8 type: 'contact',
9 contact: b,
10 following: true
11 }
12 },
13 }}
14}
15
16
17exports.needs = { sbot_query: 'first' }
18
19exports.gives = {
20 follows: true,
21 followers: true,
22 follower_of: true
23}
24
25exports.create = function (api) {
26
27 return {
28 follows: function (id, cb) {
29 return api.sbot_query({query: [
30 makeQuery(id, {$prefix:"@"}),
31 {"$map": ['value', 'content', 'contact']}
32 ]})
33 },
34
35 followers: function (id) {
36 return api.sbot_query({query: [
37 makeQuery({$prefix:"@"}, id),
38 {"$map": ['value', 'author']}
39 ]})
40 },
41
42 follower_of: function (source, dest, cb) {
43 pull(
44 api.sbot_query({query: [
45 makeQuery(source, dest),
46 {$map: ['value', 'content', 'following']}
47 ]}),
48 pull.collect(function (err, ary) {
49 if(err) return cb(err)
50 else cb(null, ary.pop()) //will be true, or undefined/false
51 })
52 )
53 }
54 }
55
56}
57
58

Built with git-ssb-web