@grouparoo/core
Version:
The Grouparoo Core
126 lines (125 loc) • 4.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ModelDestroy = exports.ModelEdit = exports.ModelView = exports.ModelCreate = exports.ModelOptions = exports.ModelsList = void 0;
const GrouparooModel_1 = require("../models/GrouparooModel");
const authenticatedAction_1 = require("../classes/actions/authenticatedAction");
const apiData_1 = require("../modules/apiData");
const configWriter_1 = require("../modules/configWriter");
class ModelsList extends authenticatedAction_1.AuthenticatedAction {
constructor() {
super(...arguments);
this.name = "models:list";
this.description = "list the models";
this.outputExample = {};
this.permission = { topic: "model", mode: "read" };
this.inputs = {
limit: { required: true, default: 100, formatter: apiData_1.APIData.ensureNumber },
offset: { required: true, default: 0, formatter: apiData_1.APIData.ensureNumber },
order: {
required: false,
formatter: apiData_1.APIData.ensureArray,
default: [["createdAt", "desc"]],
},
};
}
async runWithinTransaction({ params }) {
const total = await GrouparooModel_1.GrouparooModel.scope(null).count();
const models = await GrouparooModel_1.GrouparooModel.scope(null).findAll({
limit: params.limit,
offset: params.offset,
order: params.order,
});
return { total, models: await Promise.all(models.map((m) => m.apiData())) };
}
}
exports.ModelsList = ModelsList;
class ModelOptions extends authenticatedAction_1.AuthenticatedAction {
constructor() {
super(...arguments);
this.name = "model:options";
this.description = "get the options for a new model";
this.outputExample = {};
this.permission = { topic: "model", mode: "read" };
}
async runWithinTransaction() {
return { types: GrouparooModel_1.ModelTypes };
}
}
exports.ModelOptions = ModelOptions;
class ModelCreate extends authenticatedAction_1.AuthenticatedAction {
constructor() {
super(...arguments);
this.name = "model:create";
this.description = "create a model";
this.outputExample = {};
this.permission = { topic: "model", mode: "write" };
this.inputs = {
id: { required: false },
name: { required: true },
type: { required: true },
};
}
async runWithinTransaction({ params }) {
const model = await GrouparooModel_1.GrouparooModel.create(params);
await configWriter_1.ConfigWriter.run();
return { model: await model.apiData() };
}
}
exports.ModelCreate = ModelCreate;
class ModelView extends authenticatedAction_1.AuthenticatedAction {
constructor() {
super(...arguments);
this.name = "model:view";
this.description = "view a model";
this.outputExample = {};
this.permission = { topic: "model", mode: "read" };
this.inputs = {
id: { required: true },
};
}
async runWithinTransaction({ params }) {
const model = await GrouparooModel_1.GrouparooModel.findById(params.id);
return { model: await model.apiData() };
}
}
exports.ModelView = ModelView;
class ModelEdit extends authenticatedAction_1.AuthenticatedAction {
constructor() {
super(...arguments);
this.name = "model:edit";
this.description = "edit a model";
this.outputExample = {};
this.permission = { topic: "model", mode: "write" };
this.inputs = {
id: { required: true },
name: { required: false },
type: { required: false },
};
}
async runWithinTransaction({ params }) {
const model = await GrouparooModel_1.GrouparooModel.findById(params.id);
await model.update(params);
await configWriter_1.ConfigWriter.run();
return { model: await model.apiData() };
}
}
exports.ModelEdit = ModelEdit;
class ModelDestroy extends authenticatedAction_1.AuthenticatedAction {
constructor() {
super(...arguments);
this.name = "model:destroy";
this.description = "destroy a model";
this.outputExample = {};
this.permission = { topic: "model", mode: "write" };
this.inputs = {
id: { required: true },
};
}
async runWithinTransaction({ params }) {
const model = await GrouparooModel_1.GrouparooModel.findById(params.id);
await model.destroy();
await configWriter_1.ConfigWriter.run();
return { success: true };
}
}
exports.ModelDestroy = ModelDestroy;