@fabric-es/fabric-cqrs
Version:
Hyperledger Fabric middleware for event sourcing and cqrs pattern
67 lines • 2.35 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.queryGetById = void 0;
const values_1 = __importDefault(require("lodash/values"));
const command_1 = require("../store/command");
const query_1 = require("../store/query");
const types_1 = require("../types");
const _1 = require(".");
const queryGetById = (entityName, reducer, isPrivateData, { store, logger, wallet, connectionProfile, channelName }) => async ({ enrollmentId, id }) => {
const { data } = await _1.dispatcher((payload) => query_1.action.queryByEntityId(payload), {
name: 'queryByEntityId',
store,
slice: 'query',
SuccessAction: query_1.action.QUERY_SUCCESS,
ErrorAction: query_1.action.QUERY_ERROR,
logger,
})({ id, entityName });
if (!reducer)
return {
currentState: null,
save: null,
};
const currentState = ((data) => {
if (data) {
const { state } = types_1.computeEntity(values_1.default(data), reducer);
return (state === null || state === void 0 ? void 0 : state.id) ? state : null;
}
else {
return null;
}
})(data);
if (!currentState)
return {
currentState: null,
save: null,
};
const save = !data
? null
: _1.dispatcher(({ tx_id, args: { events } }) => command_1.action.create({
channelName,
connectionProfile,
wallet,
tx_id,
enrollmentId,
args: {
entityName,
id,
version: Object.keys(data).length,
isPrivateData,
events: _1.replaceTag(_1.addTimestamp(events)),
},
}), {
name: 'create',
store,
slice: 'write',
SuccessAction: command_1.action.CREATE_SUCCESS,
ErrorAction: command_1.action.CREATE_ERROR,
logger,
typeGuard: _1.isCommitRecord,
}, (result) => Object.values(result)[0]);
return { currentState, save };
};
exports.queryGetById = queryGetById;
//# sourceMappingURL=queryGetById.js.map