@n2flowjs/nbase
Version:
Neural Vector Database for efficient similarity search
42 lines • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ensureDatabaseReady = exports.loggingMiddleware = exports.addRequestId = void 0;
/**
* Add a request ID to each incoming request
*/
const addRequestId = (req, res, next) => {
const requestId = req.headers['x-request-id'] || `req-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
res.setHeader('X-Request-ID', requestId);
req.headers['x-request-id'] = requestId;
next();
};
exports.addRequestId = addRequestId;
/**
* Log request information
*/
const loggingMiddleware = (req, res, next) => {
const start = Date.now();
const requestId = req.headers['x-request-id'] || 'no-ip';
console.log(`[${requestId}] ${req.method} ${req.url} started`);
res.on('finish', () => {
const duration = Date.now() - start;
console.log(`[${requestId}] ${req.method} ${req.url} ${res.statusCode} - ${duration}ms`);
});
next();
};
exports.loggingMiddleware = loggingMiddleware;
/**
* Middleware to check if database is ready
* Returns 503 Service Unavailable if database is not ready
*/
function ensureDatabaseReady(database) {
return (req, res, next) => {
if (!database.IsReady()) {
res.status(503).json({ success: false, error: 'Database is not ready.' });
return;
}
next();
};
}
exports.ensureDatabaseReady = ensureDatabaseReady;
//# sourceMappingURL=common.js.map