mozilla/publish.webmaker.org

View on GitHub
api/modules/projects/routes/read.js

Summary

Maintainability
C
1 day
Test Coverage
"use strict";

const Joi = require(`joi`);

const Errors = require(`../../../classes/errors`);
const Prerequisites = require(`../../../classes/prerequisites`);

const ProjectsModel = require(`../model`);
const projectsController = require(`../controller`);

module.exports = [{
  method: `GET`,
  path: `/projects/{id}`,
  config: {
    pre: [
      Prerequisites.confirmRecordExists(ProjectsModel, {
        mode: `param`,
        requestKey: `id`
      }),
      Prerequisites.validateUser(),
      Prerequisites.validateOwnership(false, ProjectsModel.userForProject, true)
    ],
    handler: projectsController.getOne.bind(projectsController),
    description: `Retrieve a single project object based on \`id\`.`,
    validate: {
      params: {
        id: Joi.number().integer().required()
      },
      failAction: Errors.id
    }
  }
}, {
  method: `GET`,
  path: `/users/{user_id}/projects`,
  config: {
    pre: [
      Prerequisites.confirmRecordExists(ProjectsModel, {
        mode: `param`,
        requestKey: `user_id`
      }),
      Prerequisites.validateUser(),
      Prerequisites.validateOwnership(false, ProjectsModel.userForProject, true)
    ],
    handler: projectsController.getAll.bind(projectsController),
    description: `Retrieve a collection of project objects belonging to a single user object, based on \`user_id\`.`,
    validate: {
      params: {
        user_id: Joi.number().integer().required()
      },
      failAction: Errors.id
    }
  }
}];