1
0
Fork 0
mirror of synced 2024-07-01 04:21:06 +12:00
budibase/packages/server/src/api/routes/workflow.js

73 lines
2 KiB
JavaScript
Raw Normal View History

2020-05-21 04:02:46 +12:00
const Router = require("@koa/router")
const controller = require("../controllers/workflow")
2020-05-28 04:23:01 +12:00
const authorized = require("../../middleware/authorized")
const joiValidator = require("../../middleware/joi-validator")
2020-06-02 08:26:32 +12:00
const { BUILDER } = require("../../utilities/accessLevels")
const Joi = require("joi")
2020-05-21 04:02:46 +12:00
const router = Router()
// prettier-ignore
function generateStepSchema(allowStepTypes) {
return Joi.object({
stepId: Joi.string().required(),
id: Joi.string().required(),
description: Joi.string().required(),
name: Joi.string().required(),
tagline: Joi.string().required(),
icon: Joi.string().required(),
params: Joi.object(),
// TODO: validate args a bit more deeply
args: Joi.object(),
type: Joi.string().required().valid(...allowStepTypes),
}).unknown(true)
}
// prettier-ignore
const workflowValidator = joiValidator.body(Joi.object({
live: Joi.bool(),
id: Joi.string().required(),
rev: Joi.string().required(),
name: Joi.string().required(),
type: Joi.string().valid("workflow").required(),
definition: Joi.object({
steps: Joi.array().required().items(generateStepSchema(["ACTION", "LOGIC"])),
trigger: generateStepSchema(["TRIGGER"]).required(),
}).required().unknown(true),
}).unknown(true))
2020-05-21 04:02:46 +12:00
router
2020-09-15 01:35:03 +12:00
.get(
"/api/workflows/trigger/list",
authorized(BUILDER),
controller.getTriggerList
)
.get(
"/api/workflows/action/list",
authorized(BUILDER),
controller.getActionList
)
.get(
"/api/workflows/logic/list",
authorized(BUILDER),
controller.getLogicList
)
2020-06-19 03:59:31 +12:00
.get("/api/workflows", authorized(BUILDER), controller.fetch)
2020-06-02 08:26:32 +12:00
.get("/api/workflows/:id", authorized(BUILDER), controller.find)
2020-09-15 01:35:03 +12:00
.put(
"/api/workflows",
authorized(BUILDER),
workflowValidator,
controller.update
)
.post(
"/api/workflows",
authorized(BUILDER),
workflowValidator,
controller.create
)
.post("/api/workflows/:id/trigger", controller.trigger)
2020-06-19 03:59:31 +12:00
.delete("/api/workflows/:id/:rev", authorized(BUILDER), controller.destroy)
2020-05-21 04:02:46 +12:00
module.exports = router