UNPKG

@fabric-es/fabric-cqrs

Version:

Hyperledger Fabric middleware for event sourcing and cqrs pattern

53 lines 2.71 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = __importDefault(require("util")); const fabric_common_1 = require("fabric-common"); const redux_observable_1 = require("redux-observable"); const rxjs_1 = require("rxjs"); const operators_1 = require("rxjs/operators"); const services_1 = require("../../../services"); const types_1 = require("../../../types"); const utils_1 = require("../../../utils"); const utils_2 = require("../../utils"); const action_1 = require("../action"); exports.default = (action$, _, context) => { const logger = fabric_common_1.Utils.getLogger('[fabric-cqrs] track.js'); return action$.pipe(redux_observable_1.ofType(action_1.action.TRACK), operators_1.map(({ payload }) => payload), operators_1.mergeMap(payload => rxjs_1.from(services_1.getNetwork({ channelName: payload.channelName, connectionProfile: payload.connectionProfile, wallet: payload.wallet, enrollmentId: payload.enrollmentId, discovery: true, asLocalhost: !(process.env.NODE_ENV === 'production') }).then(({ network, gateway }) => { logger.debug('getNetwork succeed'); return Object.assign({}, payload, { network, gateway }); }).catch(error => { logger.error(util_1.default.format('getNework error: %s', error.message)); return Object.assign({}, payload, { error }); }))), operators_1.mergeMap((getNetwork) => { if (getNetwork.error) return rxjs_1.of(action_1.action.createError({ tx_id: getNetwork.tx_id, error: getNetwork.error })); else { const currentTime = Math.round(new Date().getTime()); const { tx_id, args, network, gateway } = getNetwork; const params = [args.parentName, args.id, args.version.toString()]; const events = utils_1.replaceTag(utils_1.addCreatedAt([{ type: types_1.TRACK_EVENT, payload: { id: args.id, entityName: args.entityName } }])); params.push(JSON.stringify(events)); return services_1.submit$('eventstore:createCommit', params, { network: network || context.network }).pipe(operators_1.tap(commits => { logger.debug(util_1.default.format('dispatch submit response: %j', commits)); gateway.disconnect(); }), utils_2.dispatchResult(tx_id, action_1.action.createSuccess, action_1.action.createError)); } })); }; //# sourceMappingURL=track.js.map