express-sequelize-autocrud
Version:
Express Sequelize AutoCRUD: Simplify API development with automatic CRUD routes for Sequelize models in Express.js.
29 lines • 1.4 kB
JavaScript
/* eslint-disable @typescript-eslint/no-unused-vars */
import { Router } from 'express';
import { buildOptionsFromConfig, runCustomMiddleware, } from '../middleware/config.js';
import { checkBodyFields } from '../middleware/body.js';
import { getSequelizeErrorMessage } from '../utils.js';
import { Sequelize } from 'sequelize';
import { DEFAULT_UPDATABLE_FIELDS } from '../config.js';
const updateRoute = (sequelize, model, router, config, logger) => router.put('/:resourceId', runCustomMiddleware(config.middleware), checkBodyFields(config.updatableFields || DEFAULT_UPDATABLE_FIELDS), async (req, res) => {
const { middleware, updatableFields, byField, ...sequelizeOptions } = config;
try {
const options = await buildOptionsFromConfig(sequelizeOptions, req, res);
const whereField = byField || 'id';
await sequelize.transaction(async (t) => {
const data = await model.update(req.body, {
...options,
where: { [whereField]: req.params.resourceId },
returning: true,
transaction: t,
});
res.status(201).json({ affectedCount: data[0], affectedRows: data[1] });
});
}
catch (error) {
logger.error(error);
res.status(500).json(getSequelizeErrorMessage(error));
}
});
export default updateRoute;
//# sourceMappingURL=update.js.map