UNPKG

@fabric-es/fabric-cqrs

Version:

Hyperledger Fabric middleware for event sourcing and cqrs pattern

67 lines 2.82 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPrivateMockRepository = void 0; const filter_1 = __importDefault(require("lodash/filter")); const omit_1 = __importDefault(require("lodash/omit")); const values_1 = __importDefault(require("lodash/values")); const utils_1 = require("../store/utils"); const getHistory = (commits) => { const result = []; commits.forEach(({ events }) => events.forEach((item) => result.push(item))); return result; }; const getEntities = ({ mockdb, entityName, reducer }) => values_1.default(values_1.default(filter_1.default(values_1.default(mockdb), { entityName })).reduce((commit, { entityId, events }) => { commit[entityId] = commit[entityId] || []; events.forEach((item) => commit[entityId].push(item)); return commit; }, {})).map((events) => reducer(events)); const getPrivateMockRepository = (mockdb, entityName, reducer) => ({ create: ({ enrollmentId, id }) => ({ save: ({ events }) => { const entity = utils_1.createCommit({ id, entityName, version: 0, events, }); mockdb[entity.commitId] = entity; return new Promise((resolve) => setTimeout(() => resolve({ status: 'OK', data: omit_1.default(entity, ['events']), }), 50)); }, }), getById: ({ enrollmentId, id }) => new Promise((resolve) => { const matched = filter_1.default(values_1.default(mockdb), ({ entityId }) => entityId === id); const matchEvents = getHistory(matched); setTimeout(() => resolve({ currentState: reducer(matchEvents), save: ({ events }) => { const entity = utils_1.createCommit({ id, entityName, version: matched.length, events, }); mockdb[entity.commitId] = entity; return Promise.resolve({ status: 'OK', data: omit_1.default(entity, ['events']), }); }, }), 50); }), getCommitByEntityName: () => new Promise((resolve) => { setTimeout(() => { const data = []; filter_1.default(values_1.default(mockdb), (commit) => commit.entityName === entityName).forEach((commit) => data.push(commit)); resolve({ status: 'OK', data }); }, 50); }), getEntityName: () => entityName, }); exports.getPrivateMockRepository = getPrivateMockRepository; //# sourceMappingURL=mockPrivatedataRepo.js.map