mirror of https://codeberg.org/pzp/pzp-db.git
Tangle.precedes(a,b) API
This commit is contained in:
parent
ba0a78b277
commit
65622ac961
|
@ -222,6 +222,23 @@ class Tangle {
|
|||
return path
|
||||
}
|
||||
|
||||
precedes(a, b) {
|
||||
if (!this.#rootMsg) {
|
||||
console.warn('Tangle is missing root message')
|
||||
return false
|
||||
}
|
||||
if (a === b) return false
|
||||
if (b === this.#rootHash) return false
|
||||
let toCheck = [b]
|
||||
while (toCheck.length > 0) {
|
||||
const prev = this.#prev.get(toCheck.shift())
|
||||
if (!prev) continue
|
||||
if (prev.includes(a)) return true
|
||||
toCheck.push(...prev)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
size() {
|
||||
return this.#depth.size
|
||||
}
|
||||
|
|
|
@ -191,6 +191,7 @@ exports.init = function initDB(peer, config) {
|
|||
const msgHash = FeedV1.getMsgHash(msg)
|
||||
|
||||
// TODO: optimize this. Perhaps have a Map() of msgHash -> record
|
||||
// Or even better, a bloom filter. If you just want to answer no/perhaps.
|
||||
let rec
|
||||
if ((rec = getRecord(msgHash))) return cb(null, rec)
|
||||
|
||||
|
|
|
@ -125,6 +125,28 @@ test('Tangle.topoSort', (t) => {
|
|||
t.end()
|
||||
})
|
||||
|
||||
test('Tangle.precedes', (t) => {
|
||||
t.true(tangle.precedes(rootPost, reply1Lo), 'rootPost precedes reply1Lo')
|
||||
t.true(tangle.precedes(rootPost, reply1Hi), 'rootPost precedes reply1Hi')
|
||||
t.false(
|
||||
tangle.precedes(reply1Hi, rootPost),
|
||||
'reply1Hi doesnt precede rootPost'
|
||||
)
|
||||
t.false(
|
||||
tangle.precedes(reply1Lo, reply1Hi),
|
||||
'reply1Lo doesnt precede reply1Hi'
|
||||
)
|
||||
t.false(tangle.precedes(reply1Lo, reply1Lo), 'reply1Lo doesnt precede itself')
|
||||
t.true(tangle.precedes(reply1Lo, reply3Hi), 'reply1Lo precedes reply3Hi')
|
||||
t.true(tangle.precedes(reply1Hi, reply2A), 'reply1Hi precedes reply2A')
|
||||
t.false(
|
||||
tangle.precedes(reply3Lo, reply1Hi),
|
||||
'reply3Lo doesnt precede reply1Hi'
|
||||
)
|
||||
|
||||
t.end()
|
||||
})
|
||||
|
||||
test('Tangle.getTips', (t) => {
|
||||
const tips = tangle.getTips()
|
||||
|
||||
|
|
Loading…
Reference in New Issue