|
|
|
@ -102,8 +102,10 @@ module.exports = {
|
|
|
|
|
getMessageCount,
|
|
|
|
|
saveMessage,
|
|
|
|
|
cleanSeenMessages,
|
|
|
|
|
cleanLastHashes,
|
|
|
|
|
saveSeenMessageHashes,
|
|
|
|
|
saveSeenMessageHash,
|
|
|
|
|
updateLastHash,
|
|
|
|
|
saveMessages,
|
|
|
|
|
removeMessage,
|
|
|
|
|
getUnreadByConversation,
|
|
|
|
@ -114,6 +116,7 @@ module.exports = {
|
|
|
|
|
getAllUnsentMessages,
|
|
|
|
|
getMessagesBySentAt,
|
|
|
|
|
getSeenMessagesByHashList,
|
|
|
|
|
getLastHashBySnode,
|
|
|
|
|
getExpiredMessages,
|
|
|
|
|
getOutgoingWithoutExpiresAt,
|
|
|
|
|
getNextExpiringMessage,
|
|
|
|
@ -421,6 +424,14 @@ async function updateToSchemaVersion6(currentVersion, instance) {
|
|
|
|
|
ADD COLUMN friendRequestStatus INTEGER;`
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
await instance.run(
|
|
|
|
|
`CREATE TABLE lastHashes(
|
|
|
|
|
snode STRING PRIMARY KEY,
|
|
|
|
|
hash STRING,
|
|
|
|
|
expiresAt INTEGER
|
|
|
|
|
);`
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
await instance.run(
|
|
|
|
|
`CREATE TABLE seenMessages(
|
|
|
|
|
hash STRING PRIMARY KEY,
|
|
|
|
@ -1556,6 +1567,27 @@ async function saveSeenMessageHashes(arrayOfHashes) {
|
|
|
|
|
await promise;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function updateLastHash(data) {
|
|
|
|
|
const { snode, hash, expiresAt } = data;
|
|
|
|
|
|
|
|
|
|
await db.run(
|
|
|
|
|
`INSERT OR REPLACE INTO lastHashes (
|
|
|
|
|
snode,
|
|
|
|
|
hash,
|
|
|
|
|
expiresAt
|
|
|
|
|
) values (
|
|
|
|
|
$snode,
|
|
|
|
|
$hash,
|
|
|
|
|
$expiresAt
|
|
|
|
|
)`,
|
|
|
|
|
{
|
|
|
|
|
$snode: snode,
|
|
|
|
|
$hash: hash,
|
|
|
|
|
$expiresAt: expiresAt,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function saveSeenMessageHash(data) {
|
|
|
|
|
const { expiresAt, hash } = data;
|
|
|
|
|
await db.run(
|
|
|
|
@ -1573,6 +1605,12 @@ async function saveSeenMessageHash(data) {
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function cleanLastHashes() {
|
|
|
|
|
await db.run('DELETE FROM lastHashes WHERE expiresAt <= $now;', {
|
|
|
|
|
$now: Date.now(),
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function cleanSeenMessages() {
|
|
|
|
|
await db.run('DELETE FROM seenMessages WHERE expiresAt <= $now;', {
|
|
|
|
|
$now: Date.now(),
|
|
|
|
@ -1710,6 +1748,19 @@ async function getMessagesBySentAt(sentAt) {
|
|
|
|
|
return map(rows, row => jsonToObject(row.json));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function getLastHashBySnode(snode) {
|
|
|
|
|
const row = await db.get('SELECT * FROM lastHashes WHERE snode = $snode;', {
|
|
|
|
|
$snode: snode,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!row) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return row.lastHash;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function getSeenMessagesByHashList(hashes) {
|
|
|
|
|
const rows = await db.all(
|
|
|
|
|
`SELECT * FROM seenMessages WHERE hash IN ( ${hashes
|
|
|
|
|