flowviz
Version:
A framework which provides seamless integration with other phylogenetic tools and frameworks, while allowing workflow scheduling and execution, through the Apache Airflow workflow system.
69 lines (57 loc) • 1.62 kB
JavaScript
const { checkSchema } = require("express-validator");
const { workflowStep } = require("./models/airflow/workflow/workflow");
module.exports = (
app,
toolController,
workflowController,
exceptionMiddleware,
workflowMiddleware,
mongooseErrorMiddleware,
passport
) => {
/* Library Endpoints */
// GETs
app.get("/tool", toolController.getTools);
app.get("/tool/:name", toolController.getTool);
// POSTs
app.post("/tool", toolController.addTool);
/* Workflow Endpoints */
// GETs
app.get(
"/workflow",
passport.authenticate("jwt", { session: false }),
workflowController.getWorkflows
);
app.get(
"/workflow/:name",
passport.authenticate("jwt", { session: false }),
workflowController.getWorkflow
);
app.get(
"/workflow/:name/:dagRunId",
passport.authenticate("jwt", { session: false }),
workflowController.getWorkflowRun
);
app.get(
"/workflow/:name/:dagRunId/tasks/:taskInstanceId",
passport.authenticate("jwt", { session: false }),
workflowController.getWorkflowRunTaskInstance
);
app.get(
"/workflow/:name/:dagRunId/tasks/:taskInstanceId/logs/:logNumber",
passport.authenticate("jwt", { session: false }),
workflowController.getWorkflowRunTaskInstanceLog
);
// POSTs
app.post(
"/workflow",
checkSchema(workflowStep),
passport.authenticate("jwt", { session: false }),
workflowMiddleware,
workflowController.postWorkflow
);
/* Mongoose specific error handler */
app.use(mongooseErrorMiddleware);
/* Main error handler */
app.use(exceptionMiddleware.interceptor);
};