UNPKG

openhim-core

Version:

The OpenHIM core application that provides logging and routing of http requests

102 lines (91 loc) 2.68 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.TransactionModel = exports.TransactionModelAPI = undefined; var _mongoose = require('mongoose'); var _config = require('../config'); // Request Schema definition const RequestDef = { host: String, port: String, path: String, headers: Object, querystring: String, body: String, method: String, timestamp: { type: Date, required: true } // Response Schema definition };const ResponseDef = { status: Number, headers: Object, body: String, timestamp: Date }; const ErrorDetailsDef = { message: String, stack: String // OrchestrationMetadata Schema };const OrchestrationMetadataDef = { name: { type: String, required: true }, group: String, request: { type: RequestDef, required: false }, // this is needed to prevent Validation error, see https://github.com/jembi/openhim-console/issues/356#issuecomment-188708443 response: ResponseDef, error: ErrorDetailsDef // Route Schema };const RouteMetadataDef = { name: { type: String, required: true }, request: RequestDef, response: ResponseDef, orchestrations: [OrchestrationMetadataDef], properties: Object, error: ErrorDetailsDef // Trasnaction schema };const TransactionSchema = new _mongoose.Schema({ clientID: _mongoose.Schema.Types.ObjectId, clientIP: String, parentID: { type: _mongoose.Schema.Types.ObjectId, index: true }, childIDs: [_mongoose.Schema.Types.ObjectId], channelID: { type: _mongoose.Schema.Types.ObjectId }, request: RequestDef, response: ResponseDef, routes: [RouteMetadataDef], orchestrations: [OrchestrationMetadataDef], properties: Object, canRerun: { type: Boolean, default: true }, autoRetry: { type: Boolean, default: false }, // auto rerun this transaction (e.g. if error'd) autoRetryAttempt: Number, wasRerun: { type: Boolean, default: false }, error: ErrorDetailsDef, status: { type: String, required: true, enum: ['Processing', 'Failed', 'Completed', 'Successful', 'Completed with error(s)'] } }); TransactionSchema.index('request.timestamp'); TransactionSchema.index({ channelID: 1, 'request.timestamp': -1 }); TransactionSchema.index({ status: 1, 'request.timestamp': -1 }); TransactionSchema.index({ childIDs: 1, 'request.timestamp': -1 }); // Compile schema into Model const TransactionModelAPI = exports.TransactionModelAPI = _config.connectionAPI.model('Transaction', TransactionSchema); const TransactionModel = exports.TransactionModel = _config.connectionDefault.model('Transaction', TransactionSchema); //# sourceMappingURL=transactions.js.map