rec.hash instead of rec.id

This commit is contained in:
Andre Staltz 2023-04-09 11:05:09 +03:00
parent 79ebb033fe
commit 2696f44d1a
5 changed files with 22 additions and 24 deletions

View File

@ -33,7 +33,7 @@ function decrypt(rec, peer, config) {
const msgDecrypted = FeedV1.fromPlaintextBuffer(plaintextBuf, msgEncrypted)
return {
id: rec.id,
hash: rec.hash,
msg: msgDecrypted,
received: rec.received,
misc: {
@ -47,7 +47,7 @@ function decrypt(rec, peer, config) {
function reEncrypt(rec) {
return {
id: rec.id,
hash: rec.hash,
msg: { ...rec.msg, content: rec.misc.originalContent },
received: rec.received,
...(rec.misc.size

View File

@ -13,7 +13,7 @@ const { decrypt } = require('./encryption')
/**
* @typedef {Object} RecDeleted
* @property {never} id
* @property {never} hash
* @property {never} msg
* @property {never} received
* @property {Object} misc
@ -24,7 +24,7 @@ const { decrypt } = require('./encryption')
/**
* @typedef {Object} RecPresent
* @property {string} id
* @property {string} hash
* @property {Msg} msg
* @property {number} received
* @property {Object} misc
@ -51,8 +51,7 @@ exports.init = function initDB(peer, config) {
const msgsPerFeed = {
_mapAll: new Map(), // who => Set<MsgHash>
_byHash: new Map(), // msgId => Msg // TODO: optimize space usage of this??
update(msg, msgId) {
const msgHash = FeedV1.getMsgHash(msgId ?? msg)
update(msg, msgHash) {
const feedId = FeedV1.getFeedId(msg)
const setAll = this._mapAll.get(feedId) ?? new Set()
setAll.add(msgHash)
@ -137,13 +136,12 @@ exports.init = function initDB(peer, config) {
)
})
function logAppend(id, msg, cb) {
function logAppend(hash, msg, cb) {
const rec = {
id,
hash,
msg,
received: Date.now(),
}
if (isOOO) rec.ooo = isOOO
log.append(rec, (err, newOffset) => {
if (err) return cb(new Error('logAppend failed', { cause: err }))
const offset = newOffset // latestOffset
@ -188,10 +186,10 @@ exports.init = function initDB(peer, config) {
function validationCB(err) {
// prettier-ignore
if (err) return cb(new Error('add() failed validation for feed format v1', {cause: err}))
const msgId = FeedV1.getMsgId(msg)
msgsPerFeed.update(msg, msgId)
const msgHash = FeedV1.getMsgHash(msg)
msgsPerFeed.update(msg, msgHash)
logAppend(msgId, msg, logAppendCB)
logAppend(msgHash, msg, logAppendCB)
}
function logAppendCB(err, rec) {
@ -257,11 +255,11 @@ exports.init = function initDB(peer, config) {
} catch (err) {
return cb(new Error('create() failed', { cause: err }))
}
const msgId = FeedV1.getMsgId(msg)
msgsPerFeed.update(msg, msgId)
const msgHash = FeedV1.getMsgHash(msg)
msgsPerFeed.update(msg, msgHash)
// Encode the native message and append it to the log:
logAppend(msgId, msg, (err, rec) => {
logAppend(msgHash, msg, (err, rec) => {
// prettier-ignore
if (err) return cb(new Error('create() failed to append the log', { cause: err }))
onRecordAdded.set(rec)
@ -298,8 +296,8 @@ exports.init = function initDB(peer, config) {
for (let i = 0; i < recs.length; i++) {
const rec = recs[i]
if (!rec) continue
if (isUri && rec.id === msgId) return rec
else if (!isUri && rec.id.endsWith(msgId)) return rec
if (isUri && msgId.endsWith(rec.hash)) return rec
else if (!isUri && rec.hash.endsWith(msgId)) return rec
}
return null
}

View File

@ -75,7 +75,7 @@ test('create() encrypted with box', async (t) => {
t.equal(typeof recEncrypted.msg.content, 'string')
t.true(recEncrypted.msg.content.endsWith('.box'), '.box')
const msgDecrypted = peer.db.get(recEncrypted.id)
const msgDecrypted = peer.db.get(recEncrypted.hash)
t.equals(msgDecrypted.content.text, 'I am chewing food')
})

View File

@ -20,13 +20,13 @@ test('del', async (t) => {
await peer.db.loaded()
const msgIDs = []
const msgHashes = []
for (let i = 0; i < 5; i++) {
const rec = await p(peer.db.create)({
type: 'post',
content: { text: 'm' + i },
})
msgIDs.push(rec.id)
msgHashes.push(rec.hash)
}
const before = []
@ -36,7 +36,7 @@ test('del', async (t) => {
t.deepEqual(before, ['m0', 'm1', 'm2', 'm3', 'm4'], 'msgs before the delete')
await p(peer.db.del)(msgIDs[2])
await p(peer.db.del)(msgHashes[2])
const after = []
for (const msg of peer.db.msgs()) {

View File

@ -20,17 +20,17 @@ test('create some msgs, close, re-open', async (t) => {
await peer.db.loaded()
t.pass('opened db')
const msgIDs = []
const msgHashes = []
for (let i = 0; i < 6; i++) {
const rec = await p(peer.db.create)({
type: 'post',
content: { text: 'hello ' + i },
})
msgIDs.push(rec.id)
msgHashes.push(rec.hash)
}
t.pass('created some msgs')
await p(peer.db.del)(msgIDs[2])
await p(peer.db.del)(msgHashes[2])
t.pass('deleted the 3rd msg')
await p(peer.close)(true)