@castore/event-storage-adapter-redux
Version:
DRY Castore EventStorageAdapter implementation using a Redux store
74 lines (56 loc) • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useAggregateEvents = void 0;
var _reactRedux = require("react-redux");
var _adapter = require("../adapter");
var _reduxEventStorageAdapterNotFound = require("../errors/reduxEventStorageAdapterNotFound");
var _reduxStateNotFound = require("../errors/reduxStateNotFound");
var useAggregateEvents = function useAggregateEvents(eventStore, aggregateId) {
var _useSelector;
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
minVersion = _ref.minVersion,
maxVersion = _ref.maxVersion,
reverse = _ref.reverse,
limit = _ref.limit;
var events = (_useSelector = (0, _reactRedux.useSelector)(function (state) {
var eventStorageAdapter = eventStore.getEventStorageAdapter();
if (!(eventStorageAdapter instanceof _adapter.ReduxEventStorageAdapter)) {
throw new _reduxEventStorageAdapterNotFound.ReduxEventStorageAdapterNotFoundError({
eventStoreId: eventStore.eventStoreId
});
}
var eventStoreSliceName = eventStorageAdapter.eventStoreSliceName;
var eventStoreState = state[eventStoreSliceName];
if (!eventStoreState) {
throw new _reduxStateNotFound.ReduxStateNotFoundError({
eventStoreSliceName: eventStoreSliceName
});
}
return eventStoreState.eventsByAggregateId[aggregateId];
})) !== null && _useSelector !== void 0 ? _useSelector : [];
if (minVersion !== undefined) {
events = events.filter(function (_ref2) {
var version = _ref2.version;
return version >= minVersion;
});
}
if (maxVersion !== undefined) {
events = events.filter(function (_ref3) {
var version = _ref3.version;
return version <= maxVersion;
});
}
if (reverse === true) {
events = events.reverse();
}
if (limit !== undefined) {
events = events.slice(0, limit);
}
return {
events: events
};
};
exports.useAggregateEvents = useAggregateEvents;
//# sourceMappingURL=useAggregateEvents.js.map