Skip to content

Commit 6758171

Browse files
Copilotcubap
andcommitted
Remove duplicate getAllVersions function and improve error handling
Co-authored-by: cubap <1119165+cubap@users.noreply.github.com>
1 parent 513721c commit 6758171

2 files changed

Lines changed: 7 additions & 44 deletions

File tree

controllers/delete.js

Lines changed: 1 addition & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77
import { newID, isValidID, db } from '../database/index.js'
88
import utils from '../utils.js'
9-
import { createExpressError, getAgentClaim, parseDocumentID } from './utils.js'
9+
import { createExpressError, getAgentClaim, parseDocumentID, getAllVersions, getAllDescendants } from './utils.js'
1010

1111
/**
1212
* Mark an object as deleted in the database.
@@ -218,48 +218,6 @@ async function newTreePrime(obj) {
218218
return true
219219
}
220220

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-
263221
export {
264222
deleteObj
265223
}

controllers/utils.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,12 @@ async function getAllVersions(obj) {
205205
} else if (primeID) {
206206
//The obj passed in knows the ID of root, grab it from Mongo
207207
//Use _id for indexed query performance instead of @id
208-
const primeHexId = parseDocumentID(primeID)
208+
let primeHexId
209+
try {
210+
primeHexId = parseDocumentID(primeID)
211+
} catch (error) {
212+
throw new Error(`Invalid history.prime value '${primeID}': ${error.message}`)
213+
}
209214
rootObj = await db.findOne({"$or":[{"_id": primeHexId}, {"__rerum.slug": primeHexId}]})
210215
if (!rootObj) {
211216
throw new Error(`Root object with id '${primeID}' not found in database`)

0 commit comments

Comments
 (0)