@grouparoo/core
Version:
The Grouparoo Core
51 lines (50 loc) • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ObjectFind = void 0;
const sequelize_1 = require("sequelize");
const actionhero_1 = require("actionhero");
const authenticatedAction_1 = require("../classes/actions/authenticatedAction");
class ObjectFind extends authenticatedAction_1.AuthenticatedAction {
constructor() {
super(...arguments);
this.name = "object:find";
this.description = "find an object by id";
this.outputExample = {};
this.permission = { topic: "*", mode: "read" };
this.inputs = {
id: { required: true },
};
}
async runWithinTransaction({ params }) {
const tables = [
"apiKeys",
"apps",
"destinations",
"exports",
"files",
"groups",
"imports",
"models",
"notifications",
"records",
"properties",
"runs",
"schedules",
"settings",
"sources",
"teams",
"teamMembers",
];
const id = params.id.replace(/[^a-zA-Z0-9-_\/.]/g, "");
const query = `SELECT id, "tableName" FROM (` +
tables
.map((t) => `SELECT id, '${t}' AS "tableName" FROM "${t}"`)
.join(" UNION ALL ") +
`) AS UNIONS WHERE id = '${id}'`;
const records = await actionhero_1.api.sequelize.query(query, {
type: sequelize_1.QueryTypes.SELECT,
});
return { id, records };
}
}
exports.ObjectFind = ObjectFind;