const {{upperCaseFirstChart name}}Controller = require('./controller');
const {
  queryParams,
  idParam,
  checkToken,
  update{{upperCaseFirstChart name}},
  create{{upperCaseFirstChart name}},
} = require('./validator');

const controller = new {{upperCaseFirstChart name}}Controller();

exports.getMany = {
  description: 'Get {{upperCaseFirstChart name}} list',
  notes: 'Return {{upperCaseFirstChart name}} items',
  tags: ['api', 'v1'],
  handler: controller.getMany.bind(controller),
  auth: {
    strategy: 'jwt',
    mode: 'optional',
  },
  validate: {
    headers: checkToken,
    query: queryParams,
  },
};

exports.count = {
  description: 'Count {{upperCaseFirstChart name}} list',
  notes: 'Return a count result of {{upperCaseFirstChart name}} items',
  tags: ['api', 'v1'],
  handler: controller.count.bind(controller),
  auth: {
    strategy: 'jwt',
    mode: 'optional',
  },
  validate: {
    headers: checkToken,
  },
};

exports.getOne = {
  description: 'Get a {{upperCaseFirstChart name}}',
  notes: 'Return a {{upperCaseFirstChart name}} by id',
  tags: ['api', 'v1'],
  handler: controller.getOne.bind(controller),
  auth: {
    strategy: 'jwt',
    mode: 'optional',
  },
  validate: {
    headers: checkToken,
    params: idParam,
  },
};

exports.createOne = {
  description: 'Create a new {{upperCaseFirstChart name}}',
  notes: 'Return created {{upperCaseFirstChart name}}',
  tags: ['api', 'v1'],
  handler: controller.createOne.bind(controller),
  auth: {
    strategy: 'jwt',
    mode: 'optional',
  },
  validate: {
    headers: checkToken,
    payload: create{{upperCaseFirstChart name}},
  },
};
