@dolittle/sdk.projections
Version:
Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.
47 lines • 3.81 kB
JavaScript
;
// Copyright (c) Dolittle. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProjectionsToSDKConverter = void 0;
const State_pb_1 = require("@dolittle/contracts/Runtime/Projections/State_pb");
const Key_1 = require("../../Key");
const CurrentState_1 = require("../CurrentState");
const CurrentStateType_1 = require("../CurrentStateType");
const IConvertProjectionsToSDK_1 = require("./IConvertProjectionsToSDK");
const UnknownCurrentStateType_1 = require("./UnknownCurrentStateType");
/**
* Represents an implementation of {@link IConvertProjectionsToSDK}.
*/
class ProjectionsToSDKConverter extends IConvertProjectionsToSDK_1.IConvertProjectionsToSDK {
/** @inheritdoc */
convert(type, state) {
const stateType = this.getStateType(state.getType());
let convertedState = JSON.parse(state.getState());
const key = Key_1.Key.from(state.getKey());
if (type !== undefined) {
convertedState = Object.assign(new type(), convertedState);
}
return new CurrentState_1.CurrentState(stateType, convertedState, key);
}
/** @inheritdoc */
convertAll(type, states) {
const stateMap = new Map();
for (const state of states) {
const converted = this.convert(type, state);
stateMap.set(converted.key, converted);
}
return stateMap;
}
getStateType(type) {
switch (type) {
case State_pb_1.ProjectionCurrentStateType.CREATED_FROM_INITIAL_STATE:
return CurrentStateType_1.CurrentStateType.CreatedFromInitialState;
case State_pb_1.ProjectionCurrentStateType.PERSISTED:
return CurrentStateType_1.CurrentStateType.Persisted;
default:
throw new UnknownCurrentStateType_1.UnknownCurrentStateType(type);
}
}
}
exports.ProjectionsToSDKConverter = ProjectionsToSDKConverter;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvamVjdGlvbnNUb1NES0NvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8iLCJzb3VyY2VzIjpbIlN0b3JlL0NvbnZlcnRlcnMvUHJvamVjdGlvbnNUb1NES0NvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHFHQUFxRzs7O0FBSXJHLCtFQUFzSDtBQUV0SCxtQ0FBZ0M7QUFDaEMsa0RBQStDO0FBQy9DLDBEQUF1RDtBQUN2RCx5RUFBc0U7QUFDdEUsdUVBQW9FO0FBRXBFOztHQUVHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSxtREFBd0I7SUFFbkUsa0JBQWtCO0lBQ2xCLE9BQU8sQ0FBb0IsSUFBMEMsRUFBRSxLQUE2QjtRQUNoRyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEQsTUFBTSxHQUFHLEdBQUcsU0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUVyQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDcEIsY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztTQUM5RDtRQUVELE9BQU8sSUFBSSwyQkFBWSxDQUFjLFNBQVMsRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixVQUFVLENBQW9CLElBQTBDLEVBQUUsTUFBZ0M7UUFDdEcsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUMzQixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtZQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFjLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6RCxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDMUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRU8sWUFBWSxDQUFDLElBQWdDO1FBQ2pELFFBQVEsSUFBSSxFQUFFO1lBQ1YsS0FBSyxxQ0FBMEIsQ0FBQywwQkFBMEI7Z0JBQ3RELE9BQU8sbUNBQWdCLENBQUMsdUJBQXVCLENBQUM7WUFDcEQsS0FBSyxxQ0FBMEIsQ0FBQyxTQUFTO2dCQUNyQyxPQUFPLG1DQUFnQixDQUFDLFNBQVMsQ0FBQztZQUN0QztnQkFDSSxNQUFNLElBQUksaURBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0M7SUFDTCxDQUFDO0NBQ0o7QUFuQ0QsOERBbUNDIn0=