response = { "OK": false }; try { requestBody = toString(getHttpRequestData().content); requestData = {}; if (len(requestBody)) { requestData = deserializeJSON(requestBody); } confirmDelete = requestData.confirm ?: ""; if (confirmDelete != "NUKE_EVERYTHING") { throw("Must pass confirm: 'NUKE_EVERYTHING' to proceed"); } // Get counts before deletion qItemCount = queryExecute("SELECT COUNT(*) as cnt FROM Items", {}, { datasource: "payfrit" }); qCatCount = queryExecute("SELECT COUNT(*) as cnt FROM Categories", {}, { datasource: "payfrit" }); qLinkCount = queryExecute("SELECT COUNT(*) as cnt FROM ItemTemplateLinks", {}, { datasource: "payfrit" }); // Delete in correct order (foreign key constraints) queryExecute("DELETE FROM ItemTemplateLinks", {}, { datasource: "payfrit" }); queryExecute("DELETE FROM Items", {}, { datasource: "payfrit" }); queryExecute("DELETE FROM Categories", {}, { datasource: "payfrit" }); response = { "OK": true, "deleted": { "items": qItemCount.cnt, "categories": qCatCount.cnt, "templateLinks": qLinkCount.cnt } }; } catch (any e) { response = { "OK": false, "ERROR": e.message, "DETAIL": e.detail ?: "" }; } writeOutput(serializeJSON(response));