sanket3280/code-execution
0
1/**2 * Standardized API Response Helpers3 * Provides consistent response format across all endpoints4 */5 6/**7 * Success response8 * @param {Object} res - Express response object9 * @param {Object} data - Response data10 * @param {String} message - Success message11 * @param {Number} statusCode - HTTP status code (default: 200)12 */13const successResponse = (res, data = null, message = 'Success', statusCode = 200) => {14 const response = {15 success: true,16 message,17 };18 19 if (data !== null) {20 response.data = data;21 }22 23 return res.status(statusCode).json(response);24};25 26/**27 * Error response28 * @param {Object} res - Express response object29 * @param {String} message - Error message30 * @param {Number} statusCode - HTTP status code (default: 400)31 * @param {Array} errors - Array of error details32 */33const errorResponse = (res, message = 'Error', statusCode = 400, errors = null) => {34 const response = {35 success: false,36 message,37 };38 39 if (errors) {40 response.errors = errors;41 }42 43 return res.status(statusCode).json(response);44};45 46/**47 * Paginated response48 * @param {Object} res - Express response object49 * @param {Array} data - Array of items50 * @param {Number} page - Current page51 * @param {Number} limit - Items per page52 * @param {Number} total - Total number of items53 * @param {String} message - Success message54 */55const paginatedResponse = (res, data, page, limit, total, message = 'Success') => {56 const totalPages = Math.ceil(total / limit);57 58 return res.status(200).json({59 success: true,60 message,61 data,62 pagination: {63 currentPage: page,64 totalPages,65 totalItems: total,66 itemsPerPage: limit,67 hasNextPage: page < totalPages,68 hasPrevPage: page > 1,69 },70 });71};72 73/**74 * Created response (201)75 * @param {Object} res - Express response object76 * @param {Object} data - Created resource data77 * @param {String} message - Success message78 */79const createdResponse = (res, data, message = 'Resource created successfully') => {80 return successResponse(res, data, message, 201);81};82 83/**84 * No content response (204)85 * @param {Object} res - Express response object86 */87const noContentResponse = (res) => {88 return res.status(204).send();89};90 91module.exports = {92 successResponse,93 errorResponse,94 paginatedResponse,95 createdResponse,96 noContentResponse,97};98 