// Copyright (c) Cratis. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. import { ChronicleConnection } from '../connection/index.js'; import { ensureCommandSuccess } from '../connection/callResults.js'; import { ExternalServiceBuilder } from './ExternalServiceBuilder.js'; import { IExternalServiceBuilder } from './IExternalServiceBuilder.js'; import { IExternalServices } from './IExternalServices.js'; /** * Implements {@link IExternalServices}. */ export class ExternalServices implements IExternalServices { /** * Creates a new {@link ExternalServices} instance. * @param _eventStore - Event store name. * @param _connection - Chronicle connection. */ constructor( private readonly _eventStore: string, private readonly _connection: ChronicleConnection ) {} /** @inheritdoc */ async register(name: string, configure: (builder: IExternalServiceBuilder) => void): Promise { const builder = new ExternalServiceBuilder(); configure(builder); const definition = builder.build(name, name); const result = await this._connection.externalServices.addExternalServices({ EventStore: this._eventStore, ExternalServices: [definition] }); ensureCommandSuccess('register external service', result); } }