Files
memind/api-response.mjs
T

33 lines
888 B
JavaScript
Raw Normal View History

import crypto from 'node:crypto';
export function createRequestId(existing) {
if (typeof existing === 'string' && existing.trim()) return existing.trim();
return `req_${crypto.randomUUID()}`;
}
export function attachRequestId(req, res, next) {
const requestId = createRequestId(req.get('x-request-id'));
req.requestId = requestId;
res.setHeader('X-Request-Id', requestId);
next();
}
export function sendJson(res, req, status, body) {
const requestId = req?.requestId ?? createRequestId();
return res.status(status).json({ ...body, request_id: requestId });
}
export function sendData(res, req, data, status = 200) {
return sendJson(res, req, status, { data });
}
export function sendError(res, req, status, code, message, details) {
return sendJson(res, req, status, {
error: {
code,
message,
...(details ? { details } : {}),
},
});
}