@dolittle/sdk.resources
Version:
Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.
37 lines • 3.25 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.ResourcesFetcher = void 0;
const sdk_artifacts_1 = require("@dolittle/sdk.artifacts");
const sdk_execution_1 = require("@dolittle/sdk.execution");
const sdk_resilience_1 = require("@dolittle/sdk.resilience");
const MongoDBResourceCreator_1 = require("../MongoDB/Internal/MongoDBResourceCreator");
const Resources_1 = require("../Resources");
const ResourcesBuilder_1 = require("../ResourcesBuilder");
const IFetchResources_1 = require("./IFetchResources");
/**
* Represents an implementation of {@link IFetchResources}.
*/
class ResourcesFetcher extends IFetchResources_1.IFetchResources {
/**
* Initialises a new instance of the {@link ResourcesFetcher} class.
* @param {ResourcesClient} client - The resources client to make requests to the Runtime with.
* @param {ExecutionContext} executionContext - The base execution context for the client.
* @param {Logger} logger - The logger to use for logging.
*/
constructor(client, executionContext, logger) {
super();
this._mongoDB = new MongoDBResourceCreator_1.MongoDBResourceCreator(client, executionContext, logger);
}
/** @inheritdoc */
async fetchResourcesFor(tenants, cancellation = sdk_resilience_1.Cancellation.default) {
const resources = new sdk_artifacts_1.ComplexValueMap(sdk_execution_1.TenantId, _ => [_.value.toString()], 1);
await Promise.all(tenants.map(async (tenant) => {
resources.set(tenant.id, new Resources_1.Resources(await this._mongoDB.createFor(tenant.id, cancellation)));
}));
return new ResourcesBuilder_1.ResourcesBuilder(resources);
}
}
exports.ResourcesFetcher = ResourcesFetcher;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VzRmV0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8iLCJzb3VyY2VzIjpbIkludGVybmFsL1Jlc291cmNlc0ZldGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxxR0FBcUc7OztBQUlyRywyREFBMEQ7QUFDMUQsMkRBQXFFO0FBQ3JFLDZEQUF3RDtBQUt4RCx1RkFBb0Y7QUFHcEYsNENBQXlDO0FBQ3pDLDBEQUF1RDtBQUN2RCx1REFBb0Q7QUFFcEQ7O0dBRUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLGlDQUFlO0lBR2pEOzs7OztPQUtHO0lBQ0gsWUFDSSxNQUF1QixFQUN2QixnQkFBa0MsRUFDbEMsTUFBYztRQUVkLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLCtDQUFzQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUEwQixFQUFFLGVBQTZCLDZCQUFZLENBQUMsT0FBTztRQUNqRyxNQUFNLFNBQVMsR0FBOEIsSUFBSSwrQkFBZSxDQUFDLHdCQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV6RyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUMsTUFBTSxFQUFDLEVBQUU7WUFDekMsU0FBUyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsRUFBRSxFQUNULElBQUkscUJBQVMsQ0FDVCxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQ3pELENBQ0osQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFSixPQUFPLElBQUksbUNBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUNKO0FBbENELDRDQWtDQyJ9