#serializeJSON({"OK": false, "ERROR": "admin_only"})# /** * Delete orphan Items at ParentID=0 * Orphan = ParentID=0, no children, not in lt_ItemID_TemplateItemID */ response = { "OK": false, "deleted": 0, "orphans": [] }; try { // Find orphans qOrphans = queryExecute(" SELECT i.ID, i.Name, i.BusinessID FROM Items i WHERE i.ParentItemID = 0 AND NOT EXISTS ( SELECT 1 FROM Items child WHERE child.ParentItemID = i.ID ) AND NOT EXISTS ( SELECT 1 FROM lt_ItemID_TemplateItemID tl WHERE tl.TemplateItemID = i.ID ) ORDER BY i.BusinessID, i.Name ", {}, { datasource: "payfrit" }); orphanIDs = []; for (orphan in qOrphans) { arrayAppend(response.orphans, { "ItemID": orphan.ItemID, "Name": orphan.Name, "BusinessID": orphan.BusinessID }); arrayAppend(orphanIDs, orphan.ItemID); } // Delete them by ID list if (arrayLen(orphanIDs) > 0) { queryExecute(" DELETE FROM Items WHERE ID IN (#arrayToList(orphanIDs)#) ", {}, { datasource: "payfrit" }); } response["deleted"] = arrayLen(orphanIDs); response["OK"] = true; } catch (any e) { response["ERROR"] = e.message; response["DETAIL"] = e.detail; } writeOutput(serializeJSON(response));