.
This commit is contained in:
parent
20372c839b
commit
6ff351a07c
@ -16,6 +16,9 @@ const defaultOptions = {
|
|||||||
find: { includeAll: false },
|
find: { includeAll: false },
|
||||||
findOne: { includeAll: false, paginate: { limit: 1, page: 1 } },
|
findOne: { includeAll: false, paginate: { limit: 1, page: 1 } },
|
||||||
count: {},
|
count: {},
|
||||||
|
create: {},
|
||||||
|
update: {},
|
||||||
|
delete: {},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,7 +42,7 @@ const generateControllers = (service, extraControllers = {}, options = {}) => {
|
|||||||
const result = await service.fetchAll(params, buildContext(req, config));
|
const result = await service.fetchAll(params, buildContext(req, config));
|
||||||
return handleResultResponse(result.rows, result.count, params, res);
|
return handleResultResponse(result.rows, result.count, params, res);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
handleErrorResponse(_options.MODULE_NAME, 'find', error, res)
|
return handleErrorResponse(_options.MODULE_NAME, 'find', error, res)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -52,7 +55,7 @@ const generateControllers = (service, extraControllers = {}, options = {}) => {
|
|||||||
return handleResultResponse(result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK);
|
return handleResultResponse(result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
handleErrorResponse(_options.MODULE_NAME, 'findOne', error, res)
|
return handleErrorResponse(_options.MODULE_NAME, 'findOne', error, res)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -64,7 +67,7 @@ const generateControllers = (service, extraControllers = {}, options = {}) => {
|
|||||||
const result = await service.count(params, buildContext(req, config));
|
const result = await service.count(params, buildContext(req, config));
|
||||||
return handleResultResponse(result, null, params, res);
|
return handleResultResponse(result, null, params, res);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
handleErrorResponse(_options.MODULE_NAME, 'count', error, res)
|
return handleErrorResponse(_options.MODULE_NAME, 'count', error, res)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -75,18 +78,33 @@ const generateControllers = (service, extraControllers = {}, options = {}) => {
|
|||||||
const result = await service.create(req.body, buildContext(req, config));
|
const result = await service.create(req.body, buildContext(req, config));
|
||||||
return handleResultResponse(result, null, null, res, httpStatus.CREATED)
|
return handleResultResponse(result, null, null, res, httpStatus.CREATED)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
handleErrorResponse(_options.MODULE_NAME, 'create', error, res)
|
return handleErrorResponse(_options.MODULE_NAME, 'create', error, res)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
update: (config) => {
|
update: (config) => {
|
||||||
return async (req, res, next) => {
|
return async (req, res, next) => {
|
||||||
try {
|
try {
|
||||||
const result = await service.update(req.params, req.body, buildContext(req, config));
|
const params = extractParamsFromRequest(req, res, _options.params.update);
|
||||||
return handleResultResponse(result, null, req.params, res, httpStatus.OK)
|
const response = await service.update(params, req.body, buildContext(req, config));
|
||||||
|
// https://sequelize.org/master/class/lib/model.js~Model.html#static-method-update
|
||||||
|
// Update devuelve un array de un elemento con el número de filas afectadas
|
||||||
|
// por la operación. Por comodidad, devuelvo el valor, no el array.
|
||||||
|
|
||||||
|
let result = response[0];
|
||||||
|
let status = httpStatus.OK;
|
||||||
|
if (result < 1) {
|
||||||
|
status = httpStatus.NOT_FOUND;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Express no puede devolver números porque los confunde con el 'status'.
|
||||||
|
// Convertimos a cadena.
|
||||||
|
result = result.toString();
|
||||||
|
|
||||||
|
return handleResultResponse(result, null, req.params, res, status)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
handleErrorResponse(_options.MODULE_NAME, 'update', error, res)
|
return handleErrorResponse(_options.MODULE_NAME, 'update', error, res)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -97,7 +115,7 @@ const generateControllers = (service, extraControllers = {}, options = {}) => {
|
|||||||
const result = await service.delete(req.params, buildContext(req, config));
|
const result = await service.delete(req.params, buildContext(req, config));
|
||||||
return handleResultResponse(result, null, req.params, res, httpStatus.NO_CONTENT);
|
return handleResultResponse(result, null, req.params, res, httpStatus.NO_CONTENT);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
handleErrorResponse(_options.MODULE_NAME, 'delete', error, res)
|
return handleErrorResponse(_options.MODULE_NAME, 'delete', error, res)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@ -70,18 +70,17 @@ function foundModelAssociation(model, associationName) {
|
|||||||
|
|
||||||
const parseParamsToFindOptions = (params) => {
|
const parseParamsToFindOptions = (params) => {
|
||||||
const result = {};
|
const result = {};
|
||||||
|
|
||||||
// Include All
|
// Include All
|
||||||
result.include = (params.includeAll) ? [{ all: true }] : [];
|
result.include = (params.includeAll) ? [{ all: true }] : [];
|
||||||
|
|
||||||
// Query
|
// Query & params
|
||||||
if (params.query) {
|
|
||||||
result.query = params.query
|
|
||||||
}
|
|
||||||
|
|
||||||
// Params
|
|
||||||
result.where = {};
|
result.where = {};
|
||||||
|
if (params.query) {
|
||||||
|
result.where = params.query;
|
||||||
|
}
|
||||||
if (params.params) {
|
if (params.params) {
|
||||||
result.where = params.params
|
result.where = Object.assign(result.where, params.params);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Paginate
|
// Paginate
|
||||||
@ -166,7 +165,8 @@ const generateService = (model, extraMethods = {}, options = defaultOptions) =>
|
|||||||
// Necesario para el cálculo del count
|
// Necesario para el cálculo del count
|
||||||
// https://github.com/sequelize/sequelize/issues/10557
|
// https://github.com/sequelize/sequelize/issues/10557
|
||||||
findOptions.distinct = true;
|
findOptions.distinct = true;
|
||||||
|
console.log('findOptions');
|
||||||
|
console.log(findOptions);
|
||||||
const result = await model.scope(context.scopes).findAndCountAll(findOptions);
|
const result = await model.scope(context.scopes).findAndCountAll(findOptions);
|
||||||
|
|
||||||
if (extraMethods.afterFetchAll) {
|
if (extraMethods.afterFetchAll) {
|
||||||
@ -196,8 +196,7 @@ const generateService = (model, extraMethods = {}, options = defaultOptions) =>
|
|||||||
return extraMethods.afterCount(result, params, context);
|
return extraMethods.afterCount(result, params, context);
|
||||||
} else {
|
} else {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
create: async (values, context) => {
|
create: async (values, context) => {
|
||||||
@ -206,6 +205,7 @@ const generateService = (model, extraMethods = {}, options = defaultOptions) =>
|
|||||||
|
|
||||||
update: async (params, values, context) => {
|
update: async (params, values, context) => {
|
||||||
const findOptions = parseParamsToFindOptions(params);
|
const findOptions = parseParamsToFindOptions(params);
|
||||||
|
console.log(findOptions);
|
||||||
return await model.scope(context.scopes).update(values, findOptions)
|
return await model.scope(context.scopes).update(values, findOptions)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@ -108,6 +108,10 @@ const middleware = (limit = 10, maxLimit = 50) => {
|
|||||||
res.locals.paginate.hasPreviousPages = req.query.page > 1;
|
res.locals.paginate.hasPreviousPages = req.query.page > 1;
|
||||||
res.locals.paginate.hasNextPages = hasNextPages(req);
|
res.locals.paginate.hasNextPages = hasNextPages(req);
|
||||||
res.locals.paginate.getArrayPages = getArrayPages(req);
|
res.locals.paginate.getArrayPages = getArrayPages(req);
|
||||||
|
|
||||||
|
// Todo lo relativo a paginación va ahora a res.locals.paginate
|
||||||
|
delete req.query.page;
|
||||||
|
delete req.query.limit;
|
||||||
|
|
||||||
next();
|
next();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -14,6 +14,7 @@ const multimediaController = require('./multimedia.controller');
|
|||||||
|
|
||||||
|
|
||||||
routes.get('/multimedias', //cacheSuccesses('24 hours'),
|
routes.get('/multimedias', //cacheSuccesses('24 hours'),
|
||||||
|
isLoggedUser,
|
||||||
PaginateMiddleware.middleware(),
|
PaginateMiddleware.middleware(),
|
||||||
//SortMiddleware.middleware({ default: "init_available_date" }),
|
//SortMiddleware.middleware({ default: "init_available_date" }),
|
||||||
multimediaController.find({
|
multimediaController.find({
|
||||||
@ -22,6 +23,7 @@ routes.get('/multimedias', //cacheSuccesses('24 hours'),
|
|||||||
);
|
);
|
||||||
|
|
||||||
routes.get('/multimedias/:id', //cacheSuccesses('24 hours'),
|
routes.get('/multimedias/:id', //cacheSuccesses('24 hours'),
|
||||||
|
isLoggedUser,
|
||||||
//PaginateMiddleware.middleware(),
|
//PaginateMiddleware.middleware(),
|
||||||
//SortMiddleware.middleware({ default: "init_available_date" }),
|
//SortMiddleware.middleware({ default: "init_available_date" }),
|
||||||
multimediaController.findOne({
|
multimediaController.findOne({
|
||||||
@ -30,16 +32,6 @@ routes.get('/multimedias/:id', //cacheSuccesses('24 hours'),
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
routes.get('/multimedias/:entityId',
|
|
||||||
//PaginateMiddleware.middleware(),
|
|
||||||
//SortMiddleware.middleware({ default: "init_available_date" }),
|
|
||||||
multimediaController.find({})
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//routes.get('/venues', true, SortMiddleware.middleware({ default: "name" }), venueController.find);
|
//routes.get('/venues', true, SortMiddleware.middleware({ default: "name" }), venueController.find);
|
||||||
//routes.get('/venues', isLoggedUser, SortMiddleware.middleware({ default: "name" }), venueController.find);
|
//routes.get('/venues', isLoggedUser, SortMiddleware.middleware({ default: "name" }), venueController.find);
|
||||||
//routes.get('/venues/:id', isLoggedUser, venueController.findOne);
|
//routes.get('/venues/:id', isLoggedUser, venueController.findOne);
|
||||||
|
|||||||
@ -84,7 +84,7 @@ module.exports = function (sequelize, DataTypes) {
|
|||||||
// OJO GENERA UN FOREIGN KEY Con eventos y habrá ID de otras entidades que no exitan en la tabla eventos, porque son post o speakers
|
// OJO GENERA UN FOREIGN KEY Con eventos y habrá ID de otras entidades que no exitan en la tabla eventos, porque son post o speakers
|
||||||
Speaker.Multimedias = Speaker.hasMany(models.Multimedia, {
|
Speaker.Multimedias = Speaker.hasMany(models.Multimedia, {
|
||||||
foreignKey: 'entityId',
|
foreignKey: 'entityId',
|
||||||
as: { singular: 'multimedia', plural: 'multimedias' }
|
as: { singular: 'multimedia', plural: 'multimedias' },
|
||||||
});
|
});
|
||||||
|
|
||||||
Speaker.Comments = Speaker.hasMany(models.Comment, {
|
Speaker.Comments = Speaker.hasMany(models.Comment, {
|
||||||
|
|||||||
@ -97,6 +97,7 @@ routes.get('/speakers/:id/:association',
|
|||||||
// Todos los ponentes
|
// Todos los ponentes
|
||||||
routes.get('/admin/speakers',
|
routes.get('/admin/speakers',
|
||||||
isAdministratorUser,
|
isAdministratorUser,
|
||||||
|
SortMiddleware.middleware({ default: "name" }),
|
||||||
speakerController.find({
|
speakerController.find({
|
||||||
scopes: ['defaultScope', 'includeValues', 'includeMultimedias'],
|
scopes: ['defaultScope', 'includeValues', 'includeMultimedias'],
|
||||||
})
|
})
|
||||||
@ -120,7 +121,7 @@ routes.get('/admin/speakers/:id/comments',
|
|||||||
speakerController.find()
|
speakerController.find()
|
||||||
);
|
);
|
||||||
|
|
||||||
/*routes.get('/speakers/:id/values',
|
routes.get('/admin/speakers/:id/values',
|
||||||
isAdministratorUser,
|
isAdministratorUser,
|
||||||
(req, res, next) => {
|
(req, res, next) => {
|
||||||
req.params.association = 'values';
|
req.params.association = 'values';
|
||||||
@ -129,31 +130,38 @@ routes.get('/admin/speakers/:id/comments',
|
|||||||
speakerController.find()
|
speakerController.find()
|
||||||
);
|
);
|
||||||
|
|
||||||
routes.get('/speakers/:id/questions',
|
routes.get('/admin/speakers/:id/questions',
|
||||||
isAdministratorUser,
|
isAdministratorUser,
|
||||||
(req, res, next) => {
|
(req, res, next) => {
|
||||||
req.params.association = 'questions';
|
req.params.association = 'questions';
|
||||||
next();
|
next();
|
||||||
},
|
},
|
||||||
speakerController.find()
|
speakerController.find()
|
||||||
);*/
|
);
|
||||||
|
|
||||||
|
|
||||||
|
routes.get('/admin/speakers/:id/multimedias',
|
||||||
|
isAdministratorUser,
|
||||||
|
(req, res, next) => {
|
||||||
|
req.params.association = 'multimedias';
|
||||||
|
next();
|
||||||
|
},
|
||||||
|
speakerController.find()
|
||||||
|
);
|
||||||
|
|
||||||
// Nuevo ponente
|
// Nuevo ponente
|
||||||
routes.post('/speakers/:id',
|
routes.post('/admin/speakers/:id',
|
||||||
isAdministratorUser,
|
isAdministratorUser,
|
||||||
speakerController.create()
|
speakerController.create()
|
||||||
);
|
);
|
||||||
|
|
||||||
// Modificar ponente
|
// Modificar ponente
|
||||||
routes.put('/speakers/:id',
|
routes.put('/admin/speakers/:id',
|
||||||
isAdministratorUser,
|
isAdministratorUser,
|
||||||
speakerController.update()
|
speakerController.update()
|
||||||
);
|
);
|
||||||
|
|
||||||
// Borrar ponente
|
// Borrar ponente
|
||||||
routes.delete('/speakers/:id',
|
routes.delete('/admin/speakers/:id',
|
||||||
isAdministratorUser,
|
isAdministratorUser,
|
||||||
speakerController.delete()
|
speakerController.delete()
|
||||||
);
|
);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user