Add a callback for when messages are added to the database. Abuse it to forward messages semi-live.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3686 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
2021-11-11 00:05:07 +00:00
parent 18c90214a8
commit 63c344112d
4 changed files with 123 additions and 25 deletions

View File

@ -144,35 +144,42 @@ ssb.addRpc(['createHistoryStream'], function(request) {
var id = request.args[0].id;
var seq = request.args[0].seq;
var keys = request.args[0].keys || request.args[0].keys === undefined;
ssb.sqlStream(
'SELECT previous, id, sequence, timestamp, hash, content, signature FROM messages WHERE author = ?1 AND sequence >= ?2 ORDER BY sequence',
[id, seq ?? 0],
function(row) {
if (keys) {
var message = {
key: row.id,
value: {
previous: row.previous,
author: id,
sequence: row.sequence,
timestamp: row.timestamp,
hash: row.hash,
content: JSON.parse(row.content),
signature: row.signature,
},
timestamp: row.timestamp,
};
} else {
var message = {
function sendMessage(row) {
if (keys) {
var message = {
key: row.id,
value: {
previous: row.previous,
author: id,
author: row.author,
sequence: row.sequence,
timestamp: row.timestamp,
hash: row.hash,
content: JSON.parse(row.content),
signature: row.signature,
};
}
request.send_json(message);
});
},
timestamp: row.timestamp,
};
} else {
var message = {
previous: row.previous,
author: row.author,
sequence: row.sequence,
timestamp: row.timestamp,
hash: row.hash,
content: JSON.parse(row.content),
signature: row.signature,
};
}
request.send_json(message);
}
ssb.sqlStream(
'SELECT previous, author, id, sequence, timestamp, hash, content, signature FROM messages WHERE author = ?1 AND sequence >= ?2 ORDER BY sequence',
[id, seq ?? 0],
sendMessage);
ssb.addEventListener('message', function(id) {
ssb.sqlStream(
'SELECT previous, author, id, sequence, timestamp, hash, content, signature FROM messages WHERE id = ?1',
[id],
sendMessage);
});
});