|
6 | 6 | */ |
7 | 7 | import { newID, isValidID, db } from '../database/index.js' |
8 | 8 | import utils from '../utils.js' |
9 | | -import { createExpressError, getAgentClaim, parseDocumentID } from './utils.js' |
| 9 | +import { createExpressError, getAgentClaim, parseDocumentID, getAllVersions, getAllDescendants } from './utils.js' |
10 | 10 |
|
11 | 11 | /** |
12 | 12 | * Mark an object as deleted in the database. |
@@ -218,48 +218,6 @@ async function newTreePrime(obj) { |
218 | 218 | return true |
219 | 219 | } |
220 | 220 |
|
221 | | -async function getAllVersions(obj) { |
222 | | - let ls_versions |
223 | | - let primeID = obj?.__rerum.history.prime |
224 | | - let rootObj |
225 | | - if (primeID === "root") { |
226 | | - rootObj = JSON.parse(JSON.stringify(obj)) |
227 | | - } else if (primeID) { |
228 | | - //Use _id for indexed query performance instead of @id |
229 | | - const primeHexId = parseDocumentID(primeID) |
230 | | - rootObj = await db.findOne({"$or":[{"_id": primeHexId}, {"__rerum.slug": primeHexId}]}) |
231 | | - if (!rootObj) { |
232 | | - throw new Error(`Root object with id '${primeID}' not found in database`) |
233 | | - } |
234 | | - } else { |
235 | | - //primeID is undefined or null, cannot proceed |
236 | | - throw new Error("Object has no valid history.prime value") |
237 | | - } |
238 | | - ls_versions = await db.find({ "__rerum.history.prime": rootObj['@id'] }).toArray() |
239 | | - ls_versions.unshift(rootObj) |
240 | | - return ls_versions |
241 | | -} |
242 | | - |
243 | | -function getAllDescendants(ls_versions, keyObj, discoveredDescendants) { |
244 | | - let nextIDarr = [] |
245 | | - if (keyObj.__rerum.history.next.length === 0) { |
246 | | - //essentially, do nothing. This branch is done. |
247 | | - } |
248 | | - else { |
249 | | - nextIDarr = keyObj.__rerum.history.next |
250 | | - } |
251 | | - for (let nextID of nextIDarr) { |
252 | | - for (let v of ls_versions) { |
253 | | - if (v["@id"] === nextID) { |
254 | | - discoveredDescendants.push(v) |
255 | | - getAllDescendants(ls_versions, v, discoveredDescendants) |
256 | | - break |
257 | | - } |
258 | | - } |
259 | | - } |
260 | | - return discoveredDescendants |
261 | | -} |
262 | | - |
263 | 221 | export { |
264 | 222 | deleteObj |
265 | 223 | } |
0 commit comments