app2-api/modules/speakers/speaker.routes.js

173 lines
4.3 KiB
JavaScript
Raw Normal View History

2022-02-23 18:27:58 +00:00
const routes = require("express").Router();
2019-07-09 18:34:39 +00:00
2022-02-23 18:27:58 +00:00
const { isAdministratorUser, isLoggedUser, isOptionalUser } = require("../../middlewares/accessValidator");
const { cacheSuccesses } = require("../../middlewares/cache");
2019-07-09 18:34:39 +00:00
2022-02-23 18:27:58 +00:00
const PaginateMiddleware = require("../../middlewares/paginate");
const FieldMiddleware = require("../../middlewares/fields");
const SortMiddleware = require("../../middlewares/sort");
2019-07-09 18:34:39 +00:00
//const entityValidation = require('./entity.validations');
2022-02-23 18:27:58 +00:00
const speakerController = require("./speaker.controller");
2019-07-09 18:34:39 +00:00
2022-02-23 18:27:58 +00:00
const generalInvalidFields = ["userId", "createdAt", "state"];
2019-07-23 17:34:28 +00:00
2019-07-09 18:34:39 +00:00
// Todos los ponentes
2022-02-23 18:27:58 +00:00
routes.get(
"/speakers",
isOptionalUser,
cacheSuccesses("1 minute"),
FieldMiddleware.middleware({
invalidFields: generalInvalidFields,
}),
PaginateMiddleware.middleware(),
SortMiddleware.middleware({ default: "name" }),
speakerController.find({
scopes: ["defaultScope", "onlyPublished", "includeValues", "includeMultimedias"],
})
2019-07-09 18:34:39 +00:00
);
// Ponentes destacados
2022-02-23 18:27:58 +00:00
routes.get(
"/speakers/featured",
isOptionalUser,
cacheSuccesses("1 minute"),
FieldMiddleware.middleware({
invalidFields: generalInvalidFields,
}),
PaginateMiddleware.middleware(),
//SortMiddleware.middleware({ default: "name" }),
speakerController.find({
scopes: ["defaultScope", "onlyPublished", "includeValues", "featured", "includeMultimedias"],
})
2019-07-09 18:34:39 +00:00
);
// Ponentes más recientes
2022-02-23 18:27:58 +00:00
routes.get(
"/speakers/last",
isOptionalUser,
cacheSuccesses("1 minute"),
FieldMiddleware.middleware({
invalidFields: ["userId"],
}),
PaginateMiddleware.middleware(),
SortMiddleware.middleware({ default: "-createdAt" }),
speakerController.find({
scopes: ["defaultScope", "onlyPublished", "last", "includeMultimedias"],
})
2019-07-09 18:34:39 +00:00
);
// Un ponente
2022-02-23 18:27:58 +00:00
routes.get(
"/speakers/:id",
isOptionalUser,
cacheSuccesses("24 hours"),
FieldMiddleware.middleware({
invalidFields: generalInvalidFields,
}),
speakerController.findOne({
scopes: ["defaultScope", "onlyPublished", "includeValues", "includeMultimedias", "includeComments"],
})
2019-07-09 18:34:39 +00:00
);
2019-07-09 20:20:59 +00:00
// Dar ponentes similares a uno dado
2022-02-23 18:27:58 +00:00
routes.get(
"/speakers/:id/similar",
isOptionalUser,
cacheSuccesses("24 hours"),
/*FieldMiddleware.middleware({
2019-07-09 18:34:39 +00:00
invalidFields: ['createdAt']
}),*/
2022-02-23 18:27:58 +00:00
PaginateMiddleware.middleware(),
SortMiddleware.middleware({ default: "name" }),
speakerController.findSimilar()
2019-07-09 18:34:39 +00:00
);
2019-07-09 20:20:59 +00:00
// Listar las preguntas hechas a un ponente
2022-02-23 18:27:58 +00:00
routes.get(
"/speakers/:id/:association",
isLoggedUser,
/*FieldMiddleware.middleware({
2019-07-09 18:34:39 +00:00
invalidFields: ['createdAt']
}),*/
2022-02-23 18:27:58 +00:00
PaginateMiddleware.middleware(),
SortMiddleware.middleware({ default: "-createdAt" }),
speakerController.find()
2019-07-09 18:34:39 +00:00
);
2019-08-09 11:00:48 +00:00
/********************************************************************************************************
2022-02-23 18:27:58 +00:00
* ADMINISTRACIÓN
*********************************************************************************************************
2019-08-05 15:34:59 +00:00
*/
// Todos los ponentes
2022-02-23 18:27:58 +00:00
routes.get(
"/admin/speakers",
isAdministratorUser,
SortMiddleware.middleware({ default: "name" }),
speakerController.find({
scopes: ["defaultScope", "includeValues", "includeMultimedias"],
})
);
2019-08-05 15:34:59 +00:00
// Un ponente
2022-02-23 18:27:58 +00:00
routes.get(
"/admin/speakers/:id",
isAdministratorUser,
speakerController.findOne({
scopes: ["defaultScope", "includeValues", "includeMultimedias"],
})
2019-08-05 15:34:59 +00:00
);
// Comentarios de un ponente
2022-02-23 18:27:58 +00:00
routes.get(
"/admin/speakers/:id/comments",
isAdministratorUser,
(req, res, next) => {
req.params.association = "comments";
next();
},
speakerController.find()
2019-08-05 15:34:59 +00:00
);
2022-02-23 18:27:58 +00:00
routes.get(
"/admin/speakers/:id/values",
isAdministratorUser,
(req, res, next) => {
req.params.association = "values";
next();
},
speakerController.find()
2019-08-05 15:34:59 +00:00
);
2022-02-23 18:27:58 +00:00
routes.get(
"/admin/speakers/:id/questions",
isAdministratorUser,
(req, res, next) => {
req.params.association = "questions";
next();
},
speakerController.find()
2019-08-05 17:44:16 +00:00
);
2019-08-05 15:34:59 +00:00
2022-02-23 18:27:58 +00:00
routes.get(
"/admin/speakers/:id/multimedias",
isAdministratorUser,
(req, res, next) => {
req.params.association = "multimedias";
next();
},
speakerController.find()
2019-08-05 17:44:16 +00:00
);
2019-08-05 15:34:59 +00:00
// Nuevo ponente
2022-02-23 18:27:58 +00:00
routes.post("/admin/speakers/", isAdministratorUser, speakerController.create());
2019-08-05 15:34:59 +00:00
2022-02-23 18:27:58 +00:00
// Modificar ponente
routes.put("/admin/speakers/:id", isAdministratorUser, speakerController.update());
2019-08-05 15:34:59 +00:00
// Borrar ponente
2022-02-23 18:27:58 +00:00
routes.delete("/admin/speakers/:id", isAdministratorUser, speakerController.delete());
2019-07-09 20:20:59 +00:00
2022-02-23 18:27:58 +00:00
module.exports = routes;