mirror of https://codeberg.org/pzp/pzp-db.git
rec.hash instead of rec.id
This commit is contained in:
parent
79ebb033fe
commit
2696f44d1a
|
@ -33,7 +33,7 @@ function decrypt(rec, peer, config) {
|
||||||
const msgDecrypted = FeedV1.fromPlaintextBuffer(plaintextBuf, msgEncrypted)
|
const msgDecrypted = FeedV1.fromPlaintextBuffer(plaintextBuf, msgEncrypted)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: rec.id,
|
hash: rec.hash,
|
||||||
msg: msgDecrypted,
|
msg: msgDecrypted,
|
||||||
received: rec.received,
|
received: rec.received,
|
||||||
misc: {
|
misc: {
|
||||||
|
@ -47,7 +47,7 @@ function decrypt(rec, peer, config) {
|
||||||
|
|
||||||
function reEncrypt(rec) {
|
function reEncrypt(rec) {
|
||||||
return {
|
return {
|
||||||
id: rec.id,
|
hash: rec.hash,
|
||||||
msg: { ...rec.msg, content: rec.misc.originalContent },
|
msg: { ...rec.msg, content: rec.misc.originalContent },
|
||||||
received: rec.received,
|
received: rec.received,
|
||||||
...(rec.misc.size
|
...(rec.misc.size
|
||||||
|
|
|
@ -13,7 +13,7 @@ const { decrypt } = require('./encryption')
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} RecDeleted
|
* @typedef {Object} RecDeleted
|
||||||
* @property {never} id
|
* @property {never} hash
|
||||||
* @property {never} msg
|
* @property {never} msg
|
||||||
* @property {never} received
|
* @property {never} received
|
||||||
* @property {Object} misc
|
* @property {Object} misc
|
||||||
|
@ -24,7 +24,7 @@ const { decrypt } = require('./encryption')
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} RecPresent
|
* @typedef {Object} RecPresent
|
||||||
* @property {string} id
|
* @property {string} hash
|
||||||
* @property {Msg} msg
|
* @property {Msg} msg
|
||||||
* @property {number} received
|
* @property {number} received
|
||||||
* @property {Object} misc
|
* @property {Object} misc
|
||||||
|
@ -51,8 +51,7 @@ exports.init = function initDB(peer, config) {
|
||||||
const msgsPerFeed = {
|
const msgsPerFeed = {
|
||||||
_mapAll: new Map(), // who => Set<MsgHash>
|
_mapAll: new Map(), // who => Set<MsgHash>
|
||||||
_byHash: new Map(), // msgId => Msg // TODO: optimize space usage of this??
|
_byHash: new Map(), // msgId => Msg // TODO: optimize space usage of this??
|
||||||
update(msg, msgId) {
|
update(msg, msgHash) {
|
||||||
const msgHash = FeedV1.getMsgHash(msgId ?? msg)
|
|
||||||
const feedId = FeedV1.getFeedId(msg)
|
const feedId = FeedV1.getFeedId(msg)
|
||||||
const setAll = this._mapAll.get(feedId) ?? new Set()
|
const setAll = this._mapAll.get(feedId) ?? new Set()
|
||||||
setAll.add(msgHash)
|
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 = {
|
const rec = {
|
||||||
id,
|
hash,
|
||||||
msg,
|
msg,
|
||||||
received: Date.now(),
|
received: Date.now(),
|
||||||
}
|
}
|
||||||
if (isOOO) rec.ooo = isOOO
|
|
||||||
log.append(rec, (err, newOffset) => {
|
log.append(rec, (err, newOffset) => {
|
||||||
if (err) return cb(new Error('logAppend failed', { cause: err }))
|
if (err) return cb(new Error('logAppend failed', { cause: err }))
|
||||||
const offset = newOffset // latestOffset
|
const offset = newOffset // latestOffset
|
||||||
|
@ -188,10 +186,10 @@ exports.init = function initDB(peer, config) {
|
||||||
function validationCB(err) {
|
function validationCB(err) {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
if (err) return cb(new Error('add() failed validation for feed format v1', {cause: err}))
|
if (err) return cb(new Error('add() failed validation for feed format v1', {cause: err}))
|
||||||
const msgId = FeedV1.getMsgId(msg)
|
const msgHash = FeedV1.getMsgHash(msg)
|
||||||
msgsPerFeed.update(msg, msgId)
|
msgsPerFeed.update(msg, msgHash)
|
||||||
|
|
||||||
logAppend(msgId, msg, logAppendCB)
|
logAppend(msgHash, msg, logAppendCB)
|
||||||
}
|
}
|
||||||
|
|
||||||
function logAppendCB(err, rec) {
|
function logAppendCB(err, rec) {
|
||||||
|
@ -257,11 +255,11 @@ exports.init = function initDB(peer, config) {
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return cb(new Error('create() failed', { cause: err }))
|
return cb(new Error('create() failed', { cause: err }))
|
||||||
}
|
}
|
||||||
const msgId = FeedV1.getMsgId(msg)
|
const msgHash = FeedV1.getMsgHash(msg)
|
||||||
msgsPerFeed.update(msg, msgId)
|
msgsPerFeed.update(msg, msgHash)
|
||||||
|
|
||||||
// Encode the native message and append it to the log:
|
// Encode the native message and append it to the log:
|
||||||
logAppend(msgId, msg, (err, rec) => {
|
logAppend(msgHash, msg, (err, rec) => {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
if (err) return cb(new Error('create() failed to append the log', { cause: err }))
|
if (err) return cb(new Error('create() failed to append the log', { cause: err }))
|
||||||
onRecordAdded.set(rec)
|
onRecordAdded.set(rec)
|
||||||
|
@ -298,8 +296,8 @@ exports.init = function initDB(peer, config) {
|
||||||
for (let i = 0; i < recs.length; i++) {
|
for (let i = 0; i < recs.length; i++) {
|
||||||
const rec = recs[i]
|
const rec = recs[i]
|
||||||
if (!rec) continue
|
if (!rec) continue
|
||||||
if (isUri && rec.id === msgId) return rec
|
if (isUri && msgId.endsWith(rec.hash)) return rec
|
||||||
else if (!isUri && rec.id.endsWith(msgId)) return rec
|
else if (!isUri && rec.hash.endsWith(msgId)) return rec
|
||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@ test('create() encrypted with box', async (t) => {
|
||||||
t.equal(typeof recEncrypted.msg.content, 'string')
|
t.equal(typeof recEncrypted.msg.content, 'string')
|
||||||
t.true(recEncrypted.msg.content.endsWith('.box'), '.box')
|
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')
|
t.equals(msgDecrypted.content.text, 'I am chewing food')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -20,13 +20,13 @@ test('del', async (t) => {
|
||||||
|
|
||||||
await peer.db.loaded()
|
await peer.db.loaded()
|
||||||
|
|
||||||
const msgIDs = []
|
const msgHashes = []
|
||||||
for (let i = 0; i < 5; i++) {
|
for (let i = 0; i < 5; i++) {
|
||||||
const rec = await p(peer.db.create)({
|
const rec = await p(peer.db.create)({
|
||||||
type: 'post',
|
type: 'post',
|
||||||
content: { text: 'm' + i },
|
content: { text: 'm' + i },
|
||||||
})
|
})
|
||||||
msgIDs.push(rec.id)
|
msgHashes.push(rec.hash)
|
||||||
}
|
}
|
||||||
|
|
||||||
const before = []
|
const before = []
|
||||||
|
@ -36,7 +36,7 @@ test('del', async (t) => {
|
||||||
|
|
||||||
t.deepEqual(before, ['m0', 'm1', 'm2', 'm3', 'm4'], 'msgs before the delete')
|
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 = []
|
const after = []
|
||||||
for (const msg of peer.db.msgs()) {
|
for (const msg of peer.db.msgs()) {
|
||||||
|
|
|
@ -20,17 +20,17 @@ test('create some msgs, close, re-open', async (t) => {
|
||||||
await peer.db.loaded()
|
await peer.db.loaded()
|
||||||
t.pass('opened db')
|
t.pass('opened db')
|
||||||
|
|
||||||
const msgIDs = []
|
const msgHashes = []
|
||||||
for (let i = 0; i < 6; i++) {
|
for (let i = 0; i < 6; i++) {
|
||||||
const rec = await p(peer.db.create)({
|
const rec = await p(peer.db.create)({
|
||||||
type: 'post',
|
type: 'post',
|
||||||
content: { text: 'hello ' + i },
|
content: { text: 'hello ' + i },
|
||||||
})
|
})
|
||||||
msgIDs.push(rec.id)
|
msgHashes.push(rec.hash)
|
||||||
}
|
}
|
||||||
t.pass('created some msgs')
|
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')
|
t.pass('deleted the 3rd msg')
|
||||||
|
|
||||||
await p(peer.close)(true)
|
await p(peer.close)(true)
|
||||||
|
|
Loading…
Reference in New Issue