UNPKG

@grouparoo/core

Version:
64 lines (53 loc) 1.93 kB
import { ParamsFrom } from "actionhero"; import { AuthenticatedAction } from "../classes/actions/authenticatedAction"; import { SetupStep } from "../models/SetupStep"; import { AsyncReturnType } from "type-fest"; import { APIData } from "../modules/apiData"; import { ActionPermission } from "../models/Permission"; import { GrouparooModel } from "../models/GrouparooModel"; export class SetupStepsList extends AuthenticatedAction { name = "setupSteps:list"; description = "List the SetupSteps and their status"; permission: ActionPermission = { topic: "setupStep", mode: "read" }; outputExample = {}; isWriteTransaction() { // setupStep.performCheck() can do an update return true; } async runWithinTransaction() { const responseSetupSteps: AsyncReturnType<SetupStep["apiData"]>[] = []; const setupSteps = await SetupStep.findAll({ order: [["position", "asc"]], }); const firstModel = await GrouparooModel.findOne({ order: [["createdAt", "asc"]], }); for (const i in setupSteps) { await setupSteps[i].performCheck(); responseSetupSteps.push(await setupSteps[i].apiData(firstModel?.id)); } return { setupSteps: responseSetupSteps }; } } export class SetupStepEdit extends AuthenticatedAction { name = "setupStep:edit"; description = "List the SetupSteps and their status"; permission: ActionPermission = { topic: "setupStep", mode: "write" }; outputExample = {}; inputs = { id: { required: true }, skipped: { required: false, formatter: APIData.ensureBoolean }, } as const; async runWithinTransaction({ params, }: { params: ParamsFrom<SetupStepEdit>; }) { const setupStep = await SetupStep.findById(params.id); if (params.skipped !== null) { await setupStep.update({ skipped: params.skipped }); } await setupStep.performCheck(); return { setupStep: await setupStep.apiData() }; } }