UNPKG

@grouparoo/core

Version:
126 lines (125 loc) 4.76 kB
"use strict"; 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;